From 4d88fd2fee80b2839daa4ea5620dd0c3ec3fce53 Mon Sep 17 00:00:00 2001 From: sds100 Date: Fri, 16 May 2025 15:54:02 +0200 Subject: [PATCH 01/71] #1711 convert build.gradle files to kotlin --- app/build.gradle | 281 -------------------------------------- app/build.gradle.kts | 257 ++++++++++++++++++++++++++++++++++ build.gradle | 41 ------ build.gradle.kts | 13 ++ gradle/libs.versions.toml | 210 ++++++++++++++++++++++++++++ settings.gradle | 2 - settings.gradle.kts | 28 ++++ 7 files changed, 508 insertions(+), 324 deletions(-) delete mode 100644 app/build.gradle create mode 100644 app/build.gradle.kts delete mode 100644 build.gradle create mode 100644 build.gradle.kts create mode 100644 gradle/libs.versions.toml delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts diff --git a/app/build.gradle b/app/build.gradle deleted file mode 100644 index 6e1166be24..0000000000 --- a/app/build.gradle +++ /dev/null @@ -1,281 +0,0 @@ -apply plugin: "com.android.application" -apply plugin: "kotlin-android" -apply plugin: "kotlin-kapt" -apply plugin: "com.google.devtools.ksp" -apply plugin: "androidx.navigation.safeargs.kotlin" -apply plugin: "kotlinx-serialization" -apply plugin: "org.jetbrains.kotlin.plugin.parcelize" -apply plugin: "org.jlleitschuh.gradle.ktlint" -apply plugin: "org.jetbrains.kotlin.plugin.compose" -apply plugin: "androidx.room" - -android { - - namespace "io.github.sds100.keymapper" - compileSdk 35 - buildToolsVersion = "35.0.0" - - def versionProperties = new Properties() - file("version.properties").withInputStream { versionProperties.load(it) } - - defaultConfig { - applicationId "io.github.sds100.keymapper" - minSdkVersion 21 - targetSdkVersion 35 - versionCode versionProperties.getProperty("VERSION_CODE").toInteger() - versionName versionProperties.getProperty("VERSION_NAME") - multiDexEnabled true - - vectorDrawables.useSupportLibrary = true - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - - javaCompileOptions { - annotationProcessorOptions { - arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] - } - } - } - - signingConfigs { - release { - storeFile file("keystore.jks") - storePassword System.getenv("KEYSTORE_PASSWORD") - keyAlias "keymapper" - keyPassword System.getenv("KEY_PASSWORD") - } - } - - buildTypes { - - release { - minifyEnabled true - proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" - signingConfig signingConfigs.release - } - - debug { - applicationIdSuffix ".debug" - versionNameSuffix "-debug" - } - - debug_release { - // Extend from debug build type so compose Live Edit and rapid building works - initWith debug - - // Do not alter the package name so can test revenuecat and billing while developing. - applicationIdSuffix "" - - /* - This is required because the splitties library does not have a debug_release build type. - */ - matchingFallbacks = ["debug"] - } - - ci { - minifyEnabled true - shrinkResources true - - /* - This is required because the splitties library does not have a ci build type. - */ - matchingFallbacks = ["debug"] - - applicationIdSuffix ".ci" - versionNameSuffix "-ci." + versionProperties.getProperty("VERSION_NUM") - - proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" - - signingConfig signingConfigs.debug - } - } - - flavorDimensions = ["pro"] - productFlavors { - free { - dimension "pro" - } - pro { - dimension "pro" - - File file = rootProject.file("local.properties") - String keyName = "REVENUECAT_API_KEY" - - if (file.exists()) { - def localProperties = new Properties() - localProperties.load(new FileInputStream(file)) - if (localProperties.containsKey(keyName)) { - buildConfigField("String", keyName, localProperties[keyName]) - } - } - } - } - - buildFeatures { - dataBinding true - viewBinding true - aidl true - buildConfig true - compose true - } - - compileOptions { - // Required for desugaring new Java time API on lower than API 26 - coreLibraryDesugaringEnabled = true - - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 - } - - kotlinOptions { - jvmTarget = "17" - } - - kapt { - correctErrorTypes = true - } - - composeOptions { - kotlinCompilerExtensionVersion "1.5.10" - } - - sourceSets { - androidTest { - assets.srcDirs += files("$projectDir/schemas".toString()) - resources.srcDirs += ["src/test/resources"] - } - - test { - java.srcDirs += ["src/pro/test/java"] - } - } - - applicationVariants.configureEach { variant -> - variant.outputs.configureEach { - outputFileName = "keymapper-${variant.versionName}.apk" - } - } - - room { - schemaDirectory "$projectDir/schemas" - } -} - -dependencies { - implementation fileTree(include: ["*.jar"], dir: "libs") - - compileOnly project(":systemstubs") - - def room_version = "2.7.1" - def coroutinesVersion = "1.9.0" - def nav_version = '2.9.0' - def epoxy_version = "4.6.2" - def splitties_version = "3.0.0" - def multidex_version = "2.0.1" - def shizuku_version = "13.1.5" - - // kotlin stuff - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0" - - // random stuff - implementation "com.google.android.material:material:1.13.0-alpha13" - implementation "com.github.salomonbrys.kotson:kotson:2.5.0" - implementation "com.airbnb.android:epoxy:$epoxy_version" - implementation "com.airbnb.android:epoxy-databinding:$epoxy_version" - kapt "com.airbnb.android:epoxy-processor:$epoxy_version" - implementation "com.jakewharton.timber:timber:5.0.1" - implementation "net.lingala.zip4j:zip4j:2.8.0" - implementation "com.anggrayudi:storage:0.8.1" - implementation "com.github.MFlisar:DragSelectRecyclerView:0.3" - implementation "com.google.android.flexbox:flexbox:3.0.0" - implementation "dev.rikka.shizuku:api:$shizuku_version" - implementation "dev.rikka.shizuku:provider:$shizuku_version" - implementation "org.lsposed.hiddenapibypass:hiddenapibypass:4.3" - proImplementation 'com.revenuecat.purchases:purchases:8.17.1' - proImplementation "com.airbnb.android:lottie-compose:6.6.3" - implementation("com.squareup.okhttp3:okhttp:4.12.0") - coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5") - implementation 'com.canopas.intro-showcase-view:introshowcaseview:2.0.2' - - // splitties - implementation "com.louiscad.splitties:splitties-bitflags:$splitties_version" - implementation "com.louiscad.splitties:splitties-alertdialog-appcompat-coroutines:$splitties_version" - implementation("com.louiscad.splitties:splitties-alertdialog-material:$splitties_version") - implementation "com.louiscad.splitties:splitties-snackbar:$splitties_version" - implementation "com.louiscad.splitties:splitties-toast:$splitties_version" - implementation "com.louiscad.splitties:splitties-mainthread:$splitties_version" - - // androidx - implementation "androidx.legacy:legacy-support-core-ui:1.0.0" - implementation "androidx.core:core-ktx:1.16.0" - - implementation "androidx.activity:activity-ktx:1.10.1" - implementation "androidx.fragment:fragment-ktx:1.8.6" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0" - implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.9.0" - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.9.0" - implementation "androidx.room:room-ktx:$room_version" - implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" - implementation "androidx.navigation:navigation-ui-ktx:$nav_version" - implementation "androidx.multidex:multidex:$multidex_version" - implementation "androidx.appcompat:appcompat:1.7.0" - implementation "androidx.recyclerview:recyclerview:1.4.0" - implementation "androidx.preference:preference-ktx:1.2.1" - implementation "androidx.constraintlayout:constraintlayout:2.2.1" - implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" - implementation "androidx.room:room-runtime:$room_version" - implementation "androidx.viewpager2:viewpager2:1.1.0" - implementation "androidx.datastore:datastore-preferences:1.2.0-alpha02" - implementation "androidx.core:core-splashscreen:1.0.1" - implementation "androidx.activity:activity-compose:1.10.1" - implementation "androidx.navigation:navigation-compose:2.9.0" - implementation "androidx.navigation:navigation-fragment-compose:2.9.0" - ksp "androidx.room:room-compiler:$room_version" - - // Compose - Dependency composeBom = platform('androidx.compose:compose-bom-beta:2025.05.00') - implementation composeBom - implementation 'androidx.compose.foundation:foundation' - implementation "androidx.compose.ui:ui-android" - implementation "androidx.compose.material3:material3-android" - implementation "androidx.compose.ui:ui-tooling-preview-android" - implementation "androidx.compose.material:material-icons-extended-android" - implementation 'androidx.compose.material3.adaptive:adaptive-android' - implementation "androidx.compose.material3.adaptive:adaptive-navigation" - implementation "com.google.accompanist:accompanist-drawablepainter:0.35.0-alpha" - implementation "androidx.activity:activity-compose:1.10.1" - debugImplementation "androidx.compose.ui:ui-tooling" - debug_releaseImplementation "androidx.compose.ui:ui-tooling" - -// debugImplementation "com.squareup.leakcanary:leakcanary-android:2.6" - - def junitVersion = "4.13.2" - def androidXTestExtKotlinRunnerVersion = "1.2.1" - def espressoVersion = "3.6.1" - def androidXTestCoreVersion = "1.6.1" - - // Dependencies for local unit tests - testImplementation "junit:junit:$junitVersion" - testImplementation "org.hamcrest:hamcrest-all:1.3" - testImplementation "androidx.test.ext:junit-ktx:$androidXTestExtKotlinRunnerVersion" - testImplementation "androidx.test:core-ktx:1.6.1" - testImplementation "org.robolectric:robolectric:4.14.1" - testImplementation "androidx.arch.core:core-testing:2.2.0" - testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion" - testImplementation "pl.pragmatists:JUnitParams:1.1.1" - testImplementation "org.mockito.kotlin:mockito-kotlin:4.0.0" - testImplementation "org.mockito:mockito-core:5.15.2" - testImplementation "org.mockito:mockito-inline:5.2.0" - - androidTestImplementation "androidx.test.ext:junit:$androidXTestExtKotlinRunnerVersion" - androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion" - androidTestImplementation "androidx.arch.core:core-testing:2.2.0" - androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion" - androidTestImplementation "junit:junit:$junitVersion" - androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" - androidTestImplementation "android.arch.persistence.room:testing:1.1.1" - androidTestImplementation "org.mockito:mockito-android:4.6.1" - debugImplementation "androidx.fragment:fragment-testing:1.8.6" - implementation "androidx.test:core:$androidXTestCoreVersion" -} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000000..7a1ae6cce3 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,257 @@ +@file:Suppress("UnstableApiUsage") + +import java.util.Properties +import java.io.FileInputStream + +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.compose) + alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.kotlin.parcelize) + alias(libs.plugins.androidx.navigation.safeargs.kotlin) + alias(libs.plugins.androidx.room) + alias(libs.plugins.google.devtools.ksp) + alias(libs.plugins.jlleitschuh.gradle.ktlint) +} + +android { + namespace = "io.github.sds100.keymapper" + compileSdk = libs.versions.compile.sdk.get().toInt() + buildToolsVersion = libs.versions.build.tools.get() + + val versionProperties = Properties().apply { + rootProject.file("app/version.properties").inputStream().use { load(it) } + } + + defaultConfig { + applicationId = "io.github.sds100.keymapper" + minSdk = libs.versions.min.sdk.get().toInt() + targetSdk = libs.versions.target.sdk.get().toInt() + versionCode = versionProperties.getProperty("VERSION_CODE").toInt() + versionName = versionProperties.getProperty("VERSION_NAME") + multiDexEnabled = true + + vectorDrawables.useSupportLibrary = true + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + + javaCompileOptions { + annotationProcessorOptions { + arguments["room.schemaLocation"] = "${projectDir}/schemas" + } + } + } + + signingConfigs { + create("release") { + storeFile = file("keystore.jks") + storePassword = System.getenv("KEYSTORE_PASSWORD") + keyAlias = "keymapper" + keyPassword = System.getenv("KEY_PASSWORD") + } + } + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + signingConfig = signingConfigs.getByName("release") + } + + debug { + applicationIdSuffix = ".debug" + versionNameSuffix = "-debug" + } + + create("debug_release") { + initWith(getByName("debug")) + applicationIdSuffix = "" // Reset from debug + matchingFallbacks.add("debug") + } + + create("ci") { + isMinifyEnabled = true + // shrinkResources is now part of isMinifyEnabled in newer AGP, + // but let's keep explicit if an older AGP interpretation is in mind. + // If build fails, this might need adjustment. + // For AGP 8.x, shrinkResources is controlled by isMinifyEnabled. + // Explicitly setting it might be deprecated or have no effect. + // I'll assume it implies full R8 shrinkage. + // shrinkResources = true // This property might not exist directly here in KTS for AGP 8+ + // Instead, you rely on isMinifyEnabled and Proguard rules. + + matchingFallbacks.add("debug") + applicationIdSuffix = ".ci" + versionNameSuffix = "-ci.${versionProperties.getProperty("VERSION_NUM")}" + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + signingConfig = signingConfigs.getByName("debug") // Assuming debug signing for CI + } + } + + flavorDimensions.add("pro") + productFlavors { + create("free") { + dimension = "pro" + } + create("pro") { + dimension = "pro" + val localPropertiesFile = rootProject.file("local.properties") + val keyName = "REVENUECAT_API_KEY" + if (localPropertiesFile.exists()) { + val localProperties = Properties().apply { + FileInputStream(localPropertiesFile).use { fis -> load(fis) } + } + if (localProperties.containsKey(keyName)) { + buildConfigField("String", keyName, "${localProperties[keyName]}") + } + } + } + } + + buildFeatures { + dataBinding = true + viewBinding = true + aidl = true + buildConfig = true + compose = true + } + + compileOptions { + isCoreLibraryDesugaringEnabled = true + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = "17" + } + + kapt { + correctErrorTypes = true + } + + composeOptions { + kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() + } + + sourceSets { + getByName("androidTest") { + assets.srcDirs(files("${projectDir}/schemas")) + resources.srcDirs("src/test/resources") + } + getByName("test") { + java.srcDirs("src/pro/test/java") + } + } + + applicationVariants.all { + outputs.all { + val output = this as com.android.build.gradle.internal.api.BaseVariantOutputImpl + output.outputFileName = "keymapper-${'$'}{variant.versionName}.apk" + } + } + + room { + schemaDirectory("$projectDir/schemas") + } +} + +dependencies { + implementation(fileTree(mapOf("include" to listOf("*.jar"), "dir" to "libs"))) + + implementation(project(":base")) + compileOnly(project(":systemstubs")) + + // kotlin stuff + implementation(libs.kotlinx.coroutines.android) + implementation(libs.kotlin.stdlib.jdk8) // Already included by kotlin-android plugin usually, but explicit is fine + implementation(libs.kotlinx.serialization.json) + + // random stuff + implementation(libs.google.android.material) + implementation(libs.kotson) + implementation(libs.airbnb.epoxy) + implementation(libs.airbnb.epoxy.databinding) + kapt(libs.airbnb.epoxy.processor) + implementation(libs.jakewharton.timber) + implementation(libs.net.lingala.zip4j) + implementation(libs.anggrayudi.storage) + implementation(libs.github.mflisar.dragselectrecyclerview) + implementation(libs.google.flexbox) + implementation(libs.rikka.shizuku.api) + implementation(libs.rikka.shizuku.provider) + implementation(libs.lsposed.hiddenapibypass) + "proImplementation"(libs.revenuecat.purchases) + "proImplementation"(libs.airbnb.lottie.compose) + implementation(libs.squareup.okhttp) + coreLibraryDesugaring(libs.desugar.jdk.libs) + implementation(libs.canopas.introshowcaseview) + + // splitties + implementation(libs.bundles.splitties) + + // androidx + implementation(libs.androidx.legacy.support.core.ui) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.activity.ktx) + implementation(libs.androidx.fragment.ktx) + implementation(libs.bundles.androidx.lifecycle) + implementation(libs.androidx.room.ktx) + implementation(libs.bundles.androidx.navigation) + implementation(libs.androidx.multidex) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.recyclerview) + implementation(libs.androidx.preference.ktx) + implementation(libs.androidx.constraintlayout) + implementation(libs.androidx.lifecycle.extensions) // Note: Deprecated + implementation(libs.androidx.room.runtime) + implementation(libs.androidx.viewpager2) + implementation(libs.androidx.datastore.preferences) + implementation(libs.androidx.core.splashscreen) + implementation(libs.androidx.activity.compose) // Repeated, covered by activity-ktx or compose deps + // implementation(libs.androidx.navigation.compose) // Covered by bundle + // implementation(libs.androidx.navigation.fragment.compose) // Covered by bundle + ksp(libs.androidx.room.compiler) + + + // Compose + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.compose.foundation) + implementation(libs.androidx.compose.ui.android) + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.compose.material) // material-icons-extended + implementation(libs.androidx.compose.material3.adaptive) + implementation(libs.androidx.compose.material3.adaptive.navigation) + implementation(libs.google.accompanist.drawablepainter) + // implementation(libs.androidx.activity.compose) // Already listed + + debugImplementation(libs.androidx.compose.ui.tooling) +// "debug_releaseImplementation"(libs.androidx.compose.ui.tooling) + +// debugImplementation(libs.squareup.leakcanary.android) // Keep commented + + // Dependencies for local unit tests + testImplementation(libs.junit) + testImplementation(libs.hamcrest.all) + testImplementation(libs.androidx.junit.ktx) // androidx.test.ext:junit-ktx + testImplementation(libs.androidx.test.core.ktx) + testImplementation(libs.robolectric) + testImplementation(libs.androidx.arch.core.testing) + testImplementation(libs.kotlinx.coroutines.test) + testImplementation(libs.junit.params) + testImplementation(libs.mockito.kotlin) + testImplementation(libs.mockito.core) + testImplementation(libs.mockito.inline) + + // Dependencies for Android instrumented tests + androidTestImplementation(libs.androidx.test.ext.junit) // androidx.test.ext:junit + androidTestImplementation(libs.androidx.arch.core.testing) // Repeated, fine + androidTestImplementation(libs.junit) // Repeated, fine + androidTestImplementation(libs.androidx.navigation.testing) + androidTestImplementation(libs.androidx.room.testing.legacy) + androidTestImplementation(libs.mockito.android) + debugImplementation(libs.androidx.fragment.testing) + implementation(libs.androidx.test.core) // Implementation, not testImplementation? Check usage. +} \ No newline at end of file diff --git a/build.gradle b/build.gradle deleted file mode 100644 index e17e83582b..0000000000 --- a/build.gradle +++ /dev/null @@ -1,41 +0,0 @@ -buildscript { - ext.kotlin_version = '2.1.0' - - repositories { - google() - mavenCentral() - maven { - url "https://plugins.gradle.org/m2/" - } - } - - dependencies { - def nav_version = '2.6.0' - - classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" - classpath 'com.android.tools.build:gradle:8.9.1' - classpath "org.jlleitschuh.gradle:ktlint-gradle:12.1.0" - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" - classpath "org.jetbrains.kotlin.plugin.compose:org.jetbrains.kotlin.plugin.compose.gradle.plugin:2.1.0" - classpath "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:2.1.0-1.0.28" - classpath "androidx.room:androidx.room.gradle.plugin:2.6.1" - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } -} - -allprojects { - repositories { - google() - mavenCentral() - maven { url "https://jitpack.io" } - maven { url 'https://maven.google.com/' } - maven { url 'https://dl.bintray.com/rikkaw/Shizuku' } - } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} - diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000000..0e9e38f138 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,13 @@ + // Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { + alias(libs.plugins.android.application) apply false + alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.compose) apply false + alias(libs.plugins.kotlin.kapt) apply false + alias(libs.plugins.kotlin.serialization) apply false + alias(libs.plugins.kotlin.parcelize) apply false + alias(libs.plugins.androidx.navigation.safeargs.kotlin) apply false + alias(libs.plugins.androidx.room) apply false + alias(libs.plugins.google.devtools.ksp) apply false + alias(libs.plugins.jlleitschuh.gradle.ktlint) apply false +} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000000..0fad9b6f54 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,210 @@ +[versions] +compile-sdk = "35" +min-sdk = "21" +build-tools = "35.0.0" + +android-gradle-plugin = "8.9.1" +androidx-activity = "1.10.1" +androidx-appcompat = "1.7.0" +androidx-arch-core-testing = "2.2.0" +androidx-constraintlayout = "2.2.1" +androidx-core-ktx = "1.16.0" +androidx-core-splashscreen = "1.0.1" +androidx-datastore-preferences = "1.2.0-alpha02" +androidx-fragment = "1.8.6" +androidx-junit = "1.2.1" # formerly androidXTestExtKotlinRunnerVersion +androidx-legacy-support-core-ui = "1.0.0" +androidx-lifecycle = "2.9.0" +androidx-lifecycle-extensions = "2.2.0" # Note: lifecycle-extensions is deprecated +androidx-multidex = "2.0.1" +androidx-navigation = "2.9.0" # App level nav_version +androidx-navigation-safeargs-gradle-plugin = "2.6.0" # Project level nav_version +androidx-preference-ktx = "1.2.1" +androidx-recyclerview = "1.4.0" +androidx-room = "2.7.1" # room_version for dependencies +androidx-room-gradle-plugin = "2.6.1" # For plugin +androidx-test-core = "1.6.1" +androidx-viewpager2 = "1.1.0" +compose-bom = "2025.05.00" +compose-compiler = "1.5.10" # kotlinCompilerExtensionVersion +coroutines = "1.9.0" +desugar-jdk-libs = "2.1.5" +epoxy = "4.6.2" +flexbox = "3.0.0" +google-accompanist-drawablepainter = "0.35.0-alpha" +hiddenapibypass = "4.3" +introshowcaseview = "2.0.2" +junit = "4.13.2" +junit-params = "1.1.1" +kotlin = "2.1.0" +kotlin-serialization-json = "1.8.0" +kotson = "2.5.0" +ksp-gradle-plugin = "2.1.0-1.0.28" +ktlint-gradle = "12.1.0" +#leakcanary = "2.6" # Commented out in original file +lingala-zip4j = "2.8.0" +lottie-compose = "6.6.3" +material = "1.13.0-alpha13" +mflisar-dragselectrecyclerview = "0.3" +mockito-android = "4.6.1" +mockito-core = "5.15.2" +mockito-inline = "5.2.0" +mockito-kotlin = "4.0.0" +okhttp = "4.12.0" +revenuecat-purchases = "8.17.1" +robolectric = "4.14.1" +shizuku = "13.1.5" +splitties = "3.0.0" +storage-anggrayudi = "0.8.1" +target-sdk = "35" +timber = "5.0.1" +room-testing-legacy = "1.1.1" # android.arch.persistence.room:testing + +[libraries] +# Kotlin +kotlin-stdlib-jdk8 = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" } +kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutines" } +kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutines" } +kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlin-serialization-json" } + +# AndroidX +androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidx-activity" } +androidx-activity-ktx = { group = "androidx.activity", name = "activity-ktx", version.ref = "androidx-activity" } +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidx-appcompat" } +androidx-arch-core-testing = { group = "androidx.arch.core", name = "core-testing", version.ref = "androidx-arch-core-testing" } +androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "androidx-constraintlayout" } +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidx-core-ktx" } +androidx-core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "androidx-core-splashscreen" } +androidx-datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "androidx-datastore-preferences" } +androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "androidx-fragment" } +androidx-fragment-testing = { group = "androidx.fragment", name = "fragment-testing", version.ref = "androidx-fragment" } +androidx-junit-ktx = { group = "androidx.test.ext", name = "junit-ktx", version.ref = "androidx-junit" } # Combines ext:junit and -ktx +androidx-legacy-support-core-ui = { group = "androidx.legacy", name = "legacy-support-core-ui", version.ref = "androidx-legacy-support-core-ui" } +androidx-lifecycle-extensions = { group = "androidx.lifecycle", name = "lifecycle-extensions", version.ref = "androidx-lifecycle-extensions" } +androidx-lifecycle-livedata-ktx = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "androidx-lifecycle" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidx-lifecycle" } +androidx-lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle" } +androidx-multidex = { group = "androidx.multidex", name = "multidex", version.ref = "androidx-multidex" } +androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "androidx-navigation" } +androidx-navigation-fragment-compose = { module = "androidx.navigation:navigation-fragment-compose", version.ref = "androidx-navigation" } # Custom example if needed +androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "androidx-navigation" } +androidx-navigation-testing = { group = "androidx.navigation", name = "navigation-testing", version.ref = "androidx-navigation" } +androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "androidx-navigation" } +androidx-preference-ktx = { group = "androidx.preference", name = "preference-ktx", version.ref = "androidx-preference-ktx" } +androidx-recyclerview = { group = "androidx.recyclerview", name = "recyclerview", version.ref = "androidx-recyclerview" } +androidx-room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "androidx-room" } +androidx-room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "androidx-room" } +androidx-room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "androidx-room" } +androidx-room-testing-legacy = { group = "android.arch.persistence.room", name = "testing", version.ref = "room-testing-legacy" } +androidx-test-core = { group = "androidx.test", name = "core", version.ref = "androidx-test-core" } +androidx-test-core-ktx = { group = "androidx.test", name = "core-ktx", version.ref = "androidx-test-core" } +androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-junit" } +androidx-viewpager2 = { group = "androidx.viewpager2", name = "viewpager2", version.ref = "androidx-viewpager2" } + +# Compose +androidx-compose-bom = { group = "androidx.compose", name = "compose-bom-beta", version.ref = "compose-bom" } # Corrected name +androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" } +androidx-compose-material = { group = "androidx.compose.material", name = "material-icons-extended-android" } # Assuming this is the one meant by material-icons-extended +androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3-android" } +androidx-compose-material3-adaptive = { group = "androidx.compose.material3.adaptive", name = "adaptive-android" } +androidx-compose-material3-adaptive-navigation = { group = "androidx.compose.material3.adaptive", name = "adaptive-navigation" } +androidx-compose-ui-android = { group = "androidx.compose.ui", name = "ui-android" } +androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } +androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview-android" } + +# Google +google-accompanist-drawablepainter = { group = "com.google.accompanist", name = "accompanist-drawablepainter", version.ref = "google-accompanist-drawablepainter" } +google-android-material = { group = "com.google.android.material", name = "material", version.ref = "material" } +google-flexbox = { group = "com.google.android.flexbox", name = "flexbox", version.ref = "flexbox" } + +# Square +squareup-okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" } +#squareup-leakcanary-android = { group = "com.squareup.leakcanary", name = "leakcanary-android", version.ref = "leakcanary" } # Commented out + +# Airbnb +airbnb-epoxy = { group = "com.airbnb.android", name = "epoxy", version.ref = "epoxy" } +airbnb-epoxy-databinding = { group = "com.airbnb.android", name = "epoxy-databinding", version.ref = "epoxy" } +airbnb-epoxy-processor = { group = "com.airbnb.android", name = "epoxy-processor", version.ref = "epoxy" } +airbnb-lottie-compose = { group = "com.airbnb.android", name = "lottie-compose", version.ref = "lottie-compose" } + +# Splitties +splitties-alertdialog-appcompat-coroutines = { group = "com.louiscad.splitties", name = "splitties-alertdialog-appcompat-coroutines", version.ref = "splitties" } +splitties-alertdialog-material = { group = "com.louiscad.splitties", name = "splitties-alertdialog-material", version.ref = "splitties" } +splitties-bitflags = { group = "com.louiscad.splitties", name = "splitties-bitflags", version.ref = "splitties" } +splitties-mainthread = { group = "com.louiscad.splitties", name = "splitties-mainthread", version.ref = "splitties" } +splitties-snackbar = { group = "com.louiscad.splitties", name = "splitties-snackbar", version.ref = "splitties" } +splitties-toast = { group = "com.louiscad.splitties", name = "splitties-toast", version.ref = "splitties" } + +# Rikka Shizuku +rikka-shizuku-api = { group = "dev.rikka.shizuku", name = "api", version.ref = "shizuku" } +rikka-shizuku-provider = { group = "dev.rikka.shizuku", name = "provider", version.ref = "shizuku" } + +# Testing +junit = { group = "junit", name = "junit", version.ref = "junit" } +junit-params = { group = "pl.pragmatists", name = "JUnitParams", version.ref = "junit-params" } +mockito-android = { group = "org.mockito", name = "mockito-android", version.ref = "mockito-android" } +mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockito-core" } +mockito-inline = { group = "org.mockito", name = "mockito-inline", version.ref = "mockito-inline" } +mockito-kotlin = { group = "org.mockito.kotlin", name = "mockito-kotlin", version.ref = "mockito-kotlin" } +robolectric = { group = "org.robolectric", name = "robolectric", version.ref = "robolectric" } +hamcrest-all = { group = "org.hamcrest", name = "hamcrest-all", version = "1.3" } # No version variable + +# Other +anggrayudi-storage = { group = "com.anggrayudi", name = "storage", version.ref = "storage-anggrayudi" } +canopas-introshowcaseview = { group = "com.canopas.intro-showcase-view", name = "introshowcaseview", version.ref = "introshowcaseview" } +desugar-jdk-libs = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "desugar-jdk-libs" } +github-mflisar-dragselectrecyclerview = { group = "com.github.MFlisar", name = "DragSelectRecyclerView", version.ref = "mflisar-dragselectrecyclerview" } +jakewharton-timber = { group = "com.jakewharton.timber", name = "timber", version.ref = "timber" } +kotson = { group = "com.github.salomonbrys.kotson", name = "kotson", version.ref = "kotson" } +lsposed-hiddenapibypass = { group = "org.lsposed.hiddenapibypass", name = "hiddenapibypass", version.ref = "hiddenapibypass" } +net-lingala-zip4j = { group = "net.lingala.zip4j", name = "zip4j", version.ref = "lingala-zip4j" } +revenuecat-purchases = { group = "com.revenuecat.purchases", name = "purchases", version.ref = "revenuecat-purchases" } + +# Gradle Plugins - Aliases for buildscript dependencies / plugins block +# These are referenced in build.gradle.kts files' plugins blocks by their ID. +# Versions defined here can be used by plugins {} block in settings.gradle.kts if needed. +android-gradleplugin = { group = "com.android.tools.build", name = "gradle", version.ref = "android-gradle-plugin" } +kotlin-gradleplugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } +kotlin-serialization-gradleplugin = { group = "org.jetbrains.kotlin", name = "kotlin-serialization", version.ref = "kotlin" } +ksp-gradleplugin = { group = "com.google.devtools.ksp", name = "com.google.devtools.ksp.gradle.plugin", version.ref = "ksp-gradle-plugin" } +navigation-safeargs-gradleplugin = { group = "androidx.navigation", name = "navigation-safe-args-gradle-plugin", version.ref = "androidx-navigation-safeargs-gradle-plugin" } +ktlint-gradleplugin = { group = "org.jlleitschuh.gradle", name = "ktlint-gradle", version.ref = "ktlint-gradle"} +kotlin-compose-compiler-gradleplugin = { group = "org.jetbrains.kotlin.plugin.compose", name = "org.jetbrains.kotlin.plugin.compose.gradle.plugin", version.ref = "kotlin" } # Using kotlin version for compose plugin as per original setup +room-gradleplugin = { group = "androidx.room", name = "androidx.room.gradle.plugin", version.ref = "androidx-room-gradle-plugin" } + + +[plugins] +android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" } +androidx-navigation-safeargs-kotlin = { id = "androidx.navigation.safeargs.kotlin", version.ref = "androidx-navigation-safeargs-gradle-plugin" } +androidx-room = { id = "androidx.room", version.ref = "androidx-room-gradle-plugin" } +google-devtools-ksp = { id = "com.google.devtools.ksp", version.ref = "ksp-gradle-plugin" } +jlleitschuh-gradle-ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint-gradle" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } +kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } + +[bundles] +splitties = [ + "splitties-bitflags", + "splitties-alertdialog-appcompat-coroutines", + "splitties-alertdialog-material", + "splitties-snackbar", + "splitties-toast", + "splitties-mainthread", +] +androidx-lifecycle = [ + "androidx-lifecycle-viewmodel-ktx", + "androidx-lifecycle-runtime-ktx", + "androidx-lifecycle-livedata-ktx", +] +androidx-navigation = [ + "androidx-navigation-fragment-ktx", + "androidx-navigation-ui-ktx", + "androidx-navigation-compose", + "androidx-navigation-fragment-compose", +] +# Example: if you had common test dependencies +# test-common = ["junit", "kotlinx-coroutines-test", "androidx-arch-core-testing"] +# androidtest-common = ["androidx-test-ext-junit", "androidx-espresso-core"] \ No newline at end of file diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index a2a582b50a..0000000000 --- a/settings.gradle +++ /dev/null @@ -1,2 +0,0 @@ -include ':app' -include ':systemstubs' diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000000..870500d454 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,28 @@ +pluginManagement { + repositories { + google { + content { + includeGroupByRegex("com\\.android.*") + includeGroupByRegex("com\\.google.*") + includeGroupByRegex("androidx.*") + } + } + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + maven { url = uri("https://jitpack.io") } + maven { url = uri("https://maven.google.com/") } + maven { url = uri("https://dl.bintray.com/rikkaw/Shizuku") } + } +} + +rootProject.name = "KeyMapper" +include(":app") +include(":systemstubs") +include(":base") \ No newline at end of file From 1b7a5497cb6c653e66fb65bd07511a76d3d27e9f Mon Sep 17 00:00:00 2001 From: sds100 Date: Fri, 16 May 2025 15:58:30 +0200 Subject: [PATCH 02/71] #1711 create base module --- base/.gitignore | 1 + base/build.gradle.kts | 43 +++++++++++++++++++++++++++++++ base/consumer-rules.pro | 0 base/proguard-rules.pro | 21 +++++++++++++++ base/src/main/AndroidManifest.xml | 4 +++ 5 files changed, 69 insertions(+) create mode 100644 base/.gitignore create mode 100644 base/build.gradle.kts create mode 100644 base/consumer-rules.pro create mode 100644 base/proguard-rules.pro create mode 100644 base/src/main/AndroidManifest.xml diff --git a/base/.gitignore b/base/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/base/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/base/build.gradle.kts b/base/build.gradle.kts new file mode 100644 index 0000000000..b1b4cc42b5 --- /dev/null +++ b/base/build.gradle.kts @@ -0,0 +1,43 @@ +plugins { + id("com.android.library") + id("org.jetbrains.kotlin.android") +} + +android { + namespace = "io.github.sds100.keymapper.base" + compileSdk = 35 + + defaultConfig { + minSdk = 21 + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } +} + +dependencies { + + implementation("androidx.core:core-ktx:1.16.0") + implementation("androidx.appcompat:appcompat:1.7.0") + implementation("com.google.android.material:material:1.12.0") + testImplementation("junit:junit:4.13.2") + androidTestImplementation("androidx.test.ext:junit:1.2.1") + androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1") +} \ No newline at end of file diff --git a/base/consumer-rules.pro b/base/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/base/proguard-rules.pro b/base/proguard-rules.pro new file mode 100644 index 0000000000..481bb43481 --- /dev/null +++ b/base/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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/base/src/main/AndroidManifest.xml b/base/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..a5918e68ab --- /dev/null +++ b/base/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From 4a22ef198fc33f9adc97b920eedc53d8469116d9 Mon Sep 17 00:00:00 2001 From: sds100 Date: Fri, 16 May 2025 16:16:08 +0200 Subject: [PATCH 03/71] #1711 create api module and move relay service into it --- api/.gitignore | 1 + api/build.gradle.kts | 41 +++++++++++++++++++ api/consumer-rules.pro | 0 api/proguard-rules.pro | 21 ++++++++++ api/src/main/AndroidManifest.xml | 4 ++ .../keymapper/api/IKeyEventRelayService.aidl | 0 .../api/IKeyEventRelayServiceCallback.aidl | 0 .../io/github/sds100/keymapper/api/Api.kt | 0 .../keymapper/api/KeyEventRelayService.kt | 19 ++++++++- .../api/KeyEventRelayServiceWrapper.kt | 0 app/build.gradle.kts | 2 + base/build.gradle.kts | 4 +- build.gradle.kts | 1 + gradle/libs.versions.toml | 5 ++- settings.gradle.kts | 3 +- 15 files changed, 95 insertions(+), 6 deletions(-) create mode 100644 api/.gitignore create mode 100644 api/build.gradle.kts create mode 100644 api/consumer-rules.pro create mode 100644 api/proguard-rules.pro create mode 100644 api/src/main/AndroidManifest.xml rename {app => api}/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayService.aidl (100%) rename {app => api}/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayServiceCallback.aidl (100%) rename {app => api}/src/main/java/io/github/sds100/keymapper/api/Api.kt (100%) rename {app => api}/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayService.kt (92%) rename {app => api}/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayServiceWrapper.kt (100%) diff --git a/api/.gitignore b/api/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/api/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/api/build.gradle.kts b/api/build.gradle.kts new file mode 100644 index 0000000000..f5d223cb52 --- /dev/null +++ b/api/build.gradle.kts @@ -0,0 +1,41 @@ +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) +} + +android { + namespace = "io.github.sds100.keymapper.api" + compileSdk = libs.versions.compile.sdk.get().toInt() + + defaultConfig { + minSdk = libs.versions.min.sdk.get().toInt() + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } + + buildFeatures { + aidl = true + } +} + +dependencies { + implementation(libs.jakewharton.timber) +} \ No newline at end of file diff --git a/api/consumer-rules.pro b/api/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/api/proguard-rules.pro b/api/proguard-rules.pro new file mode 100644 index 0000000000..481bb43481 --- /dev/null +++ b/api/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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/api/src/main/AndroidManifest.xml b/api/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..a5918e68ab --- /dev/null +++ b/api/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayService.aidl b/api/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayService.aidl similarity index 100% rename from app/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayService.aidl rename to api/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayService.aidl diff --git a/app/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayServiceCallback.aidl b/api/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayServiceCallback.aidl similarity index 100% rename from app/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayServiceCallback.aidl rename to api/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayServiceCallback.aidl diff --git a/app/src/main/java/io/github/sds100/keymapper/api/Api.kt b/api/src/main/java/io/github/sds100/keymapper/api/Api.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/api/Api.kt rename to api/src/main/java/io/github/sds100/keymapper/api/Api.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayService.kt b/api/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayService.kt similarity index 92% rename from app/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayService.kt rename to api/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayService.kt index 333f14932d..785d3a03e9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayService.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayService.kt @@ -8,7 +8,6 @@ import android.os.IBinder import android.os.IBinder.DeathRecipient import android.view.KeyEvent import android.view.MotionEvent -import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import timber.log.Timber import java.util.concurrent.ConcurrentHashMap @@ -38,9 +37,25 @@ class KeyEventRelayService : Service() { * Used when a client registers a callback without specifying an ID. */ private const val CALLBACK_ID_DEFAULT = "default" + + const val KEY_MAPPER_GUI_IME_PACKAGE = + "io.github.sds100.keymapper.inputmethod.latin" + + private const val KEY_MAPPER_LEANBACK_IME_PACKAGE = + "io.github.sds100.keymapper.inputmethod.leanback" + + private const val KEY_MAPPER_HACKERS_KEYBOARD_PACKAGE = + "io.github.sds100.keymapper.inputmethod.hackers" } - val permittedPackages = KeyMapperImeHelper.KEY_MAPPER_IME_PACKAGE_LIST + val permittedPackages by lazy { + arrayOf( + packageName, + KEY_MAPPER_GUI_IME_PACKAGE, + KEY_MAPPER_LEANBACK_IME_PACKAGE, + KEY_MAPPER_HACKERS_KEYBOARD_PACKAGE, + ) + } private val binderInterface: IKeyEventRelayService = object : IKeyEventRelayService.Stub() { override fun sendKeyEvent( diff --git a/app/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayServiceWrapper.kt b/api/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayServiceWrapper.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayServiceWrapper.kt rename to api/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayServiceWrapper.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7a1ae6cce3..9809e7332c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,6 +29,7 @@ android { applicationId = "io.github.sds100.keymapper" minSdk = libs.versions.min.sdk.get().toInt() targetSdk = libs.versions.target.sdk.get().toInt() + versionCode = versionProperties.getProperty("VERSION_CODE").toInt() versionName = versionProperties.getProperty("VERSION_NAME") multiDexEnabled = true @@ -160,6 +161,7 @@ android { dependencies { implementation(fileTree(mapOf("include" to listOf("*.jar"), "dir" to "libs"))) + implementation(project(":api")) implementation(project(":base")) compileOnly(project(":systemstubs")) diff --git a/base/build.gradle.kts b/base/build.gradle.kts index b1b4cc42b5..c77aaf8bf2 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -5,10 +5,10 @@ plugins { android { namespace = "io.github.sds100.keymapper.base" - compileSdk = 35 + compileSdk = libs.versions.compile.sdk.get().toInt() defaultConfig { - minSdk = 21 + minSdk = libs.versions.min.sdk.get().toInt() testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") diff --git a/build.gradle.kts b/build.gradle.kts index 0e9e38f138..3aca3f4db9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -10,4 +10,5 @@ plugins { alias(libs.plugins.androidx.room) apply false alias(libs.plugins.google.devtools.ksp) apply false alias(libs.plugins.jlleitschuh.gradle.ktlint) apply false + alias(libs.plugins.android.library) apply false } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0fad9b6f54..3cb5528cf0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -58,7 +58,8 @@ splitties = "3.0.0" storage-anggrayudi = "0.8.1" target-sdk = "35" timber = "5.0.1" -room-testing-legacy = "1.1.1" # android.arch.persistence.room:testing +room-testing-legacy = "1.1.1" +espresso-core = "3.6.1" # android.arch.persistence.room:testing [libraries] # Kotlin @@ -171,6 +172,7 @@ navigation-safeargs-gradleplugin = { group = "androidx.navigation", name = "navi ktlint-gradleplugin = { group = "org.jlleitschuh.gradle", name = "ktlint-gradle", version.ref = "ktlint-gradle"} kotlin-compose-compiler-gradleplugin = { group = "org.jetbrains.kotlin.plugin.compose", name = "org.jetbrains.kotlin.plugin.compose.gradle.plugin", version.ref = "kotlin" } # Using kotlin version for compose plugin as per original setup room-gradleplugin = { group = "androidx.room", name = "androidx.room.gradle.plugin", version.ref = "androidx-room-gradle-plugin" } +androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso-core" } [plugins] @@ -184,6 +186,7 @@ kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "ko kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +android-library = { id = "com.android.library", version.ref = "android-gradle-plugin" } [bundles] splitties = [ diff --git a/settings.gradle.kts b/settings.gradle.kts index 870500d454..123178c4f7 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -25,4 +25,5 @@ dependencyResolutionManagement { rootProject.name = "KeyMapper" include(":app") include(":systemstubs") -include(":base") \ No newline at end of file +include(":base") +include(":api") From 8f913512b824250e9e539a15dfba509c48f442ab Mon Sep 17 00:00:00 2001 From: sds100 Date: Fri, 16 May 2025 16:45:17 +0200 Subject: [PATCH 04/71] #1711 create common and system module and move result and lockscreen adapter --- api/build.gradle.kts | 1 - app/build.gradle.kts | 6 +- .../github/sds100/keymapper/actions/Action.kt | 6 +- .../actions/ActionDataEntityMapper.kt | 12 ++-- .../keymapper/actions/ActionErrorSnapshot.kt | 13 ++-- .../keymapper/actions/ActionUiHelper.kt | 2 +- .../actions/ChooseActionViewModel.kt | 4 +- .../actions/ConfigActionsViewModel.kt | 7 +- .../keymapper/actions/DisplayActionUseCase.kt | 4 +- .../actions/IsActionSupportedUseCase.kt | 5 +- .../actions/PerformActionsUseCase.kt | 16 ++--- .../keymapper/actions/TestActionUseCase.kt | 2 +- .../keyevent/ConfigKeyEventActionViewModel.kt | 16 ++--- .../actions/sound/ChooseSoundFileUseCase.kt | 6 +- .../actions/sound/ChooseSoundFileViewModel.kt | 6 +- .../keymapper/actions/sound/SoundsManager.kt | 12 ++-- .../uielement/InteractUiElementUseCase.kt | 4 +- .../uielement/InteractUiElementViewModel.kt | 10 +-- .../sds100/keymapper/backup/BackupManager.kt | 10 +-- .../backup/BackupRestoreMappingsUseCase.kt | 8 +-- .../backup/RestoreKeyMapsViewModel.kt | 4 +- .../constraints/ConfigConstraintsViewModel.kt | 5 +- .../keymapper/constraints/Constraint.kt | 2 +- .../constraints/ConstraintErrorSnapshot.kt | 19 +++--- .../constraints/ConstraintUiHelper.kt | 4 +- .../constraints/CreateConstraintUseCase.kt | 2 +- .../constraints/DisplayConstraintUseCase.kt | 4 +- .../keymapper/data/entities/EntityExtra.kt | 6 +- .../keymapper/groups/GroupConstraintRow.kt | 2 +- .../keymapper/home/HomeKeyMapListScreen.kt | 2 +- .../sds100/keymapper/home/KeyMapListAppBar.kt | 2 +- .../keymaps/ConfigKeyMapOptionsViewModel.kt | 2 +- .../keymapper/keymaps/ConfigKeyMapUseCase.kt | 2 +- .../keymaps/CreateKeyMapShortcutScreen.kt | 2 +- .../keymaps/CreateKeyMapShortcutUseCase.kt | 2 +- .../keymapper/keymaps/DisplayKeyMapUseCase.kt | 30 +++++---- .../keymaps/KeyMapListItemCreator.kt | 2 +- .../keymapper/keymaps/KeyMapListScreen.kt | 2 +- .../keymapper/keymaps/KeyMapListViewModel.kt | 13 ++-- .../keymapper/keymaps/ListKeyMapsUseCase.kt | 4 +- .../DetectScreenOffKeyEventsController.kt | 2 +- .../keymapper/onboarding/OnboardingUseCase.kt | 4 +- .../keymapper/purchasing/PurchasingError.kt | 19 ++++++ .../keymapper/purchasing/PurchasingManager.kt | 2 +- .../settings/ConfigSettingsUseCase.kt | 2 +- .../keymapper/settings/SettingsViewModel.kt | 6 +- .../comparators/KeyMapActionsComparator.kt | 6 +- .../KeyMapConstraintsComparator.kt | 8 +-- .../github/sds100/keymapper/system/Shell.kt | 6 +- .../sds100/keymapper/system/SystemError.kt | 41 ++++++++++++ .../AccessibilityServiceAdapter.kt | 10 +-- .../accessibility/IAccessibilityService.kt | 2 +- .../accessibility/MyAccessibilityService.kt | 6 +- .../system/accessibility/ServiceAdapter.kt | 2 +- .../airplanemode/AirplaneModeAdapter.kt | 2 +- .../AndroidAirplaneModeAdapter.kt | 4 +- .../system/apps/AndroidAppShortcutAdapter.kt | 8 +-- .../apps/AndroidPackageManagerAdapter.kt | 8 +-- .../system/apps/AppShortcutAdapter.kt | 2 +- .../system/apps/ChooseActivityViewModel.kt | 2 +- .../system/apps/ChooseAppShortcutViewModel.kt | 2 +- .../system/apps/ChooseAppViewModel.kt | 2 +- .../system/apps/DisplayAppShortcutsUseCase.kt | 2 +- .../system/apps/DisplayAppsUseCase.kt | 2 +- .../system/apps/PackageManagerAdapter.kt | 2 +- .../bluetooth/AndroidBluetoothAdapter.kt | 6 +- .../system/bluetooth/BluetoothAdapter.kt | 2 +- .../system/camera/AndroidCameraAdapter.kt | 6 +- .../keymapper/system/camera/CameraAdapter.kt | 2 +- .../system/devices/AndroidDevicesAdapter.kt | 6 +- .../system/devices/DevicesAdapter.kt | 2 +- .../system/display/AndroidDisplayAdapter.kt | 6 +- .../system/display/DisplayAdapter.kt | 2 +- .../system/files/AndroidFileAdapter.kt | 6 +- .../system/files/DocumentFileWrapper.kt | 6 +- .../keymapper/system/files/FileAdapter.kt | 2 +- .../sds100/keymapper/system/files/IFile.kt | 2 +- .../inputmethod/AndroidInputMethodAdapter.kt | 19 +++--- .../inputmethod/AutoSwitchImeController.kt | 8 +-- .../system/inputmethod/InputMethodAdapter.kt | 2 +- .../system/inputmethod/KeyMapperImeHelper.kt | 12 ++-- .../inputmethod/ToggleCompatibleImeUseCase.kt | 2 +- .../keymapper/system/intents/IntentAdapter.kt | 6 +- .../system/media/AndroidMediaAdapter.kt | 6 +- .../keymapper/system/media/MediaAdapter.kt | 2 +- .../system/navigation/OpenMenuHelper.kt | 4 +- .../system/network/AndroidNetworkAdapter.kt | 6 +- .../system/network/NetworkAdapter.kt | 2 +- .../keymapper/system/nfc/AndroidNfcAdapter.kt | 2 +- .../sds100/keymapper/system/nfc/NfcAdapter.kt | 2 +- .../notifications/NotificationController.kt | 4 +- .../NotificationReceiverAdapter.kt | 8 +-- .../permissions/AndroidPermissionAdapter.kt | 13 ++-- .../AutoGrantPermissionController.kt | 2 +- .../system/permissions/PermissionAdapter.kt | 2 +- .../system/phone/AndroidPhoneAdapter.kt | 6 +- .../keymapper/system/phone/PhoneAdapter.kt | 2 +- .../system/ringtones/RingtoneAdapter.kt | 6 +- .../sds100/keymapper/system/root/SuAdapter.kt | 11 ++-- .../keymapper/system/shell/ShellAdapter.kt | 2 +- .../tiles/ToggleKeyMapperKeyboardTile.kt | 4 +- .../system/url/AndroidOpenUrlAdapter.kt | 2 +- .../keymapper/system/url/OpenUrlAdapter.kt | 2 +- .../sds100/keymapper/system/url/UrlUtils.kt | 6 +- .../system/volume/AndroidVolumeAdapter.kt | 13 ++-- .../keymapper/system/volume/VolumeAdapter.kt | 2 +- .../trigger/BaseConfigTriggerViewModel.kt | 6 +- .../keymapper/trigger/RecordTriggerUseCase.kt | 2 +- .../trigger/SetupGuiKeyboardUseCase.kt | 2 +- .../sds100/keymapper/trigger/Trigger.kt | 2 +- .../keymapper/trigger/TriggerErrorSnapshot.kt | 10 +-- .../sds100/keymapper/util/ErrorUtils.kt | 35 ++++++---- .../sds100/keymapper/util/ui/DialogUtils.kt | 12 ++-- .../keymapper/util/ui/ViewModelHelper.kt | 5 +- .../util/ui/compose/ComposeChipModel.kt | 2 +- .../sds100/keymapper/BackupManagerTest.kt | 4 +- .../actions/GetActionFailedUseCaseTest.kt | 2 +- .../actions/PerformActionsUseCaseTest.kt | 2 +- .../keymapper/keymaps/KeyMapControllerTest.kt | 2 +- ...riggerKeyMapFromOtherAppsControllerTest.kt | 2 +- .../system/devices/FakeDevicesAdapter.kt | 2 +- .../keymapper/system/files/FakeFileAdapter.kt | 4 +- .../sds100/keymapper/system/files/JavaFile.kt | 4 +- base/build.gradle.kts | 4 +- common/.gitignore | 1 + common/build.gradle.kts | 35 ++++++++++ common/consumer-rules.pro | 0 common/proguard-rules.pro | 21 ++++++ common/src/main/AndroidManifest.xml | 4 ++ .../sds100/keymapper/common/result}/Result.kt | 64 ++----------------- settings.gradle.kts | 2 + system/.gitignore | 1 + system/build.gradle.kts | 40 ++++++++++++ system/consumer-rules.pro | 0 system/proguard-rules.pro | 21 ++++++ system/src/main/AndroidManifest.xml | 4 ++ .../system/lock/AndroidLockScreenAdapter.kt | 4 +- .../system/lock/LockScreenAdapter.kt | 2 +- 138 files changed, 540 insertions(+), 380 deletions(-) create mode 100644 app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingError.kt create mode 100644 app/src/main/java/io/github/sds100/keymapper/system/SystemError.kt create mode 100644 common/.gitignore create mode 100644 common/build.gradle.kts create mode 100644 common/consumer-rules.pro create mode 100644 common/proguard-rules.pro create mode 100644 common/src/main/AndroidManifest.xml rename {app/src/main/java/io/github/sds100/keymapper/util => common/src/main/java/io/github/sds100/keymapper/common/result}/Result.kt (63%) create mode 100644 system/.gitignore create mode 100644 system/build.gradle.kts create mode 100644 system/consumer-rules.pro create mode 100644 system/proguard-rules.pro create mode 100644 system/src/main/AndroidManifest.xml rename {app => system}/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt (96%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt (90%) diff --git a/api/build.gradle.kts b/api/build.gradle.kts index f5d223cb52..63decb9909 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -10,7 +10,6 @@ android { defaultConfig { minSdk = libs.versions.min.sdk.get().toInt() - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") } diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9809e7332c..d9a7a7eddf 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,7 +1,7 @@ @file:Suppress("UnstableApiUsage") -import java.util.Properties import java.io.FileInputStream +import java.util.Properties plugins { alias(libs.plugins.android.application) @@ -22,7 +22,7 @@ android { buildToolsVersion = libs.versions.build.tools.get() val versionProperties = Properties().apply { - rootProject.file("app/version.properties").inputStream().use { load(it) } + project.file("version.properties").inputStream().use { load(it) } } defaultConfig { @@ -163,6 +163,8 @@ dependencies { implementation(project(":api")) implementation(project(":base")) + implementation(project(":common")) + implementation(project(":system")) compileOnly(project(":systemstubs")) // kotlin stuff diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/Action.kt b/app/src/main/java/io/github/sds100/keymapper/actions/Action.kt index e8e1050ea7..14228790f3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/Action.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/Action.kt @@ -1,12 +1,12 @@ package io.github.sds100.keymapper.actions +import io.github.sds100.keymapper.common.result.success +import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData import io.github.sds100.keymapper.keymaps.KeyMap -import io.github.sds100.keymapper.util.success -import io.github.sds100.keymapper.util.then -import io.github.sds100.keymapper.util.valueOrNull import kotlinx.serialization.Serializable import splitties.bitflags.hasFlag import splitties.bitflags.withFlag diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionDataEntityMapper.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ActionDataEntityMapper.kt index b56a2856ee..30ed295361 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionDataEntityMapper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ActionDataEntityMapper.kt @@ -3,6 +3,12 @@ package io.github.sds100.keymapper.actions import androidx.core.net.toUri import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType import io.github.sds100.keymapper.actions.uielement.NodeInteractionType +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.success +import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.data.db.typeconverter.ConstantTypeConverters import io.github.sds100.keymapper.data.db.typeconverter.NodeInteractionTypeSetTypeConverter import io.github.sds100.keymapper.data.entities.ActionEntity @@ -15,13 +21,7 @@ import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.system.volume.DndMode import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success import io.github.sds100.keymapper.util.getKey -import io.github.sds100.keymapper.util.success -import io.github.sds100.keymapper.util.then -import io.github.sds100.keymapper.util.valueOrNull import kotlinx.serialization.json.Json import splitties.bitflags.hasFlag diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionErrorSnapshot.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ActionErrorSnapshot.kt index 11c4129b8c..47f58bb1bf 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionErrorSnapshot.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ActionErrorSnapshot.kt @@ -1,7 +1,11 @@ package io.github.sds100.keymapper.actions import io.github.sds100.keymapper.actions.sound.SoundsManager +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraLens @@ -11,9 +15,6 @@ import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess class LazyActionErrorSnapshot( private val packageManager: PackageManagerAdapter, @@ -62,7 +63,7 @@ class LazyActionErrorSnapshot( when { !isShizukuStarted -> return Error.ShizukuNotStarted - !isPermissionGranted(Permission.SHIZUKU) -> return Error.PermissionDenied( + !isPermissionGranted(Permission.SHIZUKU) -> return SystemError.PermissionDenied( Permission.SHIZUKU, ) } @@ -79,7 +80,7 @@ class LazyActionErrorSnapshot( ActionUtils.getRequiredPermissions(action.id).forEach { permission -> if (!isPermissionGranted(permission)) { - return Error.PermissionDenied(permission) + return SystemError.PermissionDenied(permission) } } @@ -98,7 +99,7 @@ class LazyActionErrorSnapshot( if ( action.useShell && !isPermissionGranted(Permission.ROOT) ) { - return Error.PermissionDenied(Permission.ROOT) + return SystemError.PermissionDenied(Permission.ROOT) } is ActionData.Sound.SoundFile -> { diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionUiHelper.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ActionUiHelper.kt index 723084996b..f32fdc73cc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionUiHelper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ActionUiHelper.kt @@ -6,6 +6,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Android import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType +import io.github.sds100.keymapper.common.result.handle import io.github.sds100.keymapper.keymaps.KeyMap import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.devices.InputDeviceUtils @@ -15,7 +16,6 @@ import io.github.sds100.keymapper.system.intents.IntentTarget import io.github.sds100.keymapper.system.volume.DndModeUtils import io.github.sds100.keymapper.system.volume.RingerModeUtils import io.github.sds100.keymapper.system.volume.VolumeStreamUtils -import io.github.sds100.keymapper.util.handle import io.github.sds100.keymapper.util.toPercentString import io.github.sds100.keymapper.util.ui.IconInfo import io.github.sds100.keymapper.util.ui.ResourceProvider diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt index 10ea36c237..24c194fb1b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt @@ -4,8 +4,8 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.containsQuery import io.github.sds100.keymapper.util.getFullMessage @@ -142,7 +142,7 @@ class ChooseActionViewModel( val icon = ActionUtils.getComposeIcon(actionId) val subtitle = when { - error == Error.PermissionDenied(Permission.ROOT) -> getString(R.string.choose_action_warning_requires_root) + error == SystemError.PermissionDenied(Permission.ROOT) -> getString(R.string.choose_action_warning_requires_root) error != null -> error.getFullMessage(this@ChooseActionViewModel) else -> null } diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt index dfe362ff0b..c4f701f70e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt @@ -1,18 +1,19 @@ package io.github.sds100.keymapper.actions import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.onFailure import io.github.sds100.keymapper.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.keymaps.KeyMap import io.github.sds100.keymapper.keymaps.ShortcutModel import io.github.sds100.keymapper.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.dataOrNull import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.isFixable import io.github.sds100.keymapper.util.mapData -import io.github.sds100.keymapper.util.onFailure import io.github.sds100.keymapper.util.ui.ChooseAppStoreModel import io.github.sds100.keymapper.util.ui.DialogResponse import io.github.sds100.keymapper.util.ui.LinkType @@ -115,7 +116,7 @@ class ConfigActionsViewModel( val error = actionErrorSnapshot.filterNotNull().first().getError(actionData) ?: return@launch - if (error == Error.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY)) { + if (error == SystemError.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY)) { coroutineScope.launch { ViewModelHelper.showDialogExplainingDndAccessBeingUnavailable( resourceProvider = this@ConfigActionsViewModel, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/DisplayActionUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/DisplayActionUseCase.kt index 4166825086..eb6cfcf23c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/DisplayActionUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/DisplayActionUseCase.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.actions import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow interface DisplayActionUseCase : GetActionErrorUseCase { diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/IsActionSupportedUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/IsActionSupportedUseCase.kt index b488ea686a..64423d4de0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/IsActionSupportedUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/IsActionSupportedUseCase.kt @@ -2,12 +2,13 @@ package io.github.sds100.keymapper.actions import android.content.pm.PackageManager import android.os.Build +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter -import io.github.sds100.keymapper.util.Error class IsActionSupportedUseCaseImpl( private val adapter: SystemFeatureAdapter, @@ -56,7 +57,7 @@ class IsActionSupportedUseCaseImpl( .contains(Permission.ROOT) && !permissionAdapter.isGranted(Permission.ROOT) ) { - return Error.PermissionDenied(Permission.ROOT) + return SystemError.PermissionDenied(Permission.ROOT) } return null diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt index 11d66a7ae0..1da9535b47 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt @@ -7,6 +7,14 @@ import android.view.KeyEvent import android.view.accessibility.AccessibilityNodeInfo import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.sound.SoundsManager +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.result.otherwise +import io.github.sds100.keymapper.common.result.success +import io.github.sds100.keymapper.common.result.then import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.PreferenceRepository @@ -47,21 +55,13 @@ import io.github.sds100.keymapper.system.url.OpenUrlAdapter import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.VolumeAdapter import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.InputEventType -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.ServiceEvent -import io.github.sds100.keymapper.util.Success import io.github.sds100.keymapper.util.dataOrNull import io.github.sds100.keymapper.util.firstBlocking import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.getWordBoundaries import io.github.sds100.keymapper.util.ifIsData -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess -import io.github.sds100.keymapper.util.otherwise -import io.github.sds100.keymapper.util.success -import io.github.sds100.keymapper.util.then import io.github.sds100.keymapper.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/TestActionUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/TestActionUseCase.kt index 6d4dd00ca1..950df1a538 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/TestActionUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/TestActionUseCase.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.actions +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.accessibility.ServiceAdapter -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.ServiceEvent /** diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt index 30d1236f18..5904a1d3d6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -7,24 +7,24 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionData +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.errorOrNull +import io.github.sds100.keymapper.common.result.handle +import io.github.sds100.keymapper.common.result.isSuccess +import io.github.sds100.keymapper.common.result.success +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success -import io.github.sds100.keymapper.util.errorOrNull import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.handle -import io.github.sds100.keymapper.util.isSuccess -import io.github.sds100.keymapper.util.success import io.github.sds100.keymapper.util.ui.CheckBoxListItem import io.github.sds100.keymapper.util.ui.NavDestination import io.github.sds100.keymapper.util.ui.NavigationViewModel import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl import io.github.sds100.keymapper.util.ui.ResourceProvider import io.github.sds100.keymapper.util.ui.navigate -import io.github.sds100.keymapper.util.valueOrNull import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileUseCase.kt index 2e365bf23b..f4bbe40481 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileUseCase.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.actions.sound +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.system.files.FileAdapter -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success import kotlinx.coroutines.flow.StateFlow /** diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt index 4967227dd6..bbb5e8ce76 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt @@ -5,16 +5,16 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionData +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess import io.github.sds100.keymapper.util.ui.DefaultSimpleListItem import io.github.sds100.keymapper.util.ui.PopupUi import io.github.sds100.keymapper.util.ui.PopupViewModel import io.github.sds100.keymapper.util.ui.PopupViewModelImpl import io.github.sds100.keymapper.util.ui.ResourceProvider import io.github.sds100.keymapper.util.ui.showPopup -import io.github.sds100.keymapper.util.valueOrNull import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundsManager.kt b/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundsManager.kt index 8df6a65e38..836618f49f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundsManager.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundsManager.kt @@ -1,13 +1,13 @@ package io.github.sds100.keymapper.actions.sound +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.result.then import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.system.files.IFile -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess -import io.github.sds100.keymapper.util.then import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementUseCase.kt index 9a325f22f3..afbe7d81e7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementUseCase.kt @@ -1,16 +1,16 @@ package io.github.sds100.keymapper.actions.uielement import android.graphics.drawable.Drawable +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.onFailure import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.ServiceEvent import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.mapData -import io.github.sds100.keymapper.util.onFailure import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt index 67dcac391c..86b85162dd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt @@ -7,24 +7,24 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionData +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.Success import io.github.sds100.keymapper.util.containsQuery import io.github.sds100.keymapper.util.dataOrNull import io.github.sds100.keymapper.util.ifIsData import io.github.sds100.keymapper.util.mapData -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.then import io.github.sds100.keymapper.util.ui.PopupViewModel import io.github.sds100.keymapper.util.ui.PopupViewModelImpl import io.github.sds100.keymapper.util.ui.ResourceProvider import io.github.sds100.keymapper.util.ui.ViewModelHelper import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.util.ui.compose.SimpleListItemModel -import io.github.sds100.keymapper.util.valueOrNull import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt b/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt index bb82002476..8aa98189a4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt +++ b/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt @@ -16,6 +16,11 @@ import com.google.gson.JsonSyntaxException import com.google.gson.stream.MalformedJsonException import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.actions.sound.SoundsManager +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.then import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.db.AppDatabase @@ -50,15 +55,10 @@ import io.github.sds100.keymapper.system.files.IFile import io.github.sds100.keymapper.util.DefaultDispatcherProvider import io.github.sds100.keymapper.util.DefaultUuidGenerator import io.github.sds100.keymapper.util.DispatcherProvider -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.Success import io.github.sds100.keymapper.util.TreeNode import io.github.sds100.keymapper.util.UuidGenerator import io.github.sds100.keymapper.util.breadFirstTraversal -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.then import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/BackupRestoreMappingsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/backup/BackupRestoreMappingsUseCase.kt index c41c0e5887..f641a08446 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/BackupRestoreMappingsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/backup/BackupRestoreMappingsUseCase.kt @@ -1,10 +1,10 @@ package io.github.sds100.keymapper.backup +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.then import io.github.sds100.keymapper.system.files.FileAdapter -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.then import kotlinx.coroutines.flow.Flow import timber.log.Timber diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsViewModel.kt index 7f3f25ab7a..1199fabd5f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsViewModel.kt @@ -3,9 +3,9 @@ package io.github.sds100.keymapper.backup import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess import io.github.sds100.keymapper.util.ui.ResourceProvider import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt index f4512555ab..08cfabef63 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt @@ -3,10 +3,11 @@ package io.github.sds100.keymapper.constraints import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.keymaps.ShortcutModel +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.dataOrNull import io.github.sds100.keymapper.util.getFullMessage @@ -108,7 +109,7 @@ class ConfigConstraintsViewModel( val error = constraintErrorSnapshot.filterNotNull().first().getError(constraint) ?: return@launch - if (error == Error.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY)) { + if (error == SystemError.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY)) { coroutineScope.launch { ViewModelHelper.showDialogExplainingDndAccessBeingUnavailable( resourceProvider = this@ConfigConstraintsViewModel, diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/Constraint.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/Constraint.kt index ccb07858b0..89bfe996e5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/Constraint.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/Constraint.kt @@ -1,12 +1,12 @@ package io.github.sds100.keymapper.constraints +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.data.entities.ConstraintEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.display.Orientation import io.github.sds100.keymapper.util.getKey -import io.github.sds100.keymapper.util.valueOrNull import kotlinx.serialization.Serializable import java.time.LocalTime import java.util.UUID diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintErrorSnapshot.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintErrorSnapshot.kt index be1ab76e8f..3565797943 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintErrorSnapshot.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintErrorSnapshot.kt @@ -2,6 +2,9 @@ package io.github.sds100.keymapper.constraints import android.content.pm.PackageManager import android.os.Build +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraLens @@ -9,8 +12,6 @@ import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.onSuccess class LazyConstraintErrorSnapshot( private val packageManager: PackageManagerAdapter, @@ -41,7 +42,7 @@ class LazyConstraintErrorSnapshot( is Constraint.AppPlayingMedia -> { if (!isPermissionGranted(Permission.NOTIFICATION_LISTENER)) { - return Error.PermissionDenied(Permission.NOTIFICATION_LISTENER) + return SystemError.PermissionDenied(Permission.NOTIFICATION_LISTENER) } return getAppError(constraint.packageName) @@ -49,7 +50,7 @@ class LazyConstraintErrorSnapshot( is Constraint.AppNotPlayingMedia -> { if (!isPermissionGranted(Permission.NOTIFICATION_LISTENER)) { - return Error.PermissionDenied(Permission.NOTIFICATION_LISTENER) + return SystemError.PermissionDenied(Permission.NOTIFICATION_LISTENER) } return getAppError(constraint.packageName) @@ -57,7 +58,7 @@ class LazyConstraintErrorSnapshot( Constraint.MediaPlaying, Constraint.NoMediaPlaying -> { if (!isPermissionGranted(Permission.NOTIFICATION_LISTENER)) { - return Error.PermissionDenied(Permission.NOTIFICATION_LISTENER) + return SystemError.PermissionDenied(Permission.NOTIFICATION_LISTENER) } } @@ -69,7 +70,7 @@ class LazyConstraintErrorSnapshot( } if (!isPermissionGranted(Permission.FIND_NEARBY_DEVICES)) { - return Error.PermissionDenied(Permission.FIND_NEARBY_DEVICES) + return SystemError.PermissionDenied(Permission.FIND_NEARBY_DEVICES) } } @@ -78,7 +79,7 @@ class LazyConstraintErrorSnapshot( Constraint.OrientationPortrait, -> if (!isPermissionGranted(Permission.WRITE_SETTINGS)) { - return Error.PermissionDenied(Permission.WRITE_SETTINGS) + return SystemError.PermissionDenied(Permission.WRITE_SETTINGS) } is Constraint.FlashlightOn -> { @@ -109,7 +110,7 @@ class LazyConstraintErrorSnapshot( is Constraint.WifiConnected, is Constraint.WifiDisconnected -> { if (!isPermissionGranted(Permission.ACCESS_FINE_LOCATION)) { - return Error.PermissionDenied(Permission.ACCESS_FINE_LOCATION) + return SystemError.PermissionDenied(Permission.ACCESS_FINE_LOCATION) } } @@ -121,7 +122,7 @@ class LazyConstraintErrorSnapshot( is Constraint.InPhoneCall, is Constraint.PhoneRinging, is Constraint.NotInPhoneCall -> { if (!isPermissionGranted(Permission.READ_PHONE_STATE)) { - return Error.PermissionDenied(Permission.READ_PHONE_STATE) + return SystemError.PermissionDenied(Permission.READ_PHONE_STATE) } } diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUiHelper.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUiHelper.kt index 223b606c77..66ce88fa3a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUiHelper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUiHelper.kt @@ -3,13 +3,13 @@ package io.github.sds100.keymapper.constraints import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Android import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.handle +import io.github.sds100.keymapper.common.result.valueIfFailure import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.display.Orientation import io.github.sds100.keymapper.util.TimeUtils -import io.github.sds100.keymapper.util.handle import io.github.sds100.keymapper.util.ui.ResourceProvider import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.valueIfFailure import java.time.format.FormatStyle /** diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/CreateConstraintUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/CreateConstraintUseCase.kt index 761af23fc4..7d9e748bf7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/CreateConstraintUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/CreateConstraintUseCase.kt @@ -2,6 +2,7 @@ package io.github.sds100.keymapper.constraints import android.content.pm.PackageManager import android.os.Build +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.camera.CameraAdapter @@ -9,7 +10,6 @@ import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.network.NetworkAdapter -import io.github.sds100.keymapper.util.Error import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/DisplayConstraintUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/DisplayConstraintUseCase.kt index 6b5bec73ee..50624f8562 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/DisplayConstraintUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/DisplayConstraintUseCase.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.constraints import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result interface DisplayConstraintUseCase : GetConstraintErrorUseCase { fun getAppName(packageName: String): Result diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt b/app/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt index 1a1c7139ad..8c20804969 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt @@ -4,9 +4,9 @@ import android.os.Parcelable import com.github.salomonbrys.kotson.byString import com.github.salomonbrys.kotson.jsonDeserializer import com.google.gson.annotations.SerializedName -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import kotlinx.parcelize.Parcelize /** diff --git a/app/src/main/java/io/github/sds100/keymapper/groups/GroupConstraintRow.kt b/app/src/main/java/io/github/sds100/keymapper/groups/GroupConstraintRow.kt index 6ba5aeb4ef..7f051f138a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/groups/GroupConstraintRow.kt +++ b/app/src/main/java/io/github/sds100/keymapper/groups/GroupConstraintRow.kt @@ -40,9 +40,9 @@ import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.drawable import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeKeyMapListScreen.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeKeyMapListScreen.kt index c7f448d788..a449ab67b9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeKeyMapListScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeKeyMapListScreen.kt @@ -56,6 +56,7 @@ import com.canopas.lib.showcase.IntroShowcase import io.github.sds100.keymapper.R import io.github.sds100.keymapper.backup.ImportExportState import io.github.sds100.keymapper.backup.RestoreType +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.groups.GroupListItemModel @@ -68,7 +69,6 @@ import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.trigger.DpadTriggerSetupBottomSheet import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.ShareUtils import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.drawable diff --git a/app/src/main/java/io/github/sds100/keymapper/home/KeyMapListAppBar.kt b/app/src/main/java/io/github/sds100/keymapper/home/KeyMapListAppBar.kt index ea4f429031..762ca72e0c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/KeyMapListAppBar.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/KeyMapListAppBar.kt @@ -92,6 +92,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.constraints.ConstraintMode @@ -101,7 +102,6 @@ import io.github.sds100.keymapper.groups.GroupConstraintRow import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.groups.GroupRow import io.github.sds100.keymapper.keymaps.KeyMapAppBarState -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.drawable import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapOptionsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapOptionsViewModel.kt index 0a9daa209b..1e992a1e9d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapOptionsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapOptionsViewModel.kt @@ -4,11 +4,11 @@ import android.graphics.Color import android.graphics.drawable.Drawable import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionUiHelper +import io.github.sds100.keymapper.common.result.onFailure import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.dataOrNull import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.mapData -import io.github.sds100.keymapper.util.onFailure import io.github.sds100.keymapper.util.ui.PopupUi import io.github.sds100.keymapper.util.ui.PopupViewModel import io.github.sds100.keymapper.util.ui.PopupViewModelImpl diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt index a53db4df8d..2c8d3e8463 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt @@ -4,6 +4,7 @@ import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.RepeatMode +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.constraints.ConstraintState @@ -26,7 +27,6 @@ import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerKey import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.ServiceEvent import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.dataOrNull diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutScreen.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutScreen.kt index 2857e9e4bb..03ca71cde9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutScreen.kt @@ -39,6 +39,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.groups.GroupBreadcrumbRow @@ -46,7 +47,6 @@ import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.groups.GroupRow import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.drawable import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt index 6d6fb7e9ed..820fc49dba 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt @@ -5,8 +5,8 @@ import android.graphics.drawable.Drawable import androidx.core.os.bundleOf import io.github.sds100.keymapper.R import io.github.sds100.keymapper.api.Api +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.apps.AppShortcutAdapter -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.ui.ResourceProvider /** diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt index b26f655037..e3828bdb93 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt @@ -3,13 +3,21 @@ package io.github.sds100.keymapper.keymaps import android.graphics.drawable.Drawable import io.github.sds100.keymapper.actions.DisplayActionUseCase import io.github.sds100.keymapper.actions.GetActionErrorUseCase +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.otherwise +import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.common.result.valueIfFailure import io.github.sds100.keymapper.constraints.DisplayConstraintUseCase import io.github.sds100.keymapper.constraints.GetConstraintErrorUseCase import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.purchasing.ProductId +import io.github.sds100.keymapper.purchasing.PurchasingError import io.github.sds100.keymapper.purchasing.PurchasingManager import io.github.sds100.keymapper.shizuku.ShizukuUtils +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter @@ -19,14 +27,8 @@ import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.Success import io.github.sds100.keymapper.util.dataOrNull -import io.github.sds100.keymapper.util.otherwise -import io.github.sds100.keymapper.util.then -import io.github.sds100.keymapper.util.valueIfFailure import kotlinx.coroutines.TimeoutCancellationException import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.callbackFlow @@ -129,11 +131,15 @@ class DisplayKeyMapUseCaseImpl( override suspend fun fixTriggerError(error: TriggerError) { when (error) { - TriggerError.DND_ACCESS_DENIED -> fixError(Error.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY)) - TriggerError.SCREEN_OFF_ROOT_DENIED -> fixError(Error.PermissionDenied(Permission.ROOT)) + TriggerError.DND_ACCESS_DENIED -> fixError(SystemError.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY)) + TriggerError.SCREEN_OFF_ROOT_DENIED -> fixError( + SystemError.PermissionDenied( + Permission.ROOT, + ), + ) TriggerError.CANT_DETECT_IN_PHONE_CALL -> fixError(Error.CantDetectKeyEventsInPhoneCall) TriggerError.ASSISTANT_TRIGGER_NOT_PURCHASED -> fixError( - Error.ProductNotPurchased( + PurchasingError.ProductNotPurchased( ProductId.ASSISTANT_TRIGGER, ), ) @@ -141,7 +147,7 @@ class DisplayKeyMapUseCaseImpl( TriggerError.DPAD_IME_NOT_SELECTED -> fixError(Error.DpadTriggerImeNotSelected) TriggerError.FLOATING_BUTTON_DELETED -> {} TriggerError.FLOATING_BUTTONS_NOT_PURCHASED -> fixError( - Error.ProductNotPurchased( + PurchasingError.ProductNotPurchased( ProductId.FLOATING_BUTTONS, ), ) @@ -166,8 +172,8 @@ class DisplayKeyMapUseCaseImpl( } Error.NoCompatibleImeEnabled -> keyMapperImeHelper.enableCompatibleInputMethods() - is Error.ImeDisabled -> inputMethodAdapter.enableIme(error.ime.id) - is Error.PermissionDenied -> permissionAdapter.request(error.permission) + is SystemError.ImeDisabled -> inputMethodAdapter.enableIme(error.ime.id) + is SystemError.PermissionDenied -> permissionAdapter.request(error.permission) is Error.ShizukuNotStarted -> packageManager.openApp(ShizukuUtils.SHIZUKU_PACKAGE) is Error.CantDetectKeyEventsInPhoneCall -> { if (!keyMapperImeHelper.isCompatibleImeEnabled()) { diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListItemCreator.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListItemCreator.kt index 7e99b73df8..52fc86150b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListItemCreator.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListItemCreator.kt @@ -6,6 +6,7 @@ import androidx.compose.material.icons.outlined.Add import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionErrorSnapshot import io.github.sds100.keymapper.actions.ActionUiHelper +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.constraints.ConstraintErrorSnapshot import io.github.sds100.keymapper.constraints.ConstraintState import io.github.sds100.keymapper.constraints.ConstraintUiHelper @@ -21,7 +22,6 @@ import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.isFixable import io.github.sds100.keymapper.util.ui.ResourceProvider import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListScreen.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListScreen.kt index b36da5e53c..974605f593 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListScreen.kt @@ -54,11 +54,11 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.drawable import io.github.sds100.keymapper.util.ui.compose.CompactChip diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListViewModel.kt index 9ce55cb086..f69f371d06 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListViewModel.kt @@ -8,6 +8,11 @@ import io.github.sds100.keymapper.actions.ActionErrorSnapshot import io.github.sds100.keymapper.backup.BackupRestoreMappingsUseCase import io.github.sds100.keymapper.backup.ImportExportState import io.github.sds100.keymapper.backup.RestoreType +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.constraints.ConstraintErrorSnapshot import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.constraints.ConstraintUiHelper @@ -21,6 +26,7 @@ import io.github.sds100.keymapper.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.sorting.SortViewModel +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.ServiceState import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.system.permissions.Permission @@ -29,16 +35,11 @@ import io.github.sds100.keymapper.trigger.SetupGuiKeyboardState import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.Success import io.github.sds100.keymapper.util.dataOrNull import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.ifIsData import io.github.sds100.keymapper.util.mapData -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess import io.github.sds100.keymapper.util.ui.DialogResponse import io.github.sds100.keymapper.util.ui.MultiSelectProvider import io.github.sds100.keymapper.util.ui.NavDestination @@ -540,7 +541,7 @@ class KeyMapListViewModel( fun onFixClick(error: Error) { coroutineScope.launch { when (error) { - Error.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) -> { + SystemError.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) -> { ViewModelHelper.showDialogExplainingDndAccessBeingUnavailable( resourceProvider = this@KeyMapListViewModel, popupViewModel = this@KeyMapListViewModel, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt index 8fc9f47b8b..418ece6990 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt @@ -5,6 +5,8 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.backup.BackupManager import io.github.sds100.keymapper.backup.BackupManagerImpl import io.github.sds100.keymapper.backup.BackupUtils +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.ConstraintEntityMapper import io.github.sds100.keymapper.constraints.ConstraintMode @@ -17,9 +19,7 @@ import io.github.sds100.keymapper.groups.Group import io.github.sds100.keymapper.groups.GroupEntityMapper import io.github.sds100.keymapper.groups.GroupFamily import io.github.sds100.keymapper.system.files.FileAdapter -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.Success import io.github.sds100.keymapper.util.dataOrNull import io.github.sds100.keymapper.util.ui.ResourceProvider import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt index a492fe2ec7..63f855e528 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt @@ -2,13 +2,13 @@ package io.github.sds100.keymapper.keymaps.detection import android.view.InputDevice import android.view.KeyEvent +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.valueOrNull import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job diff --git a/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt index 3bd5309ca0..64c0b530ab 100644 --- a/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt @@ -5,6 +5,8 @@ import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.canUseImeToPerform import io.github.sds100.keymapper.actions.canUseShizukuToPerform +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.handle import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.data.repositories.PreferenceRepository @@ -20,10 +22,8 @@ import io.github.sds100.keymapper.system.leanback.LeanbackAdapter import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.util.PrefDelegate -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.VersionHelper -import io.github.sds100.keymapper.util.handle import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filterIsInstance diff --git a/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingError.kt b/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingError.kt new file mode 100644 index 0000000000..84e804e748 --- /dev/null +++ b/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingError.kt @@ -0,0 +1,19 @@ +package io.github.sds100.keymapper.purchasing + +import io.github.sds100.keymapper.common.result.Error + +sealed class PurchasingError : Error() { + data object PurchasingNotImplemented : PurchasingError() + + data class ProductNotPurchased(val product: ProductId) : PurchasingError() + + sealed class PurchasingProcessError : PurchasingError() { + data object ProductNotFound : PurchasingProcessError() + data object Cancelled : PurchasingProcessError() + data object StoreProblem : PurchasingProcessError() + data object NetworkError : PurchasingProcessError() + data object PaymentPending : PurchasingProcessError() + data object PurchaseInvalid : PurchasingProcessError() + data class Unexpected(val message: String) : PurchasingProcessError() + } +} diff --git a/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManager.kt b/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManager.kt index 7ad6b4c003..ceb66e2366 100644 --- a/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManager.kt +++ b/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManager.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.purchasing -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt index fbc4707022..f064c9e8a3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt @@ -3,6 +3,7 @@ package io.github.sds100.keymapper.settings import androidx.datastore.preferences.core.Preferences import io.github.sds100.keymapper.actions.sound.SoundFileInfo import io.github.sds100.keymapper.actions.sound.SoundsManager +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.PreferenceRepository @@ -17,7 +18,6 @@ import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt index 6c96e76939..13c61b734f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt @@ -5,12 +5,12 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.result.otherwise import io.github.sds100.keymapper.util.SharedPrefsDataStoreWrapper import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess -import io.github.sds100.keymapper.util.otherwise import io.github.sds100.keymapper.util.ui.DialogResponse import io.github.sds100.keymapper.util.ui.MultiChoiceItem import io.github.sds100.keymapper.util.ui.PopupUi diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapActionsComparator.kt b/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapActionsComparator.kt index 479b5a3922..e8330c09dd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapActionsComparator.kt +++ b/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapActionsComparator.kt @@ -2,10 +2,10 @@ package io.github.sds100.keymapper.sorting.comparators import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.DisplayActionUseCase +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.keymaps.KeyMap -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success -import io.github.sds100.keymapper.util.valueOrNull class KeyMapActionsComparator( private val displayActions: DisplayActionUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapConstraintsComparator.kt b/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapConstraintsComparator.kt index 036e4ec9af..3814c1cf42 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapConstraintsComparator.kt +++ b/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapConstraintsComparator.kt @@ -1,12 +1,12 @@ package io.github.sds100.keymapper.sorting.comparators +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.DisplayConstraintUseCase import io.github.sds100.keymapper.keymaps.KeyMap -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success -import io.github.sds100.keymapper.util.then -import io.github.sds100.keymapper.util.valueOrNull import java.time.LocalDate import java.time.ZoneOffset diff --git a/app/src/main/java/io/github/sds100/keymapper/system/Shell.kt b/app/src/main/java/io/github/sds100/keymapper/system/Shell.kt index 10b043e54d..ff17bd213b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/Shell.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/Shell.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.system +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.system.shell.ShellAdapter -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success import java.io.IOException import java.io.InputStream diff --git a/app/src/main/java/io/github/sds100/keymapper/system/SystemError.kt b/app/src/main/java/io/github/sds100/keymapper/system/SystemError.kt new file mode 100644 index 0000000000..cd9b85191d --- /dev/null +++ b/app/src/main/java/io/github/sds100/keymapper/system/SystemError.kt @@ -0,0 +1,41 @@ +package io.github.sds100.keymapper.system + +import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.system.inputmethod.ImeInfo +import io.github.sds100.keymapper.system.permissions.Permission +import io.github.sds100.keymapper.util.ui.ResourceProvider + +sealed class SystemError : Error() { + data class PermissionDenied(val permission: Permission) : Error() { + companion object { + + fun getMessageForPermission( + resourceProvider: ResourceProvider, + permission: Permission, + ): String { + val resId = when (permission) { + Permission.WRITE_SETTINGS -> R.string.error_action_requires_write_settings_permission + Permission.CAMERA -> R.string.error_action_requires_camera_permission + Permission.DEVICE_ADMIN -> R.string.error_need_to_enable_device_admin + Permission.READ_PHONE_STATE -> R.string.error_action_requires_read_phone_state_permission + Permission.ACCESS_NOTIFICATION_POLICY -> R.string.error_action_notification_policy_permission + Permission.WRITE_SECURE_SETTINGS -> R.string.error_need_write_secure_settings_permission + Permission.NOTIFICATION_LISTENER -> R.string.error_denied_notification_listener_service_permission + Permission.CALL_PHONE -> R.string.error_denied_call_phone_permission + Permission.ROOT -> R.string.error_requires_root + Permission.IGNORE_BATTERY_OPTIMISATION -> R.string.error_battery_optimisation_enabled + Permission.SHIZUKU -> R.string.error_shizuku_permission_denied + Permission.ACCESS_FINE_LOCATION -> R.string.error_access_fine_location_permission_denied + Permission.ANSWER_PHONE_CALL -> R.string.error_answer_end_phone_call_permission_denied + Permission.FIND_NEARBY_DEVICES -> R.string.error_find_nearby_devices_permission_denied + Permission.POST_NOTIFICATIONS -> R.string.error_notifications_permission_denied + } + + return resourceProvider.getString(resId) + } + } + } + + data class ImeDisabled(val ime: ImeInfo) : Error() +} diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt index 55b25836ee..240f751511 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt @@ -11,16 +11,16 @@ import android.os.Looper import android.provider.Settings import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.ServiceLocator +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.ServiceEvent -import io.github.sds100.keymapper.util.Success -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt index 4e45865eb9..8a5b363765 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt @@ -3,8 +3,8 @@ package io.github.sds100.keymapper.system.accessibility import android.os.Build import androidx.annotation.RequiresApi import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.util.InputEventType -import io.github.sds100.keymapper.util.Result import kotlinx.coroutines.flow.Flow /** diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt index 0610083100..af30ad6b49 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt @@ -27,17 +27,17 @@ import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback import io.github.sds100.keymapper.api.KeyEventRelayService import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapperImpl +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.keymaps.FingerprintGestureType import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.Inject import io.github.sds100.keymapper.util.InputEventType import io.github.sds100.keymapper.util.MathUtils -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt index 8eea14db6c..42b2f9aede 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.accessibility -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.util.ServiceEvent import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt index f4ce8d93b6..9688e1cc44 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.airplanemode -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result /** * Created by sds100 on 24/04/2021. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt index 8eaa251118..2943c1533b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt @@ -2,10 +2,10 @@ package io.github.sds100.keymapper.system.airplanemode import android.content.Context import android.provider.Settings +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.onSuccess /** * Created by sds100 on 24/04/2021. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt index 15e070668d..f5eeabf872 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt @@ -14,11 +14,11 @@ import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.graphics.drawable.IconCompat import androidx.core.graphics.drawable.toBitmap import io.github.sds100.keymapper.api.LaunchKeyMapShortcutActivity -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.success import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.Success -import io.github.sds100.keymapper.util.success import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import java.util.UUID diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt index de6061a27c..101416d8a5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt @@ -21,11 +21,11 @@ import android.provider.MediaStore import android.provider.Settings import androidx.core.content.ContextCompat import androidx.core.content.pm.PackageInfoCompat -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.success import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.Success -import io.github.sds100.keymapper.util.success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt index 1e418d5b27..6354f2e924 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt @@ -4,7 +4,7 @@ import android.content.Intent import android.graphics.drawable.Drawable import android.os.Bundle import androidx.core.content.pm.ShortcutInfoCompat -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt index 28b18cfa82..c6e5ec88ba 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt @@ -3,11 +3,11 @@ package io.github.sds100.keymapper.system.apps import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.filterByQuery import io.github.sds100.keymapper.util.ui.IconInfo import io.github.sds100.keymapper.util.ui.TintType -import io.github.sds100.keymapper.util.valueOrNull import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt index cd8c56bbfa..4e4e56fa00 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.filterByQuery import io.github.sds100.keymapper.util.mapData @@ -14,7 +15,6 @@ import io.github.sds100.keymapper.util.ui.PopupViewModel import io.github.sds100.keymapper.util.ui.PopupViewModelImpl import io.github.sds100.keymapper.util.ui.ResourceProvider import io.github.sds100.keymapper.util.ui.showPopup -import io.github.sds100.keymapper.util.valueOrNull import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt index 58bdbba039..90ec4b0af2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt @@ -3,13 +3,13 @@ package io.github.sds100.keymapper.system.apps import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.filterByQuery import io.github.sds100.keymapper.util.mapData import io.github.sds100.keymapper.util.ui.DefaultSimpleListItem import io.github.sds100.keymapper.util.ui.IconInfo import io.github.sds100.keymapper.util.ui.SimpleListItemOld -import io.github.sds100.keymapper.util.valueOrNull import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt index b36cf185b4..d01514daed 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.apps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt index 22abf49a84..4b1c34b6ea 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.apps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt index bc93c32399..ca36ef6a68 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.apps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt index 9c0bd14f65..8d024de07b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt @@ -10,9 +10,9 @@ import android.content.IntentFilter import android.content.pm.PackageManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt index 569e0080fc..f00a03544b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.bluetooth -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow /** diff --git a/app/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt index ca96844989..1fce3b0099 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt @@ -7,9 +7,9 @@ import android.hardware.camera2.CameraManager import android.os.Build import androidx.annotation.RequiresApi import androidx.core.content.getSystemService -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.map diff --git a/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt index 32f6811f56..54d8d08205 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.camera -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow /** diff --git a/app/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt index f593683c97..7adf024ace 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt @@ -7,13 +7,13 @@ import android.hardware.input.InputManager import android.os.Handler import android.view.InputDevice import androidx.core.content.getSystemService +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.Success import io.github.sds100.keymapper.util.ifIsData import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt index fcf399bc75..79f9bfb552 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.devices +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt index 1a9c2bfa98..c83db3d248 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt @@ -9,11 +9,11 @@ import android.provider.Settings import android.view.Surface import androidx.core.content.ContextCompat import androidx.core.content.getSystemService +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.system.SettingsUtils -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.SizeKM -import io.github.sds100.keymapper.util.Success import io.github.sds100.keymapper.util.getRealDisplaySize import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay diff --git a/app/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt index 765797348f..913eaf2a94 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.display -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.util.SizeKM import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt index 0b95792f0d..2afcfb7353 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt @@ -11,9 +11,9 @@ import androidx.core.net.toUri import androidx.documentfile.provider.DocumentFile import com.anggrayudi.storage.file.toDocumentFile import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import net.lingala.zip4j.ZipFile diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt b/app/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt index 5d7c9da6d4..e4b005a859 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt @@ -12,9 +12,9 @@ import com.anggrayudi.storage.file.openInputStream import com.anggrayudi.storage.file.openOutputStream import com.anggrayudi.storage.file.recreateFile import com.anggrayudi.storage.media.FileDescription -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.io.File diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt index 9ad168c2fb..75251435f6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.files -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import java.io.InputStream /** diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt b/app/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt index 55547b9deb..b4bf174a70 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.files -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import java.io.File import java.io.InputStream import java.io.OutputStream diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt index 65b99149e4..d2adc4c135 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt @@ -14,22 +14,23 @@ import android.view.inputmethod.InputMethodManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService import io.github.sds100.keymapper.Constants +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.result.otherwise +import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SettingsUtils +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.accessibility.ServiceState import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.ServiceEvent -import io.github.sds100.keymapper.util.Success -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess -import io.github.sds100.keymapper.util.otherwise -import io.github.sds100.keymapper.util.then -import io.github.sds100.keymapper.util.valueOrNull import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow @@ -203,7 +204,7 @@ class AndroidInputMethodAdapter( override suspend fun chooseImeWithoutUserInput(imeId: String): Result { getInfoById(imeId).onSuccess { if (!it.isEnabled) { - return Error.ImeDisabled(it) + return SystemError.ImeDisabled(it) } }.onFailure { return it diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt index cf1a2dcca1..f597a59ca5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt @@ -1,6 +1,10 @@ package io.github.sds100.keymapper.system.inputmethod import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.result.otherwise import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.PreferenceRepository @@ -10,11 +14,7 @@ import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.popup.PopupMessageAdapter import io.github.sds100.keymapper.util.PrefDelegate import io.github.sds100.keymapper.util.ServiceEvent -import io.github.sds100.keymapper.util.Success import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess -import io.github.sds100.keymapper.util.otherwise import io.github.sds100.keymapper.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.launchIn diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt index 1b0257b4b3..9de28143b9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.inputmethod -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt index e62df2ad11..1ecf34eba6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt @@ -1,13 +1,13 @@ package io.github.sds100.keymapper.system.inputmethod import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.result.suspendThen +import io.github.sds100.keymapper.common.result.then import io.github.sds100.keymapper.util.firstBlocking -import io.github.sds100.keymapper.util.onSuccess -import io.github.sds100.keymapper.util.suspendThen -import io.github.sds100.keymapper.util.then import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt index 86e559f13e..7ad1d6156f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.inputmethod -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow /** diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt index c57191588f..c1e33d0315 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt @@ -2,9 +2,9 @@ package io.github.sds100.keymapper.system.intents import android.content.Context import android.content.Intent -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success /** * Created by sds100 on 21/04/2021. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt index 3886863a38..d1bcad8c4a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt @@ -12,10 +12,10 @@ import android.os.Build import android.view.KeyEvent import androidx.annotation.RequiresApi import androidx.core.content.getSystemService +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt index c0a4858e81..0f76a06308 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt @@ -2,8 +2,8 @@ package io.github.sds100.keymapper.system.media import android.os.Build import androidx.annotation.RequiresApi +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.util.Result import kotlinx.coroutines.flow.Flow /** diff --git a/app/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt b/app/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt index 0864806c2d..5de765a8ea 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt @@ -2,6 +2,8 @@ package io.github.sds100.keymapper.system.navigation import android.view.KeyEvent import androidx.core.view.accessibility.AccessibilityNodeInfoCompat +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.success import io.github.sds100.keymapper.system.accessibility.AccessibilityNodeAction import io.github.sds100.keymapper.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.system.inputevents.InputEventInjector @@ -10,9 +12,7 @@ import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.util.InputEventType -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.firstBlocking -import io.github.sds100.keymapper.util.success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch diff --git a/app/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt index ba05d76cfb..2ed3dec9c1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt @@ -9,10 +9,10 @@ import android.os.Build import android.telephony.TelephonyManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt index e0e6e23210..4db91274d7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.network -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow /** diff --git a/app/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt index 2c4be4c8e8..b8701577a6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt @@ -3,8 +3,8 @@ package io.github.sds100.keymapper.system.nfc import android.content.Context import android.nfc.NfcManager import androidx.core.content.getSystemService +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.util.Result /** * Created by sds100 on 24/04/2021. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt index 68e0286fff..94d39af90f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.nfc -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result /** * Created by sds100 on 24/04/2021. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt index 15005576bb..018a7d5059 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt @@ -6,6 +6,8 @@ import androidx.core.app.NotificationManagerCompat import io.github.sds100.keymapper.BaseMainActivity import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.system.accessibility.ControlAccessibilityServiceUseCase @@ -16,8 +18,6 @@ import io.github.sds100.keymapper.system.inputmethod.ToggleCompatibleImeUseCase import io.github.sds100.keymapper.util.DefaultDispatcherProvider import io.github.sds100.keymapper.util.DispatcherProvider import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess import io.github.sds100.keymapper.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt index 7bde0f7822..595f4dee96 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt @@ -11,14 +11,14 @@ import android.os.Looper import android.provider.Settings import androidx.core.app.NotificationManagerCompat import io.github.sds100.keymapper.Constants +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.system.JobSchedulerHelper +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.accessibility.ServiceState import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.ServiceEvent -import io.github.sds100.keymapper.util.Success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -65,7 +65,7 @@ class NotificationReceiverAdapter( override suspend fun send(event: ServiceEvent): Result<*> { if (state.value != ServiceState.ENABLED) { - return Error.PermissionDenied(Permission.NOTIFICATION_LISTENER) + return SystemError.PermissionDenied(Permission.NOTIFICATION_LISTENER) } coroutineScope.launch { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt index 4b7e63735f..dec2590513 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt @@ -16,19 +16,20 @@ import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat import androidx.core.content.getSystemService import io.github.sds100.keymapper.Constants +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.result.success import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.DeviceAdmin +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.getIdentifier -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess -import io.github.sds100.keymapper.util.success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow @@ -166,7 +167,7 @@ class AndroidPermissionAdapter( Error.Exception(Exception("Failed to grant permission with root. Key Mapper may not actually have root permission.")) } } else { - result = Error.PermissionDenied(Permission.SHIZUKU) + result = SystemError.PermissionDenied(Permission.SHIZUKU) } result.onSuccess { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt b/app/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt index 865b165f81..12289e2081 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt @@ -2,8 +2,8 @@ package io.github.sds100.keymapper.system.permissions import android.Manifest import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.system.popup.PopupMessageAdapter -import io.github.sds100.keymapper.util.onSuccess import io.github.sds100.keymapper.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.combine diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt index 6e6b41ddba..3a7920f374 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.permissions -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow /** diff --git a/app/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt index 81bb1387e8..8cc4aaa45f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt @@ -9,9 +9,9 @@ import android.telecom.TelecomManager import android.telephony.PhoneStateListener import android.telephony.TelephonyManager import androidx.core.content.getSystemService -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch diff --git a/app/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt index dc1f273823..cea51d5526 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.phone -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow /** diff --git a/app/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt index ae036aaa7e..e61e91a869 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt @@ -5,9 +5,9 @@ import android.media.Ringtone import android.media.RingtoneManager import android.os.Build import androidx.core.net.toUri -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success class AndroidRingtoneAdapter(context: Context) : RingtoneAdapter { private val ctx: Context = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt index 7b9db9f99e..29a79f09b7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt @@ -1,12 +1,13 @@ package io.github.sds100.keymapper.system.root +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.Shell +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success import io.github.sds100.keymapper.util.firstBlocking import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.SharingStarted @@ -41,7 +42,7 @@ class SuAdapterImpl( override fun execute(command: String, block: Boolean): Result<*> { if (!isGranted.firstBlocking()) { - return Error.PermissionDenied(Permission.ROOT) + return SystemError.PermissionDenied(Permission.ROOT) } try { @@ -67,7 +68,7 @@ class SuAdapterImpl( override fun getCommandOutput(command: String): Result { if (!isGranted.firstBlocking()) { - return Error.PermissionDenied(Permission.ROOT) + return SystemError.PermissionDenied(Permission.ROOT) } try { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt index 553bc744bd..374b0905c3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.shell -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result /** * Created by sds100 on 21/04/2021. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt b/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt index fa7cdf770f..bb463c5635 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt @@ -12,10 +12,10 @@ import androidx.lifecycle.lifecycleScope import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.UseCases +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess import io.github.sds100.keymapper.util.str import kotlinx.coroutines.flow.first import splitties.toast.toast diff --git a/app/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt index 6109d32e98..c00c3adff2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.url import android.content.Context -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result /** * Created by sds100 on 24/04/2021. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt index a6c01f428d..5daf2eff73 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.url -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result /** * Created by sds100 on 24/04/2021. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt index 472dea054c..62f4935ecc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt @@ -4,9 +4,9 @@ import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import androidx.core.net.toUri -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.success +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.success /** * Created by sds100 on 11/01/21. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt index c1d6105851..c06a10d439 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt @@ -6,11 +6,12 @@ import android.media.AudioManager import android.os.Build import androidx.annotation.RequiresApi import androidx.core.content.getSystemService +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success -import io.github.sds100.keymapper.util.then /** * Created by sds100 on 20/04/2021. @@ -84,7 +85,7 @@ class AndroidVolumeAdapter(context: Context) : VolumeAdapter { return Success(Unit) } catch (e: SecurityException) { - return Error.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) + return SystemError.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) } } @@ -157,7 +158,7 @@ class AndroidVolumeAdapter(context: Context) : VolumeAdapter { return Success(Unit) } catch (e: SecurityException) { - return Error.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) + return SystemError.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) } } } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt index bad515409c..d2fda3059a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.volume -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result /** * Created by sds100 on 20/04/2021. diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt index 21a500ecdc..a05b2de5ec 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt @@ -9,6 +9,9 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.keymaps.ClickType import io.github.sds100.keymapper.keymaps.ConfigKeyMapOptionsViewModel import io.github.sds100.keymapper.keymaps.ConfigKeyMapUseCase @@ -24,13 +27,10 @@ import io.github.sds100.keymapper.purchasing.ProductId import io.github.sds100.keymapper.purchasing.PurchasingManager import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.State import io.github.sds100.keymapper.util.dataOrNull import io.github.sds100.keymapper.util.ifIsData import io.github.sds100.keymapper.util.mapData -import io.github.sds100.keymapper.util.onSuccess import io.github.sds100.keymapper.util.ui.CheckBoxListItem import io.github.sds100.keymapper.util.ui.DialogResponse import io.github.sds100.keymapper.util.ui.LinkType diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerUseCase.kt index a9e5730ca2..431c8e34af 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerUseCase.kt @@ -1,12 +1,12 @@ package io.github.sds100.keymapper.trigger import android.view.KeyEvent +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.keymaps.detection.DpadMotionEventTracker import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyMotionEvent -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardUseCase.kt index 759e3dbff6..5d5a4482fb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardUseCase.kt @@ -1,12 +1,12 @@ package io.github.sds100.keymapper.trigger +import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.system.apps.PackageInfo import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.apps.getPackageInfoFlow import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper -import io.github.sds100.keymapper.util.onSuccess import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/Trigger.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/Trigger.kt index 46d94bf956..3ccb03365f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/Trigger.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/Trigger.kt @@ -1,5 +1,6 @@ package io.github.sds100.keymapper.trigger +import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.data.entities.AssistantTriggerKeyEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.FingerprintTriggerKeyEntity @@ -11,7 +12,6 @@ import io.github.sds100.keymapper.data.entities.getData import io.github.sds100.keymapper.floating.FloatingButtonEntityMapper import io.github.sds100.keymapper.keymaps.ClickType import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.util.valueOrNull import kotlinx.serialization.Serializable import splitties.bitflags.hasFlag import splitties.bitflags.withFlag diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerErrorSnapshot.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerErrorSnapshot.kt index 5aac124b17..7966e10d32 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerErrorSnapshot.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerErrorSnapshot.kt @@ -2,14 +2,14 @@ package io.github.sds100.keymapper.trigger import android.os.Build import android.view.KeyEvent +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.keymaps.KeyMap import io.github.sds100.keymapper.keymaps.requiresImeKeyEventForwardingInPhoneCall import io.github.sds100.keymapper.purchasing.ProductId +import io.github.sds100.keymapper.purchasing.PurchasingError import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.onFailure -import io.github.sds100.keymapper.util.onSuccess /** * Store the data required for determining trigger errors to reduce the number of calls with @@ -39,7 +39,7 @@ data class TriggerErrorSnapshot( return TriggerError.FLOATING_BUTTONS_NOT_PURCHASED } }.onFailure { error -> - if ((key is AssistantTriggerKey || key is FloatingButtonKey) && error == Error.PurchasingError.NetworkError) { + if ((key is AssistantTriggerKey || key is FloatingButtonKey) && error == PurchasingError.PurchasingProcessError.NetworkError) { return TriggerError.PURCHASE_VERIFICATION_FAILED } } diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ErrorUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/ErrorUtils.kt index 8a047e25b0..fa1f3e6c5d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ErrorUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ErrorUtils.kt @@ -2,8 +2,11 @@ package io.github.sds100.keymapper.util import android.content.pm.PackageManager import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.purchasing.ProductId +import io.github.sds100.keymapper.purchasing.PurchasingError import io.github.sds100.keymapper.system.BuildUtils +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.util.ui.ResourceProvider /** @@ -11,8 +14,8 @@ import io.github.sds100.keymapper.util.ui.ResourceProvider */ fun Error.getFullMessage(resourceProvider: ResourceProvider): String = when (this) { - is Error.PermissionDenied -> - Error.PermissionDenied.getMessageForPermission( + is SystemError.PermissionDenied -> + SystemError.PermissionDenied.getMessageForPermission( resourceProvider, permission, ) @@ -98,7 +101,10 @@ fun Error.getFullMessage(resourceProvider: ResourceProvider): String = when (thi setting, ) - is Error.ImeDisabled -> resourceProvider.getString(R.string.error_ime_disabled, this.ime.label) + is SystemError.ImeDisabled -> resourceProvider.getString( + R.string.error_ime_disabled, + this.ime.label, + ) Error.FailedToChangeIme -> resourceProvider.getString(R.string.error_failed_to_change_ime) Error.NoCameraApp -> resourceProvider.getString(R.string.error_no_camera_app) Error.NoDeviceAssistant -> resourceProvider.getString(R.string.error_no_device_assistant) @@ -145,24 +151,25 @@ fun Error.getFullMessage(resourceProvider: ResourceProvider): String = when (thi Error.GestureStrokeCountTooHigh -> resourceProvider.getString(R.string.trigger_error_gesture_stroke_count_too_high) Error.GestureDurationTooHigh -> resourceProvider.getString(R.string.trigger_error_gesture_duration_too_high) - Error.PurchasingError.Cancelled -> resourceProvider.getString(R.string.purchasing_error_cancelled) - Error.PurchasingError.NetworkError -> resourceProvider.getString(R.string.purchasing_error_network) - Error.PurchasingError.ProductNotFound -> resourceProvider.getString(R.string.purchasing_error_product_not_found) - Error.PurchasingError.StoreProblem -> resourceProvider.getString(R.string.purchasing_error_store_problem) - Error.PurchasingError.PaymentPending -> resourceProvider.getString(R.string.purchasing_error_payment_pending) - Error.PurchasingError.PurchaseInvalid -> resourceProvider.getString(R.string.purchasing_error_purchase_invalid) - is Error.PurchasingError.Unexpected -> this.message + PurchasingError.PurchasingProcessError.Cancelled -> resourceProvider.getString(R.string.purchasing_error_cancelled) + PurchasingError.PurchasingProcessError.NetworkError -> resourceProvider.getString(R.string.purchasing_error_network) + PurchasingError.PurchasingProcessError.ProductNotFound -> resourceProvider.getString(R.string.purchasing_error_product_not_found) + PurchasingError.PurchasingProcessError.StoreProblem -> resourceProvider.getString(R.string.purchasing_error_store_problem) + PurchasingError.PurchasingProcessError.PaymentPending -> resourceProvider.getString(R.string.purchasing_error_payment_pending) + PurchasingError.PurchasingProcessError.PurchaseInvalid -> resourceProvider.getString(R.string.purchasing_error_purchase_invalid) + is PurchasingError.PurchasingProcessError.Unexpected -> this.message - is Error.ProductNotPurchased -> when (this.product) { + is PurchasingError.ProductNotPurchased -> when (this.product) { ProductId.ASSISTANT_TRIGGER -> resourceProvider.getString(R.string.purchasing_error_assistant_not_purchased_home_screen) ProductId.FLOATING_BUTTONS -> resourceProvider.getString(R.string.purchasing_error_floating_buttons_not_purchased_home_screen) } - Error.PurchasingNotImplemented -> resourceProvider.getString(R.string.purchasing_error_not_implemented) + PurchasingError.PurchasingNotImplemented -> resourceProvider.getString(R.string.purchasing_error_not_implemented) Error.DpadTriggerImeNotSelected -> resourceProvider.getString(R.string.trigger_error_dpad_ime_not_selected) Error.InvalidBackup -> resourceProvider.getString(R.string.error_invalid_backup) Error.MalformedUrl -> resourceProvider.getString(R.string.error_malformed_url) Error.UiElementNotFound -> resourceProvider.getString(R.string.error_ui_element_not_found) + else -> throw IllegalArgumentException("Unknown error $this") } val Error.isFixable: Boolean @@ -171,10 +178,10 @@ val Error.isFixable: Boolean is Error.AppDisabled, Error.NoCompatibleImeEnabled, Error.NoCompatibleImeChosen, - is Error.ImeDisabled, + is SystemError.ImeDisabled, Error.AccessibilityServiceDisabled, Error.AccessibilityServiceCrashed, - is Error.PermissionDenied, + is SystemError.PermissionDenied, is Error.ShizukuNotStarted, is Error.CantDetectKeyEventsInPhoneCall, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/DialogUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/DialogUtils.kt index f805bde891..69defadc14 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/DialogUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/DialogUtils.kt @@ -14,16 +14,16 @@ import androidx.lifecycle.lifecycleScope import com.google.android.material.textfield.TextInputLayout import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.result.errorOrNull +import io.github.sds100.keymapper.common.result.isSuccess +import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.databinding.DialogEdittextNumberBinding import io.github.sds100.keymapper.databinding.DialogEdittextStringBinding -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success -import io.github.sds100.keymapper.util.errorOrNull import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.isSuccess import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.onSuccess import io.github.sds100.keymapper.util.resumeIfNotCompleted import kotlinx.coroutines.CancellableContinuation import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ViewModelHelper.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/ViewModelHelper.kt index 9ed849da43..d39e8b92f7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ViewModelHelper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/ViewModelHelper.kt @@ -1,8 +1,9 @@ package io.github.sds100.keymapper.util.ui import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.isFixable @@ -166,7 +167,7 @@ object ViewModelHelper { val dialogResponse = popupViewModel.showPopup("fix_dnd_trigger_error", dialog) if (dialogResponse == DialogResponse.POSITIVE) { - val error = Error.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) + val error = SystemError.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) fixError.invoke() } else if (dialogResponse == DialogResponse.NEUTRAL) { neverShowDndTriggerErrorAgain.invoke() diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeChipModel.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeChipModel.kt index cbeaa7db8a..fdbec776bb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeChipModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeChipModel.kt @@ -13,7 +13,7 @@ sealed class ComposeChipModel { data class Error( override val id: String, override val text: String, - val error: io.github.sds100.keymapper.util.Error, + val error: io.github.sds100.keymapper.common.result.Error, val isFixable: Boolean = true, ) : ComposeChipModel() } diff --git a/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt b/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt index 07815d2b57..0a99ff12cb 100644 --- a/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt @@ -8,6 +8,8 @@ import io.github.sds100.keymapper.actions.sound.SoundsManager import io.github.sds100.keymapper.backup.BackupContent import io.github.sds100.keymapper.backup.BackupManagerImpl import io.github.sds100.keymapper.backup.RestoreType +import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.data.db.AppDatabase import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.data.entities.EntityExtra @@ -24,9 +26,7 @@ import io.github.sds100.keymapper.keymaps.KeyMapRepository import io.github.sds100.keymapper.system.files.FakeFileAdapter import io.github.sds100.keymapper.system.files.IFile import io.github.sds100.keymapper.system.files.JavaFile -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.Success import io.github.sds100.keymapper.util.UuidGenerator import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/app/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt b/app/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt index 608de9dcfa..ce793923e7 100644 --- a/app/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt @@ -1,11 +1,11 @@ package io.github.sds100.keymapper.actions import android.view.KeyEvent +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.util.Error import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.first diff --git a/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt b/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt index d2c9df0c1e..906f511012 100644 --- a/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt @@ -2,13 +2,13 @@ package io.github.sds100.keymapper.actions import android.view.InputDevice import android.view.KeyEvent +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.system.devices.FakeDevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.popup.PopupMessageAdapter -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.InputEventType import io.github.sds100.keymapper.util.State import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/app/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt b/app/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt index c068b9cb03..9d71210a07 100644 --- a/app/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt @@ -7,6 +7,7 @@ import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.ActionErrorSnapshot import io.github.sds100.keymapper.actions.PerformActionsUseCase import io.github.sds100.keymapper.actions.RepeatMode +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.constraints.ConstraintSnapshot @@ -26,7 +27,6 @@ import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerKey import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.InputEventType import io.github.sds100.keymapper.util.TestConstraintSnapshot import io.github.sds100.keymapper.util.parallelTrigger diff --git a/app/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt b/app/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt index 021d19bc77..631e7bc33b 100644 --- a/app/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt @@ -5,11 +5,11 @@ import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.ActionErrorSnapshot import io.github.sds100.keymapper.actions.PerformActionsUseCase import io.github.sds100.keymapper.actions.RepeatMode +import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.keymaps.detection.DetectKeyMapsUseCase import io.github.sds100.keymapper.keymaps.detection.TriggerKeyMapFromOtherAppsController import io.github.sds100.keymapper.trigger.Trigger -import io.github.sds100.keymapper.util.Error import io.github.sds100.keymapper.util.TestConstraintSnapshot import junitparams.JUnitParamsRunner import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt b/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt index 0f0979de36..11aad62ed7 100644 --- a/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt +++ b/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.devices +import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.util.Result import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt b/app/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt index 5d652a63aa..67125030db 100644 --- a/app/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt +++ b/app/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.files -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import kotlinx.coroutines.runBlocking import org.junit.rules.TemporaryFolder import java.io.File diff --git a/app/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt b/app/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt index d38a7999aa..9c4c07b233 100644 --- a/app/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt +++ b/app/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system.files import com.anggrayudi.storage.file.recreateFile -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import timber.log.Timber import java.io.File import java.io.InputStream diff --git a/base/build.gradle.kts b/base/build.gradle.kts index c77aaf8bf2..c189582398 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -1,6 +1,6 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) } android { diff --git a/common/.gitignore b/common/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/common/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/common/build.gradle.kts b/common/build.gradle.kts new file mode 100644 index 0000000000..65a65b2f9c --- /dev/null +++ b/common/build.gradle.kts @@ -0,0 +1,35 @@ +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) +} + +android { + namespace = "io.github.sds100.keymapper.common" + compileSdk = libs.versions.compile.sdk.get().toInt() + + defaultConfig { + minSdk = libs.versions.min.sdk.get().toInt() + + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } +} + +dependencies { +} diff --git a/common/consumer-rules.pro b/common/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/common/proguard-rules.pro b/common/proguard-rules.pro new file mode 100644 index 0000000000..481bb43481 --- /dev/null +++ b/common/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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/common/src/main/AndroidManifest.xml b/common/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..44008a4332 --- /dev/null +++ b/common/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/util/Result.kt b/common/src/main/java/io/github/sds100/keymapper/common/result/Result.kt similarity index 63% rename from app/src/main/java/io/github/sds100/keymapper/util/Result.kt rename to common/src/main/java/io/github/sds100/keymapper/common/result/Result.kt index 8fe8251769..37f11c065b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/Result.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/result/Result.kt @@ -1,24 +1,17 @@ -package io.github.sds100.keymapper.util - -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.purchasing.ProductId -import io.github.sds100.keymapper.system.inputmethod.ImeInfo -import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.ui.ResourceProvider - -/** - * Created by sds100 on 26/02/2020. - */ +package io.github.sds100.keymapper.common.result /** * Inspired from @antonyharfield great example! */ +// TODO rename KMResult sealed class Result data class Success(val value: T) : Result() -sealed class Error : Result() { +// TODO move all these errors to their respective packages + +abstract class Error : Result() { data class Exception(val exception: java.lang.Exception) : Error() data class SystemFeatureNotSupported(val feature: String) : Error() data class ExtraNotFound(val extraId: String) : Error() @@ -31,7 +24,6 @@ sealed class Error : Result() { data object NoSettingsApp : Error() data object FrontFlashNotFound : Error() data object BackFlashNotFound : Error() - data class ImeDisabled(val ime: ImeInfo) : Error() data class DeviceNotFound(val descriptor: String) : Error() data object InvalidNumber : Error() data class NumberTooBig(val max: Int) : Error() @@ -57,36 +49,6 @@ sealed class Error : Result() { data object GestureStrokeCountTooHigh : Error() data object GestureDurationTooHigh : Error() - data class PermissionDenied(val permission: Permission) : Error() { - companion object { - - fun getMessageForPermission( - resourceProvider: ResourceProvider, - permission: Permission, - ): String { - val resId = when (permission) { - Permission.WRITE_SETTINGS -> R.string.error_action_requires_write_settings_permission - Permission.CAMERA -> R.string.error_action_requires_camera_permission - Permission.DEVICE_ADMIN -> R.string.error_need_to_enable_device_admin - Permission.READ_PHONE_STATE -> R.string.error_action_requires_read_phone_state_permission - Permission.ACCESS_NOTIFICATION_POLICY -> R.string.error_action_notification_policy_permission - Permission.WRITE_SECURE_SETTINGS -> R.string.error_need_write_secure_settings_permission - Permission.NOTIFICATION_LISTENER -> R.string.error_denied_notification_listener_service_permission - Permission.CALL_PHONE -> R.string.error_denied_call_phone_permission - Permission.ROOT -> R.string.error_requires_root - Permission.IGNORE_BATTERY_OPTIMISATION -> R.string.error_battery_optimisation_enabled - Permission.SHIZUKU -> R.string.error_shizuku_permission_denied - Permission.ACCESS_FINE_LOCATION -> R.string.error_access_fine_location_permission_denied - Permission.ANSWER_PHONE_CALL -> R.string.error_answer_end_phone_call_permission_denied - Permission.FIND_NEARBY_DEVICES -> R.string.error_find_nearby_devices_permission_denied - Permission.POST_NOTIFICATIONS -> R.string.error_notifications_permission_denied - } - - return resourceProvider.getString(resId) - } - } - } - data object FailedToFindAccessibilityNode : Error() data class FailedToPerformAccessibilityGlobalAction(val action: Int) : Error() data object FailedToDispatchGesture : Error() @@ -124,22 +86,6 @@ sealed class Error : Result() { data object ShizukuNotStarted : Error() data object CantDetectKeyEventsInPhoneCall : Error() - // This is returned from the PurchasingManager on FOSS builds that don't - // have the pro features implemented. - data object PurchasingNotImplemented : Error() - - data class ProductNotPurchased(val product: ProductId) : Error() - - sealed class PurchasingError : Error() { - data object ProductNotFound : PurchasingError() - data object Cancelled : PurchasingError() - data object StoreProblem : PurchasingError() - data object NetworkError : PurchasingError() - data object PaymentPending : PurchasingError() - data object PurchaseInvalid : PurchasingError() - data class Unexpected(val message: String) : PurchasingError() - } - /** * DPAD triggers require a Key Mapper keyboard to be selected. */ diff --git a/settings.gradle.kts b/settings.gradle.kts index 123178c4f7..f5dbe883b3 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -27,3 +27,5 @@ include(":app") include(":systemstubs") include(":base") include(":api") +include(":system") +include(":common") diff --git a/system/.gitignore b/system/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/system/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/system/build.gradle.kts b/system/build.gradle.kts new file mode 100644 index 0000000000..359b738bdd --- /dev/null +++ b/system/build.gradle.kts @@ -0,0 +1,40 @@ +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) +} + +android { + namespace = "io.github.sds100.keymapper.system" + compileSdk = libs.versions.compile.sdk.get().toInt() + + defaultConfig { + minSdk = 21 + + minSdk = libs.versions.min.sdk.get().toInt() + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } +} + +dependencies { + + implementation(project(":common")) + + implementation(libs.androidx.core.ktx) + implementation(libs.jakewharton.timber) +} diff --git a/system/consumer-rules.pro b/system/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/system/proguard-rules.pro b/system/proguard-rules.pro new file mode 100644 index 0000000000..481bb43481 --- /dev/null +++ b/system/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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/system/src/main/AndroidManifest.xml b/system/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..44008a4332 --- /dev/null +++ b/system/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt index 6b4fb1ec7b..fa651f12e6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt @@ -10,8 +10,8 @@ import android.os.Build import androidx.annotation.RequiresApi import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.Success +import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.result.Success import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update diff --git a/app/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt similarity index 90% rename from app/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt index ef1ca69e0f..dc59ff4975 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.lock import android.os.Build import androidx.annotation.RequiresApi -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow /** From 30630840cc4ff4b92deaa630be1606e430736fdd Mon Sep 17 00:00:00 2001 From: sds100 Date: Fri, 16 May 2025 18:04:17 +0200 Subject: [PATCH 05/71] #1711 add Hilt library --- app/build.gradle.kts | 56 +++++++++---------- build.gradle.kts | 3 +- gradle/libs.versions.toml | 33 +++++++---- system/build.gradle.kts | 4 ++ .../keymapper/system/SystemHiltModule.kt | 17 ++++++ 5 files changed, 72 insertions(+), 41 deletions(-) create mode 100644 system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d9a7a7eddf..7652d5ea5c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,16 +4,16 @@ import java.io.FileInputStream import java.util.Properties plugins { - alias(libs.plugins.android.application) - alias(libs.plugins.kotlin.android) - alias(libs.plugins.kotlin.compose) - alias(libs.plugins.kotlin.kapt) - alias(libs.plugins.kotlin.serialization) - alias(libs.plugins.kotlin.parcelize) - alias(libs.plugins.androidx.navigation.safeargs.kotlin) - alias(libs.plugins.androidx.room) - alias(libs.plugins.google.devtools.ksp) - alias(libs.plugins.jlleitschuh.gradle.ktlint) + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.compose) + alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.kotlin.parcelize) + alias(libs.plugins.androidx.navigation.safeargs.kotlin) + alias(libs.plugins.androidx.room) + alias(libs.plugins.google.devtools.ksp) + alias(libs.plugins.jlleitschuh.gradle.ktlint) } android { @@ -39,7 +39,7 @@ android { javaCompileOptions { annotationProcessorOptions { - arguments["room.schemaLocation"] = "${projectDir}/schemas" + arguments["room.schemaLocation"] = "$projectDir/schemas" } } } @@ -56,7 +56,10 @@ android { buildTypes { release { isMinifyEnabled = true - proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + ) signingConfig = signingConfigs.getByName("release") } @@ -85,7 +88,10 @@ android { matchingFallbacks.add("debug") applicationIdSuffix = ".ci" versionNameSuffix = "-ci.${versionProperties.getProperty("VERSION_NUM")}" - proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + ) signingConfig = signingConfigs.getByName("debug") // Assuming debug signing for CI } } @@ -138,7 +144,7 @@ android { sourceSets { getByName("androidTest") { - assets.srcDirs(files("${projectDir}/schemas")) + assets.srcDirs(files("$projectDir/schemas")) resources.srcDirs("src/test/resources") } getByName("test") { @@ -169,7 +175,6 @@ dependencies { // kotlin stuff implementation(libs.kotlinx.coroutines.android) - implementation(libs.kotlin.stdlib.jdk8) // Already included by kotlin-android plugin usually, but explicit is fine implementation(libs.kotlinx.serialization.json) // random stuff @@ -177,6 +182,7 @@ dependencies { implementation(libs.kotson) implementation(libs.airbnb.epoxy) implementation(libs.airbnb.epoxy.databinding) + debugImplementation(libs.androidx.ui.tooling) kapt(libs.airbnb.epoxy.processor) implementation(libs.jakewharton.timber) implementation(libs.net.lingala.zip4j) @@ -191,6 +197,8 @@ dependencies { implementation(libs.squareup.okhttp) coreLibraryDesugaring(libs.desugar.jdk.libs) implementation(libs.canopas.introshowcaseview) + implementation(libs.dagger.hilt.android) + ksp(libs.dagger.hilt.android.compiler) // splitties implementation(libs.bundles.splitties) @@ -213,26 +221,19 @@ dependencies { implementation(libs.androidx.viewpager2) implementation(libs.androidx.datastore.preferences) implementation(libs.androidx.core.splashscreen) - implementation(libs.androidx.activity.compose) // Repeated, covered by activity-ktx or compose deps - // implementation(libs.androidx.navigation.compose) // Covered by bundle - // implementation(libs.androidx.navigation.fragment.compose) // Covered by bundle ksp(libs.androidx.room.compiler) - // Compose implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.compose.foundation) implementation(libs.androidx.compose.ui.android) implementation(libs.androidx.compose.material3) implementation(libs.androidx.compose.ui.tooling.preview) - implementation(libs.androidx.compose.material) // material-icons-extended + implementation(libs.androidx.compose.material.icons.extended) implementation(libs.androidx.compose.material3.adaptive) implementation(libs.androidx.compose.material3.adaptive.navigation) implementation(libs.google.accompanist.drawablepainter) - // implementation(libs.androidx.activity.compose) // Already listed - - debugImplementation(libs.androidx.compose.ui.tooling) -// "debug_releaseImplementation"(libs.androidx.compose.ui.tooling) + implementation(libs.androidx.compose.ui.tooling) // debugImplementation(libs.squareup.leakcanary.android) // Keep commented @@ -241,6 +242,7 @@ dependencies { testImplementation(libs.hamcrest.all) testImplementation(libs.androidx.junit.ktx) // androidx.test.ext:junit-ktx testImplementation(libs.androidx.test.core.ktx) + testImplementation(libs.androidx.test.core) testImplementation(libs.robolectric) testImplementation(libs.androidx.arch.core.testing) testImplementation(libs.kotlinx.coroutines.test) @@ -248,14 +250,12 @@ dependencies { testImplementation(libs.mockito.kotlin) testImplementation(libs.mockito.core) testImplementation(libs.mockito.inline) + testDebugImplementation(libs.androidx.fragment.testing) // Dependencies for Android instrumented tests androidTestImplementation(libs.androidx.test.ext.junit) // androidx.test.ext:junit - androidTestImplementation(libs.androidx.arch.core.testing) // Repeated, fine androidTestImplementation(libs.junit) // Repeated, fine androidTestImplementation(libs.androidx.navigation.testing) androidTestImplementation(libs.androidx.room.testing.legacy) androidTestImplementation(libs.mockito.android) - debugImplementation(libs.androidx.fragment.testing) - implementation(libs.androidx.test.core) // Implementation, not testImplementation? Check usage. -} \ No newline at end of file +} diff --git a/build.gradle.kts b/build.gradle.kts index 3aca3f4db9..9e070cd106 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,4 +11,5 @@ plugins { alias(libs.plugins.google.devtools.ksp) apply false alias(libs.plugins.jlleitschuh.gradle.ktlint) apply false alias(libs.plugins.android.library) apply false -} \ No newline at end of file + alias(libs.plugins.dagger.hilt.android) apply false +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3cb5528cf0..4bf0332a42 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,6 +2,7 @@ compile-sdk = "35" min-sdk = "21" build-tools = "35.0.0" +target-sdk = "35" android-gradle-plugin = "8.9.1" androidx-activity = "1.10.1" @@ -25,9 +26,12 @@ androidx-room = "2.7.1" # room_version for dependencies androidx-room-gradle-plugin = "2.6.1" # For plugin androidx-test-core = "1.6.1" androidx-viewpager2 = "1.1.0" -compose-bom = "2025.05.00" + +dagger-hilt-android = "2.56.2" + +compose-bom = "2025.04.01" compose-compiler = "1.5.10" # kotlinCompilerExtensionVersion -coroutines = "1.9.0" + desugar-jdk-libs = "2.1.5" epoxy = "4.6.2" flexbox = "3.0.0" @@ -36,8 +40,11 @@ hiddenapibypass = "4.3" introshowcaseview = "2.0.2" junit = "4.13.2" junit-params = "1.1.1" + kotlin = "2.1.0" kotlin-serialization-json = "1.8.0" +coroutines = "1.9.0" + kotson = "2.5.0" ksp-gradle-plugin = "2.1.0-1.0.28" ktlint-gradle = "12.1.0" @@ -45,24 +52,28 @@ ktlint-gradle = "12.1.0" lingala-zip4j = "2.8.0" lottie-compose = "6.6.3" material = "1.13.0-alpha13" + mflisar-dragselectrecyclerview = "0.3" mockito-android = "4.6.1" mockito-core = "5.15.2" mockito-inline = "5.2.0" mockito-kotlin = "4.0.0" + okhttp = "4.12.0" revenuecat-purchases = "8.17.1" robolectric = "4.14.1" shizuku = "13.1.5" splitties = "3.0.0" storage-anggrayudi = "0.8.1" -target-sdk = "35" timber = "5.0.1" room-testing-legacy = "1.1.1" -espresso-core = "3.6.1" # android.arch.persistence.room:testing +espresso-core = "3.6.1" +ui-tooling = "1.8.1" # android.arch.persistence.room:testing [libraries] # Kotlin +dagger-hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "dagger-hilt-android" } +dagger-hilt-android-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "dagger-hilt-android" } kotlin-stdlib-jdk8 = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutines" } @@ -103,9 +114,9 @@ androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version androidx-viewpager2 = { group = "androidx.viewpager2", name = "viewpager2", version.ref = "androidx-viewpager2" } # Compose -androidx-compose-bom = { group = "androidx.compose", name = "compose-bom-beta", version.ref = "compose-bom" } # Corrected name +androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" } androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" } -androidx-compose-material = { group = "androidx.compose.material", name = "material-icons-extended-android" } # Assuming this is the one meant by material-icons-extended +androidx-compose-material-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended-android" } androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3-android" } androidx-compose-material3-adaptive = { group = "androidx.compose.material3.adaptive", name = "adaptive-android" } androidx-compose-material3-adaptive-navigation = { group = "androidx.compose.material3.adaptive", name = "adaptive-navigation" } @@ -169,11 +180,11 @@ kotlin-gradleplugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-pl kotlin-serialization-gradleplugin = { group = "org.jetbrains.kotlin", name = "kotlin-serialization", version.ref = "kotlin" } ksp-gradleplugin = { group = "com.google.devtools.ksp", name = "com.google.devtools.ksp.gradle.plugin", version.ref = "ksp-gradle-plugin" } navigation-safeargs-gradleplugin = { group = "androidx.navigation", name = "navigation-safe-args-gradle-plugin", version.ref = "androidx-navigation-safeargs-gradle-plugin" } -ktlint-gradleplugin = { group = "org.jlleitschuh.gradle", name = "ktlint-gradle", version.ref = "ktlint-gradle"} +ktlint-gradleplugin = { group = "org.jlleitschuh.gradle", name = "ktlint-gradle", version.ref = "ktlint-gradle" } kotlin-compose-compiler-gradleplugin = { group = "org.jetbrains.kotlin.plugin.compose", name = "org.jetbrains.kotlin.plugin.compose.gradle.plugin", version.ref = "kotlin" } # Using kotlin version for compose plugin as per original setup room-gradleplugin = { group = "androidx.room", name = "androidx.room.gradle.plugin", version.ref = "androidx-room-gradle-plugin" } androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso-core" } - +androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling", version.ref = "ui-tooling" } [plugins] android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" } @@ -187,6 +198,7 @@ kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } android-library = { id = "com.android.library", version.ref = "android-gradle-plugin" } +dagger-hilt-android = { id = "com.google.dagger.hilt.android", version.ref = "dagger-hilt-android" } [bundles] splitties = [ @@ -207,7 +219,4 @@ androidx-navigation = [ "androidx-navigation-ui-ktx", "androidx-navigation-compose", "androidx-navigation-fragment-compose", -] -# Example: if you had common test dependencies -# test-common = ["junit", "kotlinx-coroutines-test", "androidx-arch-core-testing"] -# androidtest-common = ["androidx-test-ext-junit", "androidx-espresso-core"] \ No newline at end of file +] \ No newline at end of file diff --git a/system/build.gradle.kts b/system/build.gradle.kts index 359b738bdd..19d5539b9c 100644 --- a/system/build.gradle.kts +++ b/system/build.gradle.kts @@ -1,6 +1,8 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) + alias(libs.plugins.google.devtools.ksp) + alias(libs.plugins.dagger.hilt.android) } android { @@ -37,4 +39,6 @@ dependencies { implementation(libs.androidx.core.ktx) implementation(libs.jakewharton.timber) + implementation(libs.dagger.hilt.android) + ksp(libs.dagger.hilt.android.compiler) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt b/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt new file mode 100644 index 0000000000..cff9eec430 --- /dev/null +++ b/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt @@ -0,0 +1,17 @@ +package io.github.sds100.keymapper.system + +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import io.github.sds100.keymapper.system.lock.AndroidLockScreenAdapter +import io.github.sds100.keymapper.system.lock.LockScreenAdapter +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +abstract class SystemHiltModule { + @Singleton + @Binds + abstract fun provideLockscreenAdapter(impl: AndroidLockScreenAdapter): LockScreenAdapter +} From e4b1b19d0210e80d4094bbfe6c75f10831a9ea61 Mon Sep 17 00:00:00 2001 From: sds100 Date: Fri, 16 May 2025 18:04:37 +0200 Subject: [PATCH 06/71] style: remove old Created by header comments --- api/src/main/java/io/github/sds100/keymapper/api/Api.kt | 3 --- .../io/github/sds100/keymapper/AppDatabaseMigrationTest.kt | 3 --- .../java/io/github/sds100/keymapper/JsonTestUtils.kt | 3 --- .../sds100/keymapper/keymaps/detection/KeyMapController.kt | 4 ---- app/src/main/aidl/android/hardware/input/IInputManager.aidl | 4 +--- .../java/io/github/sds100/keymapper/ActivityViewModel.kt | 3 --- .../main/java/io/github/sds100/keymapper/BaseMainActivity.kt | 4 ---- app/src/main/java/io/github/sds100/keymapper/Constants.kt | 3 --- app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt | 5 ++--- .../main/java/io/github/sds100/keymapper/ServiceLocator.kt | 4 +--- app/src/main/java/io/github/sds100/keymapper/UseCases.kt | 4 +--- .../java/io/github/sds100/keymapper/about/AboutFragment.kt | 4 ---- .../main/java/io/github/sds100/keymapper/actions/Action.kt | 4 ---- .../io/github/sds100/keymapper/actions/ActionCategory.kt | 3 --- .../sds100/keymapper/actions/ActionDataEntityMapper.kt | 4 ---- .../main/java/io/github/sds100/keymapper/actions/ActionId.kt | 3 --- .../java/io/github/sds100/keymapper/actions/ActionUtils.kt | 4 ---- .../github/sds100/keymapper/actions/ChooseActionViewModel.kt | 3 --- .../sds100/keymapper/actions/ConfigActionsViewModel.kt | 4 ---- .../github/sds100/keymapper/actions/CreateActionDelegate.kt | 4 ---- .../github/sds100/keymapper/actions/CreateActionUseCase.kt | 4 ---- .../github/sds100/keymapper/actions/PerformActionsUseCase.kt | 4 +--- .../java/io/github/sds100/keymapper/actions/RepeatMode.kt | 4 +--- .../io/github/sds100/keymapper/actions/TestActionUseCase.kt | 4 +--- .../keymapper/actions/keyevent/ChooseKeyCodeFragment.kt | 4 ---- .../keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt | 4 ---- .../actions/keyevent/ConfigKeyEventActionFragment.kt | 4 ---- .../actions/keyevent/ConfigKeyEventActionViewModel.kt | 4 ---- .../keymapper/actions/keyevent/ConfigKeyEventUseCase.kt | 4 ---- .../keymapper/actions/sound/ChooseSoundFileFragment.kt | 4 ---- .../sds100/keymapper/actions/sound/ChooseSoundFileUseCase.kt | 4 ---- .../keymapper/actions/sound/ChooseSoundFileViewModel.kt | 3 --- .../github/sds100/keymapper/actions/sound/SoundFileInfo.kt | 4 +--- .../github/sds100/keymapper/actions/sound/SoundsManager.kt | 4 +--- .../keymapper/actions/tapscreen/PickCoordinateImageView.kt | 4 +--- .../keymapper/actions/tapscreen/PickCoordinateResult.kt | 4 +--- .../actions/tapscreen/PickDisplayCoordinateFragment.kt | 4 +--- .../actions/tapscreen/PickDisplayCoordinateViewModel.kt | 4 +--- .../sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt | 4 ---- .../sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt | 4 +--- .../java/io/github/sds100/keymapper/backup/BackupManager.kt | 4 ---- .../sds100/keymapper/backup/BackupRestoreMappingsUseCase.kt | 4 ---- .../keymapper/constraints/ChooseConstraintViewModel.kt | 4 ---- .../keymapper/constraints/ConfigConstraintsViewModel.kt | 4 ---- .../io/github/sds100/keymapper/constraints/Constraint.kt | 4 ---- .../io/github/sds100/keymapper/constraints/ConstraintMode.kt | 3 --- .../sds100/keymapper/constraints/ConstraintSnapshot.kt | 4 ---- .../github/sds100/keymapper/constraints/ConstraintState.kt | 4 ---- .../sds100/keymapper/constraints/ConstraintUiHelper.kt | 4 ---- .../sds100/keymapper/constraints/CreateConstraintUseCase.kt | 4 ---- .../sds100/keymapper/constraints/DetectConstraintsUseCase.kt | 4 ---- app/src/main/java/io/github/sds100/keymapper/data/Keys.kt | 3 --- .../io/github/sds100/keymapper/data/PreferenceDefaults.kt | 4 +--- .../java/io/github/sds100/keymapper/data/db/AppDatabase.kt | 3 --- .../github/sds100/keymapper/data/db/dao/FingerprintMapDao.kt | 4 ---- .../java/io/github/sds100/keymapper/data/db/dao/KeyMapDao.kt | 4 ---- .../io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt | 4 +--- .../data/db/typeconverter/ActionListTypeConverter.kt | 4 ---- .../data/db/typeconverter/ConstraintListTypeConverter.kt | 4 ---- .../data/db/typeconverter/ExtraListTypeConverter.kt | 4 ---- .../db/typeconverter/NodeInteractionTypeSetTypeConverter.kt | 4 +--- .../keymapper/data/db/typeconverter/TriggerTypeConverter.kt | 4 +--- .../io/github/sds100/keymapper/data/entities/ActionEntity.kt | 4 ---- .../sds100/keymapper/data/entities/ConstraintEntity.kt | 4 ---- .../io/github/sds100/keymapper/data/entities/EntityExtra.kt | 4 ---- .../sds100/keymapper/data/entities/FingerprintMapEntity.kt | 4 ---- .../io/github/sds100/keymapper/data/entities/KeyMapEntity.kt | 4 ---- .../github/sds100/keymapper/data/entities/LogEntryEntity.kt | 4 +--- .../github/sds100/keymapper/data/entities/TriggerEntity.kt | 4 +--- .../github/sds100/keymapper/data/migration/JsonMigration.kt | 3 --- .../github/sds100/keymapper/data/migration/Migration1To2.kt | 4 +--- .../github/sds100/keymapper/data/migration/Migration2To3.kt | 4 +--- .../github/sds100/keymapper/data/migration/Migration3To4.kt | 4 +--- .../github/sds100/keymapper/data/migration/Migration4To5.kt | 4 +--- .../github/sds100/keymapper/data/migration/Migration5To6.kt | 4 +--- .../github/sds100/keymapper/data/migration/Migration6To7.kt | 4 +--- .../github/sds100/keymapper/data/migration/MigrationUtils.kt | 4 +--- .../migration/fingerprintmaps/FingerprintMapMigration0To1.kt | 4 ---- .../keymapper/data/repositories/PreferenceRepository.kt | 4 +--- .../sds100/keymapper/data/repositories/RoomLogRepository.kt | 4 +--- app/src/main/java/io/github/sds100/keymapper/home/HomeTab.kt | 3 --- .../java/io/github/sds100/keymapper/home/HomeViewModel.kt | 3 --- .../sds100/keymapper/home/ShowHomeScreenAlertsUseCase.kt | 4 +--- .../java/io/github/sds100/keymapper/keymaps/ClickType.kt | 3 --- .../github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt | 3 --- .../github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt | 4 ---- .../sds100/keymapper/keymaps/CreateKeyMapShortcutActivity.kt | 4 ---- .../sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt | 4 ---- .../keymapper/keymaps/CreateKeyMapShortcutViewModel.kt | 3 --- .../github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt | 4 ---- .../keymapper/keymaps/FingerprintGesturesSupportedUseCase.kt | 3 --- .../main/java/io/github/sds100/keymapper/keymaps/KeyMap.kt | 4 ---- .../io/github/sds100/keymapper/keymaps/KeyMapRepository.kt | 3 --- .../io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt | 3 --- .../github/sds100/keymapper/keymaps/PauseKeyMapsUseCase.kt | 4 +--- .../keymapper/keymaps/detection/DetectKeyMapsUseCase.kt | 4 ---- .../keymaps/detection/DetectScreenOffKeyEventsController.kt | 3 --- .../keymaps/detection/ParallelTriggerActionPerformer.kt | 4 +--- .../keymaps/detection/SequenceTriggerActionPerformer.kt | 4 +--- .../detection/TriggerKeyMapFromOtherAppsController.kt | 4 +--- .../io/github/sds100/keymapper/logging/DisplayLogUseCase.kt | 4 ---- .../github/sds100/keymapper/logging/KeyMapperLoggingTree.kt | 3 --- .../main/java/io/github/sds100/keymapper/logging/LogEntry.kt | 4 +--- .../github/sds100/keymapper/logging/LogEntryEntityMapper.kt | 4 +--- .../io/github/sds100/keymapper/logging/LogEntryListItem.kt | 4 +--- .../java/io/github/sds100/keymapper/logging/LogFragment.kt | 4 +--- .../java/io/github/sds100/keymapper/logging/LogRepository.kt | 4 +--- .../java/io/github/sds100/keymapper/logging/LogSeverity.kt | 4 +--- .../main/java/io/github/sds100/keymapper/logging/LogUtils.kt | 4 +--- .../java/io/github/sds100/keymapper/logging/LogViewModel.kt | 4 +--- .../github/sds100/keymapper/onboarding/OnboardingUseCase.kt | 4 +--- .../keymapper/reroutekeyevents/RerouteKeyEventsController.kt | 4 +--- .../keymapper/reroutekeyevents/RerouteKeyEventsUseCase.kt | 4 +--- .../settings/Android11BugWorkaroundSettingsFragment.kt | 3 --- .../keymapper/settings/AutomaticallyChangeImeSettings.kt | 3 --- .../github/sds100/keymapper/settings/BaseSettingsFragment.kt | 3 --- .../sds100/keymapper/settings/ConfigSettingsUseCase.kt | 3 --- .../keymapper/settings/DefaultOptionsSettingsFragment.kt | 3 --- .../sds100/keymapper/settings/ImePickerSettingsFragment.kt | 3 --- .../github/sds100/keymapper/settings/MainSettingsFragment.kt | 4 +--- .../io/github/sds100/keymapper/settings/SettingsUtils.kt | 4 +--- .../io/github/sds100/keymapper/settings/SettingsViewModel.kt | 4 +--- .../sds100/keymapper/settings/ShizukuSettingsFragment.kt | 4 +--- .../java/io/github/sds100/keymapper/settings/ThemeUtils.kt | 4 +--- .../io/github/sds100/keymapper/shizuku/ShizukuAdapter.kt | 4 +--- .../io/github/sds100/keymapper/shizuku/ShizukuAdapterImpl.kt | 4 +--- .../java/io/github/sds100/keymapper/shizuku/ShizukuUtils.kt | 4 +--- .../sds100/keymapper/system/AndroidSystemFeatureAdapter.kt | 3 --- .../github/sds100/keymapper/system/BootBroadcastReceiver.kt | 4 ---- .../java/io/github/sds100/keymapper/system/BuildUtils.kt | 4 ---- .../java/io/github/sds100/keymapper/system/DeviceAdmin.kt | 4 ---- .../io/github/sds100/keymapper/system/JobSchedulerHelper.kt | 3 --- .../java/io/github/sds100/keymapper/system/SettingsUtils.kt | 4 +--- app/src/main/java/io/github/sds100/keymapper/system/Shell.kt | 4 +--- .../system/accessibility/AccessibilityNodeAction.kt | 3 --- .../keymapper/system/accessibility/AccessibilityNodeModel.kt | 3 --- .../system/accessibility/AccessibilityServiceAdapter.kt | 3 --- .../keymapper/system/accessibility/AccessibilityUtils.kt | 4 ---- .../accessibility/BaseAccessibilityServiceController.kt | 3 --- .../accessibility/ControlAccessibilityServiceUseCase.kt | 4 ---- .../keymapper/system/accessibility/IAccessibilityService.kt | 3 --- .../keymapper/system/accessibility/MyAccessibilityService.kt | 4 +--- .../accessibility/ObserveEnabledAccessibilityServicesJob.kt | 4 +--- .../sds100/keymapper/system/accessibility/ServiceAdapter.kt | 4 +--- .../sds100/keymapper/system/accessibility/ServiceState.kt | 4 +--- .../keymapper/system/airplanemode/AirplaneModeAdapter.kt | 3 --- .../system/airplanemode/AndroidAirplaneModeAdapter.kt | 3 --- .../io/github/sds100/keymapper/system/apps/ActivityInfo.kt | 4 ---- .../keymapper/system/apps/AndroidAppShortcutAdapter.kt | 3 --- .../keymapper/system/apps/AndroidPackageManagerAdapter.kt | 3 --- .../sds100/keymapper/system/apps/AppActivityListItem.kt | 3 --- .../sds100/keymapper/system/apps/AppShortcutAdapter.kt | 4 ---- .../github/sds100/keymapper/system/apps/AppShortcutInfo.kt | 3 --- .../sds100/keymapper/system/apps/AppShortcutListItem.kt | 4 ---- .../sds100/keymapper/system/apps/ChooseActivityFragment.kt | 3 --- .../sds100/keymapper/system/apps/ChooseActivityViewModel.kt | 3 --- .../github/sds100/keymapper/system/apps/ChooseAppFragment.kt | 3 --- .../keymapper/system/apps/ChooseAppShortcutFragment.kt | 4 ---- .../sds100/keymapper/system/apps/ChooseAppShortcutResult.kt | 3 --- .../keymapper/system/apps/ChooseAppShortcutViewModel.kt | 3 --- .../sds100/keymapper/system/apps/ChooseAppViewModel.kt | 4 ---- .../keymapper/system/apps/DisplayAppShortcutsUseCase.kt | 4 ---- .../sds100/keymapper/system/apps/DisplayAppsUseCase.kt | 4 ---- .../io/github/sds100/keymapper/system/apps/PackageInfo.kt | 4 +--- .../sds100/keymapper/system/apps/PackageManagerAdapter.kt | 4 +--- .../keymapper/system/bluetooth/AndroidBluetoothAdapter.kt | 4 ---- .../sds100/keymapper/system/bluetooth/BluetoothAdapter.kt | 3 --- .../keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt | 4 ---- .../sds100/keymapper/system/bluetooth/BluetoothDeviceInfo.kt | 3 --- .../system/bluetooth/ChooseBluetoothDeviceFragment.kt | 3 --- .../system/bluetooth/ChooseBluetoothDeviceUseCase.kt | 4 ---- .../system/bluetooth/ChooseBluetoothDeviceViewModel.kt | 3 --- .../sds100/keymapper/system/camera/AndroidCameraAdapter.kt | 3 --- .../github/sds100/keymapper/system/camera/CameraAdapter.kt | 3 --- .../io/github/sds100/keymapper/system/camera/CameraLens.kt | 3 --- .../github/sds100/keymapper/system/camera/CameraLensUtils.kt | 3 --- .../keymapper/system/clipboard/AndroidClipboardAdapter.kt | 3 --- .../sds100/keymapper/system/clipboard/ClipboardAdapter.kt | 3 --- .../sds100/keymapper/system/devices/AndroidDevicesAdapter.kt | 3 --- .../github/sds100/keymapper/system/devices/DevicesAdapter.kt | 3 --- .../sds100/keymapper/system/devices/InputDeviceInfo.kt | 4 ---- .../sds100/keymapper/system/devices/InputDeviceUtils.kt | 4 ---- .../sds100/keymapper/system/display/AndroidDisplayAdapter.kt | 3 --- .../io/github/sds100/keymapper/system/display/Orientation.kt | 4 +--- .../sds100/keymapper/system/display/OrientationUtils.kt | 4 +--- .../sds100/keymapper/system/files/AndroidFileAdapter.kt | 3 --- .../sds100/keymapper/system/files/DocumentFileWrapper.kt | 3 --- .../io/github/sds100/keymapper/system/files/FileAdapter.kt | 3 --- .../io/github/sds100/keymapper/system/files/FileUtils.kt | 4 ---- .../java/io/github/sds100/keymapper/system/files/IFile.kt | 3 --- .../sds100/keymapper/system/inputevents/InputEventUtils.kt | 3 --- .../system/inputmethod/AndroidInputMethodAdapter.kt | 4 ---- .../keymapper/system/inputmethod/AutoSwitchImeController.kt | 3 --- .../io/github/sds100/keymapper/system/inputmethod/ImeInfo.kt | 3 --- .../keymapper/system/inputmethod/ImeInputEventInjector.kt | 4 ---- .../sds100/keymapper/system/inputmethod/InputKeyModel.kt | 3 --- .../keymapper/system/inputmethod/InputMethodAdapter.kt | 3 --- .../keymapper/system/inputmethod/KeyMapperImeHelper.kt | 4 ---- .../keymapper/system/inputmethod/KeyMapperImeService.kt | 4 ---- .../keymapper/system/inputmethod/ObserveInputMethodsJob.kt | 4 +--- .../system/inputmethod/ShowHideInputMethodUseCase.kt | 4 +--- .../system/inputmethod/ShowInputMethodPickerUseCase.kt | 4 +--- .../system/inputmethod/ToggleCompatibleImeUseCase.kt | 4 +--- .../sds100/keymapper/system/intents/ConfigIntentFragment.kt | 4 ---- .../sds100/keymapper/system/intents/ConfigIntentResult.kt | 4 ---- .../sds100/keymapper/system/intents/ConfigIntentViewModel.kt | 4 ---- .../github/sds100/keymapper/system/intents/IntentAdapter.kt | 4 ---- .../sds100/keymapper/system/intents/IntentExtraListItem.kt | 4 ---- .../sds100/keymapper/system/intents/IntentExtraModel.kt | 3 --- .../sds100/keymapper/system/intents/IntentExtraType.kt | 4 ---- .../github/sds100/keymapper/system/intents/IntentTarget.kt | 3 --- .../sds100/keymapper/system/leanback/LeanbackAdapter.kt | 4 ---- .../github/sds100/keymapper/system/leanback/LeanbackUtils.kt | 3 --- .../sds100/keymapper/system/media/AndroidMediaAdapter.kt | 3 --- .../io/github/sds100/keymapper/system/media/MediaAdapter.kt | 4 +--- .../sds100/keymapper/system/navigation/OpenMenuHelper.kt | 4 +--- .../sds100/keymapper/system/network/AndroidNetworkAdapter.kt | 3 --- .../github/sds100/keymapper/system/network/NetworkAdapter.kt | 4 +--- .../github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt | 3 --- .../java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt | 4 +--- .../system/notifications/AndroidNotificationAdapter.kt | 3 --- .../system/notifications/ManageNotificationsUseCase.kt | 4 +--- .../keymapper/system/notifications/NotificationAdapter.kt | 4 +--- .../system/notifications/NotificationChannelModel.kt | 4 +--- .../system/notifications/NotificationClickReceiver.kt | 4 +--- .../keymapper/system/notifications/NotificationController.kt | 4 +--- .../keymapper/system/notifications/NotificationModel.kt | 4 +--- .../keymapper/system/notifications/NotificationReceiver.kt | 4 +--- .../system/notifications/NotificationReceiverAdapter.kt | 4 +--- .../keymapper/system/notifications/NotificationUtils.kt | 4 +--- .../system/notifications/ObserveNotificationListenersJob.kt | 4 +--- .../keymapper/system/permissions/AndroidPermissionAdapter.kt | 3 --- .../system/permissions/AutoGrantPermissionController.kt | 3 --- .../github/sds100/keymapper/system/permissions/Permission.kt | 4 +--- .../sds100/keymapper/system/permissions/PermissionAdapter.kt | 4 +--- .../system/permissions/RequestPermissionDelegate.kt | 4 +--- .../keymapper/system/permissions/SystemFeatureAdapter.kt | 4 +--- .../sds100/keymapper/system/phone/AndroidPhoneAdapter.kt | 3 --- .../io/github/sds100/keymapper/system/phone/CallState.kt | 3 --- .../io/github/sds100/keymapper/system/phone/PhoneAdapter.kt | 4 +--- .../sds100/keymapper/system/popup/AndroidToastAdapter.kt | 3 --- .../sds100/keymapper/system/popup/PopupMessageAdapter.kt | 4 +--- .../io/github/sds100/keymapper/system/power/PowerAdapter.kt | 4 +--- .../java/io/github/sds100/keymapper/system/root/SuAdapter.kt | 4 +--- .../io/github/sds100/keymapper/system/shell/ShellAdapter.kt | 4 +--- .../keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt | 4 +--- .../sds100/keymapper/system/tiles/ToggleMappingsTile.kt | 4 +--- .../sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt | 3 --- .../io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt | 4 +--- .../java/io/github/sds100/keymapper/system/url/UrlUtils.kt | 4 +--- .../keymapper/system/vibrator/AndroidVibratorAdapter.kt | 3 --- .../sds100/keymapper/system/vibrator/VibratorAdapter.kt | 4 +--- .../sds100/keymapper/system/volume/AndroidVolumeAdapter.kt | 3 --- .../java/io/github/sds100/keymapper/system/volume/DndMode.kt | 4 ---- .../io/github/sds100/keymapper/system/volume/DndModeUtils.kt | 3 --- .../io/github/sds100/keymapper/system/volume/RingerMode.kt | 4 +--- .../github/sds100/keymapper/system/volume/RingerModeUtils.kt | 4 +--- .../github/sds100/keymapper/system/volume/VolumeAdapter.kt | 4 +--- .../io/github/sds100/keymapper/system/volume/VolumeStream.kt | 4 +--- .../sds100/keymapper/system/volume/VolumeStreamUtils.kt | 4 +--- .../sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt | 4 ---- .../sds100/keymapper/trigger/ChooseTriggerKeyDeviceModel.kt | 3 --- .../io/github/sds100/keymapper/trigger/RecordTriggerState.kt | 4 +--- .../github/sds100/keymapper/trigger/RecordTriggerUseCase.kt | 4 +--- .../java/io/github/sds100/keymapper/trigger/RecordedKey.kt | 4 +--- .../main/java/io/github/sds100/keymapper/trigger/Trigger.kt | 4 +--- .../java/io/github/sds100/keymapper/trigger/TriggerError.kt | 4 +--- .../io/github/sds100/keymapper/trigger/TriggerKeyDevice.kt | 4 +--- .../java/io/github/sds100/keymapper/trigger/TriggerMode.kt | 4 +--- .../main/java/io/github/sds100/keymapper/util/BundleUtils.kt | 4 ---- .../java/io/github/sds100/keymapper/util/CoroutineUtils.kt | 4 ---- .../io/github/sds100/keymapper/util/DispatcherProvider.kt | 4 ---- .../main/java/io/github/sds100/keymapper/util/ErrorUtils.kt | 4 ---- .../main/java/io/github/sds100/keymapper/util/FilterUtils.kt | 4 ---- app/src/main/java/io/github/sds100/keymapper/util/Inject.kt | 4 ---- .../java/io/github/sds100/keymapper/util/InputEventType.kt | 3 --- .../main/java/io/github/sds100/keymapper/util/ListUtils.kt | 4 ---- .../java/io/github/sds100/keymapper/util/LoggingUtils.kt | 4 +--- .../main/java/io/github/sds100/keymapper/util/MapUtils.kt | 4 +--- .../io/github/sds100/keymapper/util/PreferenceDelegate.kt | 4 +--- .../sds100/keymapper/util/SharedPrefsDataStoreWrapper.kt | 4 +--- app/src/main/java/io/github/sds100/keymapper/util/State.kt | 4 +--- .../main/java/io/github/sds100/keymapper/util/StringUtils.kt | 4 +--- .../java/io/github/sds100/keymapper/util/UserHandleUtils.kt | 4 +--- .../java/io/github/sds100/keymapper/util/UuidGenerator.kt | 4 +--- .../java/io/github/sds100/keymapper/util/VersionHelper.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/BindingAdapters.kt | 4 ---- .../github/sds100/keymapper/util/ui/ChooseAppStoreModel.kt | 3 --- .../github/sds100/keymapper/util/ui/DefaultSimpleListItem.kt | 3 --- .../java/io/github/sds100/keymapper/util/ui/DialogUtils.kt | 4 ---- .../sds100/keymapper/util/ui/EpoxyRecyclerViewModelHelper.kt | 4 ---- .../java/io/github/sds100/keymapper/util/ui/ISearchable.kt | 3 --- .../main/java/io/github/sds100/keymapper/util/ui/IconInfo.kt | 3 --- .../io/github/sds100/keymapper/util/ui/MultiChoiceItem.kt | 4 +--- .../github/sds100/keymapper/util/ui/MultiSelectProvider.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/NavDestination.kt | 4 +--- .../java/io/github/sds100/keymapper/util/ui/NavResult.kt | 4 +--- .../java/io/github/sds100/keymapper/util/ui/NavigateEvent.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/NavigationUtils.kt | 4 +--- .../github/sds100/keymapper/util/ui/NavigationViewModel.kt | 4 +--- .../github/sds100/keymapper/util/ui/OnPopupResponseEvent.kt | 4 +--- .../main/java/io/github/sds100/keymapper/util/ui/PopupUi.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/PopupViewModel.kt | 4 +--- .../sds100/keymapper/util/ui/RadioButtonPairListItem.kt | 4 +--- .../sds100/keymapper/util/ui/RadioButtonTripleListItem.kt | 4 +--- .../github/sds100/keymapper/util/ui/RecyclerViewFragment.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/RecyclerViewUtils.kt | 4 +--- .../java/io/github/sds100/keymapper/util/ui/ResourceExt.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/ResourceProvider.kt | 4 +--- .../github/sds100/keymapper/util/ui/SectionHeaderListItem.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/SelectionState.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/ShowPopupEvent.kt | 4 +--- .../sds100/keymapper/util/ui/SimpleRecyclerViewFragment.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/SliderMaximums.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/SliderMinimums.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/SliderStepSizes.kt | 4 +--- .../java/io/github/sds100/keymapper/util/ui/SnackBarUtils.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/SquareImageButton.kt | 4 +--- .../java/io/github/sds100/keymapper/util/ui/TextListItem.kt | 4 +--- .../main/java/io/github/sds100/keymapper/util/ui/TintType.kt | 4 +--- .../io/github/sds100/keymapper/util/ui/ViewModelHelper.kt | 4 +--- .../java/io/github/sds100/keymapper/BackupManagerTest.kt | 4 ---- .../io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt | 4 ---- .../io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt | 4 ---- .../sds100/keymapper/LegacyFingerprintMapMigrationTest.kt | 4 ---- .../io/github/sds100/keymapper/TestDispatcherProvider.kt | 4 +--- .../test/java/io/github/sds100/keymapper/TestLoggingTree.kt | 4 +--- .../sds100/keymapper/actions/GetActionFailedUseCaseTest.kt | 4 ---- .../sds100/keymapper/actions/PerformActionsUseCaseTest.kt | 4 +--- .../keyevents/ConfigKeyServiceEventActionViewModelTest.kt | 4 ---- .../keymapper/data/repositories/FakePreferenceRepository.kt | 3 --- .../keymapper/data/repositories/KeyMapRepositoryTest.kt | 4 ---- .../sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt | 4 ---- .../github/sds100/keymapper/keymaps/KeyMapControllerTest.kt | 4 ---- .../keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt | 4 +--- .../sds100/keymapper/system/devices/FakeDevicesAdapter.kt | 3 --- .../github/sds100/keymapper/system/files/FakeFileAdapter.kt | 3 --- .../java/io/github/sds100/keymapper/system/files/JavaFile.kt | 3 --- .../keymapper/system/intents/ConfigIntentViewModelTest.kt | 3 --- .../test/java/io/github/sds100/keymapper/util/FlowUtils.kt | 3 --- .../java/io/github/sds100/keymapper/util/JsonTestUtils.kt | 3 --- .../test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt | 4 ---- .../github/sds100/keymapper/util/ui/FakeResourceProvider.kt | 3 --- .../sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt | 3 --- .../github/sds100/keymapper/system/lock/LockScreenAdapter.kt | 4 +--- 345 files changed, 150 insertions(+), 1131 deletions(-) diff --git a/api/src/main/java/io/github/sds100/keymapper/api/Api.kt b/api/src/main/java/io/github/sds100/keymapper/api/Api.kt index e14b0c974b..3c51a8126f 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/Api.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/Api.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.api -/** - * Created by sds100 on 17/06/2021. - */ object Api { // Do not use the package name for debug/ci builds const val ACTION_TRIGGER_KEYMAP_BY_UID = diff --git a/app/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt b/app/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt index 83dc9f3ce9..0011ad298c 100644 --- a/app/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt +++ b/app/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt @@ -28,9 +28,6 @@ import org.junit.runner.RunWith import java.io.File import java.io.IOException -/** - * Created by sds100 on 05/06/20. - */ @ExperimentalCoroutinesApi @RunWith(AndroidJUnit4::class) class AppDatabaseMigrationTest { diff --git a/app/src/androidTest/java/io/github/sds100/keymapper/JsonTestUtils.kt b/app/src/androidTest/java/io/github/sds100/keymapper/JsonTestUtils.kt index d79454b9df..da16085363 100644 --- a/app/src/androidTest/java/io/github/sds100/keymapper/JsonTestUtils.kt +++ b/app/src/androidTest/java/io/github/sds100/keymapper/JsonTestUtils.kt @@ -11,9 +11,6 @@ import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.core.Is.`is` import org.junit.Assert -/** - * Created by sds100 on 25/01/21. - */ object JsonTestUtils { private const val NAME_SEPARATOR = '/' diff --git a/app/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt b/app/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt index 5857156523..16bd420026 100644 --- a/app/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt +++ b/app/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt @@ -39,10 +39,6 @@ import kotlinx.coroutines.launch import splitties.bitflags.minusFlag import splitties.bitflags.withFlag -/** - * Created by sds100 on 05/05/2020. - */ - class KeyMapController( private val coroutineScope: CoroutineScope, private val useCase: DetectKeyMapsUseCase, diff --git a/app/src/main/aidl/android/hardware/input/IInputManager.aidl b/app/src/main/aidl/android/hardware/input/IInputManager.aidl index d724bd19d0..0cbe5f383d 100644 --- a/app/src/main/aidl/android/hardware/input/IInputManager.aidl +++ b/app/src/main/aidl/android/hardware/input/IInputManager.aidl @@ -1,8 +1,6 @@ package android.hardware.input; -/** - * Created by sds100 on 15/07/2021. - */ + interface IInputManager { boolean injectInputEvent(in InputEvent event, int mode); } \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/ActivityViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/ActivityViewModel.kt index 8fefdddbe4..3df3d58dbe 100644 --- a/app/src/main/java/io/github/sds100/keymapper/ActivityViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/ActivityViewModel.kt @@ -11,9 +11,6 @@ import io.github.sds100.keymapper.util.ui.ResourceProvider import io.github.sds100.keymapper.util.ui.ViewModelHelper import kotlinx.coroutines.launch -/** - * Created by sds100 on 23/07/2021. - */ class ActivityViewModel( resourceProvider: ResourceProvider, ) : ViewModel(), diff --git a/app/src/main/java/io/github/sds100/keymapper/BaseMainActivity.kt b/app/src/main/java/io/github/sds100/keymapper/BaseMainActivity.kt index 8aed150c4f..361c6407d6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/BaseMainActivity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/BaseMainActivity.kt @@ -43,10 +43,6 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import timber.log.Timber -/** - * Created by sds100 on 19/02/2020. - */ - abstract class BaseMainActivity : AppCompatActivity() { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/Constants.kt b/app/src/main/java/io/github/sds100/keymapper/Constants.kt index 7ba1f736d8..e4598313a1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/Constants.kt +++ b/app/src/main/java/io/github/sds100/keymapper/Constants.kt @@ -2,9 +2,6 @@ package io.github.sds100.keymapper import android.os.Build -/** - * Created by sds100 on 22/11/2018. - */ object Constants { const val MIN_API = Build.VERSION_CODES.LOLLIPOP const val MAX_API = 1000 diff --git a/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt b/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt index 5519d434ce..e52c53b63b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt +++ b/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.OnLifecycleEvent import androidx.lifecycle.ProcessLifecycleOwner import androidx.multidex.MultiDexApplication +import dagger.hilt.android.HiltAndroidApp import io.github.sds100.keymapper.actions.uielement.InteractUiElementController import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.entities.LogEntryEntity @@ -67,10 +68,8 @@ import splitties.toast.toast import timber.log.Timber import java.util.Calendar -/** - * Created by sds100 on 19/05/2020. - */ @SuppressLint("LogNotTimber") +@HiltAndroidApp class KeyMapperApp : MultiDexApplication() { private val tag = KeyMapperApp::class.simpleName diff --git a/app/src/main/java/io/github/sds100/keymapper/ServiceLocator.kt b/app/src/main/java/io/github/sds100/keymapper/ServiceLocator.kt index 030d056d9a..1ea9043b63 100755 --- a/app/src/main/java/io/github/sds100/keymapper/ServiceLocator.kt +++ b/app/src/main/java/io/github/sds100/keymapper/ServiceLocator.kt @@ -57,9 +57,7 @@ import io.github.sds100.keymapper.system.volume.VolumeAdapter import io.github.sds100.keymapper.util.ui.ResourceProviderImpl import kotlinx.coroutines.CoroutineScope -/** - * Created by sds100 on 17/05/2020. - */ + object ServiceLocator { private var database: AppDatabase? = null diff --git a/app/src/main/java/io/github/sds100/keymapper/UseCases.kt b/app/src/main/java/io/github/sds100/keymapper/UseCases.kt index d57d0bf37b..a14324758c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/UseCases.kt +++ b/app/src/main/java/io/github/sds100/keymapper/UseCases.kt @@ -33,9 +33,7 @@ import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCas import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCaseImpl import io.github.sds100.keymapper.system.inputmethod.ToggleCompatibleImeUseCaseImpl -/** - * Created by sds100 on 03/03/2021. - */ + object UseCases { fun listFloatingLayouts(ctx: Context): ListFloatingLayoutsUseCase = ListFloatingLayoutsUseCaseImpl( diff --git a/app/src/main/java/io/github/sds100/keymapper/about/AboutFragment.kt b/app/src/main/java/io/github/sds100/keymapper/about/AboutFragment.kt index 7c994503ae..de216c04c9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/about/AboutFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/about/AboutFragment.kt @@ -13,10 +13,6 @@ import androidx.navigation.fragment.findNavController import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.databinding.FragmentAboutBinding -/** - * Created by sds100 on 05/04/2020. - */ - class AboutFragment : Fragment() { /** diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/Action.kt b/app/src/main/java/io/github/sds100/keymapper/actions/Action.kt index 14228790f3..5b336d6e19 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/Action.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/Action.kt @@ -12,10 +12,6 @@ import splitties.bitflags.hasFlag import splitties.bitflags.withFlag import java.util.UUID -/** - * Created by sds100 on 09/03/2021. - */ - @Serializable data class Action( val uid: String = UUID.randomUUID().toString(), diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionCategory.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ActionCategory.kt index c6dfed43a6..fbca0aa770 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionCategory.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ActionCategory.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.actions -/** - * Created by sds100 on 23/03/2021. - */ enum class ActionCategory { APPS, INPUT, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionDataEntityMapper.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ActionDataEntityMapper.kt index 30ed295361..8e8068eaba 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionDataEntityMapper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ActionDataEntityMapper.kt @@ -25,10 +25,6 @@ import io.github.sds100.keymapper.util.getKey import kotlinx.serialization.json.Json import splitties.bitflags.hasFlag -/** - * Created by sds100 on 13/03/2021. - */ - object ActionDataEntityMapper { fun fromEntity(entity: ActionEntity): ActionData? { diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionId.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ActionId.kt index 80840e9949..22301f792a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionId.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ActionId.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.actions -/** - * Created by sds100 on 15/03/2021. - */ enum class ActionId { APP, APP_SHORTCUT, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionUtils.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ActionUtils.kt index f7833f70f0..48fd9184a9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ActionUtils.kt @@ -84,10 +84,6 @@ import io.github.sds100.keymapper.util.ui.compose.icons.TextSelectEnd import io.github.sds100.keymapper.util.ui.compose.icons.TopPanelClose import io.github.sds100.keymapper.util.ui.compose.icons.TopPanelOpen -/** - * Created by sds100 on 16/03/2021. - */ - object ActionUtils { @StringRes diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt index 24c194fb1b..2ffd0549b4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt @@ -31,9 +31,6 @@ import kotlinx.coroutines.flow.shareIn import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -/** - * Created by sds100 on 22/07/2021. - */ class ChooseActionViewModel( private val useCase: CreateActionUseCase, resourceProvider: ResourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt index c4f701f70e..cbe1ac5741 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt @@ -42,10 +42,6 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -/** - * Created by sds100 on 22/11/20. - */ - class ConfigActionsViewModel( private val coroutineScope: CoroutineScope, private val displayAction: DisplayActionUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionDelegate.kt b/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionDelegate.kt index e034b3e9f8..edb1e9d384 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionDelegate.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionDelegate.kt @@ -35,10 +35,6 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -/** - * Created by sds100 on 26/07/2021. - */ - class CreateActionDelegate( private val coroutineScope: CoroutineScope, private val useCase: CreateActionUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionUseCase.kt index 37ddcecac2..35651657ab 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionUseCase.kt @@ -11,10 +11,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.merge -/** - * Created by sds100 on 25/07/2021. - */ - class CreateActionUseCaseImpl( private val inputMethodAdapter: InputMethodAdapter, private val systemFeatureAdapter: SystemFeatureAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt index 1da9535b47..62901d4b80 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt @@ -74,9 +74,7 @@ import kotlinx.coroutines.flow.stateIn import splitties.bitflags.withFlag import timber.log.Timber -/** - * Created by sds100 on 14/02/21. - */ + class PerformActionsUseCaseImpl( private val coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/RepeatMode.kt b/app/src/main/java/io/github/sds100/keymapper/actions/RepeatMode.kt index 5a6abc9631..bcc75011bb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/RepeatMode.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/RepeatMode.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.actions -/** - * Created by sds100 on 15/05/2021. - */ + enum class RepeatMode { TRIGGER_RELEASED, LIMIT_REACHED, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/TestActionUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/TestActionUseCase.kt index 950df1a538..e6057409cd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/TestActionUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/TestActionUseCase.kt @@ -4,9 +4,7 @@ import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.util.ServiceEvent -/** - * Created by sds100 on 20/02/2021. - */ + class TestActionUseCaseImpl( private val serviceAdapter: ServiceAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeFragment.kt b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeFragment.kt index 06ef9ba635..9c5670f308 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeFragment.kt @@ -15,10 +15,6 @@ import io.github.sds100.keymapper.util.ui.SimpleRecyclerViewFragment import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest -/** - * Created by sds100 on 30/03/2020. - */ - class ChooseKeyCodeFragment : SimpleRecyclerViewFragment() { companion object { const val EXTRA_KEYCODE = "extra_keycode" diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt index d6eed56979..b68fb04f38 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -20,10 +20,6 @@ import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -/** - * Created by sds100 on 31/03/2020. - */ - class ChooseKeyCodeViewModel : ViewModel() { val searchQuery = MutableStateFlow(null) diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionFragment.kt b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionFragment.kt index 1f6dfcf81d..8e90126e0d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionFragment.kt @@ -27,10 +27,6 @@ import io.github.sds100.keymapper.util.ui.setupNavigation import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json -/** - * Created by sds100 on 30/03/2020. - */ - class ConfigKeyEventActionFragment : Fragment() { companion object { const val EXTRA_RESULT = "extra_result" diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt index 5904a1d3d6..268a22c958 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -38,10 +38,6 @@ import splitties.bitflags.hasFlag import splitties.bitflags.minusFlag import splitties.bitflags.withFlag -/** - * Created by sds100 on 30/03/2020. - */ - class ConfigKeyEventActionViewModel( private val useCase: ConfigKeyEventUseCase, resourceProvider: ResourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventUseCase.kt index a5c13e898a..20a1033e1b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventUseCase.kt @@ -8,10 +8,6 @@ import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map -/** - * Created by sds100 on 01/05/2021. - */ - class ConfigKeyEventUseCaseImpl( private val preferenceRepository: PreferenceRepository, private val devicesAdapter: DevicesAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileFragment.kt b/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileFragment.kt index 9584e52bd0..4c4a717cab 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileFragment.kt @@ -32,10 +32,6 @@ import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.update import kotlinx.serialization.json.Json -/** - * Created by sds100 on 22/06/2021. - */ - class ChooseSoundFileFragment : Fragment() { companion object { const val EXTRA_RESULT = "extra_sound_file_result" diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileUseCase.kt index f4bbe40481..bc88a16020 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileUseCase.kt @@ -6,10 +6,6 @@ import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.system.files.FileAdapter import kotlinx.coroutines.flow.StateFlow -/** - * Created by sds100 on 25/06/2021. - */ - class ChooseSoundFileUseCaseImpl( private val fileAdapter: FileAdapter, private val soundsManager: SoundsManager, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt index bbb5e8ce76..2cbed90e51 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt @@ -25,9 +25,6 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -/** - * Created by sds100 on 31/03/2020. - */ class ChooseSoundFileViewModel( resourceProvider: ResourceProvider, private val useCase: ChooseSoundFileUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundFileInfo.kt b/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundFileInfo.kt index 5178df7542..f8c74ef74d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundFileInfo.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundFileInfo.kt @@ -1,6 +1,4 @@ package io.github.sds100.keymapper.actions.sound -/** - * Created by sds100 on 25/06/2021. - */ + data class SoundFileInfo(val uid: String, val name: String) diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundsManager.kt b/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundsManager.kt index 836618f49f..c4c67e35d7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundsManager.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundsManager.kt @@ -15,9 +15,7 @@ import kotlinx.coroutines.launch import timber.log.Timber import java.util.UUID -/** - * Created by sds100 on 24/06/2021. - */ + class SoundsManagerImpl( private val coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateImageView.kt b/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateImageView.kt index 04e72d5bdc..016453a3c2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateImageView.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateImageView.kt @@ -12,9 +12,7 @@ import io.github.sds100.keymapper.util.color import kotlinx.coroutines.flow.MutableStateFlow import kotlin.math.roundToInt -/** - * Created by sds100 on 08/08/20. - */ + class PickCoordinateImageView( context: Context, attrs: AttributeSet?, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateResult.kt b/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateResult.kt index cdb05e20b3..f448c3fad5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateResult.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateResult.kt @@ -2,8 +2,6 @@ package io.github.sds100.keymapper.actions.tapscreen import kotlinx.serialization.Serializable -/** - * Created by sds100 on 25/03/2021. - */ + @Serializable data class PickCoordinateResult(val x: Int, val y: Int, val description: String) diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateFragment.kt b/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateFragment.kt index 173e483c29..4963bf4208 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateFragment.kt @@ -29,9 +29,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json -/** - * Created by sds100 on 30/03/2020. - */ + class PickDisplayCoordinateFragment : Fragment() { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateViewModel.kt index 98a8be7e09..96d314e630 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateViewModel.kt @@ -23,9 +23,7 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import kotlin.math.roundToInt -/** - * Created by sds100 on 03/08/20. - */ + class PickDisplayCoordinateViewModel( resourceProvider: ResourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt b/app/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt index b83fec2085..f4b3390e80 100644 --- a/app/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt @@ -9,10 +9,6 @@ import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.system.accessibility.ServiceState import splitties.toast.toast -/** - * Created by sds100 on 08/09/20. - */ - // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API /** * Use basic Activity, NOT AppCompatActivity so the NoDisplay theme works. Otherwise an diff --git a/app/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt b/app/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt index 662687d589..809abbfc2a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt +++ b/app/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt @@ -6,9 +6,7 @@ import android.content.Intent import io.github.sds100.keymapper.UseCases import io.github.sds100.keymapper.util.firstBlocking -/** - * Created by sds100 on 17/06/2021. - */ + // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API class PauseMappingsBroadcastReceiver : BroadcastReceiver() { diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt b/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt index 8aa98189a4..fec0d42c8f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt +++ b/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt @@ -75,10 +75,6 @@ import java.io.InputStream import java.util.LinkedList import java.util.UUID -/** - * Created by sds100 on 16/03/2021. - */ - class BackupManagerImpl( private val coroutineScope: CoroutineScope, private val fileAdapter: FileAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/BackupRestoreMappingsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/backup/BackupRestoreMappingsUseCase.kt index f641a08446..5c22bc6937 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/BackupRestoreMappingsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/backup/BackupRestoreMappingsUseCase.kt @@ -8,10 +8,6 @@ import io.github.sds100.keymapper.system.files.FileAdapter import kotlinx.coroutines.flow.Flow import timber.log.Timber -/** - * Created by sds100 on 16/04/2021. - */ - class BackupRestoreMappingsUseCaseImpl( private val fileAdapter: FileAdapter, private val backupManager: BackupManager, diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintViewModel.kt index ef87621a6e..1dfb66cb0a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintViewModel.kt @@ -35,10 +35,6 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -/** - * Created by sds100 on 21/03/2020. - */ - class ChooseConstraintViewModel( private val useCase: CreateConstraintUseCase, resourceProvider: ResourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt index 08cfabef63..96e9f91247 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt @@ -36,10 +36,6 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -/** - * Created by sds100 on 29/11/20. - */ - class ConfigConstraintsViewModel( private val coroutineScope: CoroutineScope, private val config: ConfigKeyMapUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/Constraint.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/Constraint.kt index 89bfe996e5..37fd9b808d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/Constraint.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/Constraint.kt @@ -11,10 +11,6 @@ import kotlinx.serialization.Serializable import java.time.LocalTime import java.util.UUID -/** - * Created by sds100 on 03/03/2021. - */ - @Serializable sealed class Constraint { abstract val uid: String diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintMode.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintMode.kt index ddc7a85d6c..a0952ce62e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintMode.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintMode.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.constraints -/** - * Created by sds100 on 03/03/2021. - */ enum class ConstraintMode { AND, OR, diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintSnapshot.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintSnapshot.kt index 5a813bc92a..09fb515a1b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintSnapshot.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintSnapshot.kt @@ -19,10 +19,6 @@ import io.github.sds100.keymapper.util.firstBlocking import timber.log.Timber import java.time.LocalTime -/** - * Created by sds100 on 08/05/2021.f - */ - /** * This allows constraints to be checked lazily because some system calls take a significant amount of time. */ diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintState.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintState.kt index 0998f7871a..29283dbe11 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintState.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintState.kt @@ -2,10 +2,6 @@ package io.github.sds100.keymapper.constraints import kotlinx.serialization.Serializable -/** - * Created by sds100 on 04/04/2021. - */ - @Serializable data class ConstraintState( val constraints: Set = emptySet(), diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUiHelper.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUiHelper.kt index 66ce88fa3a..b39261e787 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUiHelper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUiHelper.kt @@ -12,10 +12,6 @@ import io.github.sds100.keymapper.util.ui.ResourceProvider import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo import java.time.format.FormatStyle -/** - * Created by sds100 on 18/03/2021. - */ - class ConstraintUiHelper( displayConstraintUseCase: DisplayConstraintUseCase, resourceProvider: ResourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/CreateConstraintUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/CreateConstraintUseCase.kt index 7d9e748bf7..6f04970552 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/CreateConstraintUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/CreateConstraintUseCase.kt @@ -14,10 +14,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map -/** - * Created by sds100 on 06/07/2021. - */ - class CreateConstraintUseCaseImpl( private val networkAdapter: NetworkAdapter, private val inputMethodAdapter: InputMethodAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/DetectConstraintsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/DetectConstraintsUseCase.kt index dc42fff24b..904e70eb14 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/DetectConstraintsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/DetectConstraintsUseCase.kt @@ -17,10 +17,6 @@ import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge -/** - * Created by sds100 on 17/04/2021. - */ - class DetectConstraintsUseCaseImpl( private val accessibilityService: IAccessibilityService, private val mediaAdapter: MediaAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/data/Keys.kt b/app/src/main/java/io/github/sds100/keymapper/data/Keys.kt index dfd38baa43..681c7eaba9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/Keys.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/Keys.kt @@ -5,9 +5,6 @@ import androidx.datastore.preferences.core.intPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey import androidx.datastore.preferences.core.stringSetPreferencesKey -/** - * Created by sds100 on 19/01/21. - */ object Keys { val darkTheme = stringPreferencesKey("pref_dark_theme_mode") val hasRootPermission = booleanPreferencesKey("pref_allow_root_features") diff --git a/app/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt b/app/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt index 03e164e359..27d36319cc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.data -/** - * Created by sds100 on 30/01/21. - */ + object PreferenceDefaults { const val DARK_THEME = "2" diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt b/app/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt index bba74e2b66..cd64a24ece 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt @@ -45,9 +45,6 @@ import io.github.sds100.keymapper.data.migration.Migration6To7 import io.github.sds100.keymapper.data.migration.Migration8To9 import io.github.sds100.keymapper.data.migration.Migration9To10 -/** - * Created by sds100 on 24/01/2020. - */ @Database( entities = [KeyMapEntity::class, FingerprintMapEntity::class, LogEntryEntity::class, FloatingLayoutEntity::class, FloatingButtonEntity::class, GroupEntity::class, AccessibilityNodeEntity::class], version = DATABASE_VERSION, diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/FingerprintMapDao.kt b/app/src/main/java/io/github/sds100/keymapper/data/db/dao/FingerprintMapDao.kt index 74122137ac..3f14042f03 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/FingerprintMapDao.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/db/dao/FingerprintMapDao.kt @@ -8,10 +8,6 @@ import androidx.room.Update import io.github.sds100.keymapper.data.entities.FingerprintMapEntity import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 28/04/2021. - */ - @Dao interface FingerprintMapDao { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/KeyMapDao.kt b/app/src/main/java/io/github/sds100/keymapper/data/db/dao/KeyMapDao.kt index c72b0a0f78..12db4e7752 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/KeyMapDao.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/db/dao/KeyMapDao.kt @@ -9,10 +9,6 @@ import androidx.room.Update import io.github.sds100.keymapper.data.entities.KeyMapEntity import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 18/02/20. - */ - @Dao interface KeyMapDao { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt b/app/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt index 163b63f4fd..005ae4f489 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt @@ -6,9 +6,7 @@ import androidx.room.Query import io.github.sds100.keymapper.data.entities.LogEntryEntity import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 18/02/20. - */ + @Dao interface LogEntryDao { diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ActionListTypeConverter.kt b/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ActionListTypeConverter.kt index ccce6fc97c..993a25a63a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ActionListTypeConverter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ActionListTypeConverter.kt @@ -7,10 +7,6 @@ import com.google.gson.GsonBuilder import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.data.entities.ConstraintEntity -/** - * Created by sds100 on 05/09/2018. - */ - class ActionListTypeConverter { private val gson = GsonBuilder().registerTypeAdapter(ConstraintEntity.DESERIALIZER).create() diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstraintListTypeConverter.kt b/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstraintListTypeConverter.kt index 7e7b43c0d1..da676515d9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstraintListTypeConverter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstraintListTypeConverter.kt @@ -6,10 +6,6 @@ import com.github.salomonbrys.kotson.registerTypeAdapter import com.google.gson.GsonBuilder import io.github.sds100.keymapper.data.entities.ConstraintEntity -/** - * Created by sds100 on 05/09/2018. - */ - class ConstraintListTypeConverter { private val gson = GsonBuilder().registerTypeAdapter(ConstraintEntity.DESERIALIZER).create() diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ExtraListTypeConverter.kt b/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ExtraListTypeConverter.kt index c7e5c038dc..4bccde0fab 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ExtraListTypeConverter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ExtraListTypeConverter.kt @@ -5,10 +5,6 @@ import com.github.salomonbrys.kotson.fromJson import com.google.gson.GsonBuilder import io.github.sds100.keymapper.data.entities.EntityExtra -/** - * Created by sds100 on 05/09/2018. - */ - class ExtraListTypeConverter { private val gson = GsonBuilder().create() diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt b/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt index d4093d82d8..e5f0704f5e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt @@ -3,9 +3,7 @@ package io.github.sds100.keymapper.data.db.typeconverter import androidx.room.TypeConverter import io.github.sds100.keymapper.actions.uielement.NodeInteractionType -/** - * Created by sds100 on 05/09/2018. - */ + class NodeInteractionTypeSetTypeConverter { @TypeConverter diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt b/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt index 58d967d6a6..f625c7b6be 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt @@ -8,9 +8,7 @@ import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.TriggerEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity -/** - * Created by sds100 on 05/09/2018. - */ + class TriggerTypeConverter { private val gson = GsonBuilder() diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt b/app/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt index be62380df3..ad42ed3012 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt @@ -11,10 +11,6 @@ import io.github.sds100.keymapper.data.entities.ActionEntity.Type import kotlinx.parcelize.Parcelize import java.util.UUID -/** - * Created by sds100 on 16/07/2018. - */ - /** * @property [data] The information required to perform the action. E.g if the type is [Type.APP], * the data will be the package name of the application diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/ConstraintEntity.kt b/app/src/main/java/io/github/sds100/keymapper/data/entities/ConstraintEntity.kt index c79ea9cb66..6690875809 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/ConstraintEntity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/entities/ConstraintEntity.kt @@ -9,10 +9,6 @@ import com.google.gson.annotations.SerializedName import kotlinx.parcelize.Parcelize import java.util.UUID -/** - * Created by sds100 on 17/03/2020. - */ - @Parcelize data class ConstraintEntity( @SerializedName(NAME_TYPE) diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt b/app/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt index 8c20804969..b3ac9e3c06 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt @@ -9,10 +9,6 @@ import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.Success import kotlinx.parcelize.Parcelize -/** - * Created by sds100 on 26/01/2019. - */ - @Parcelize data class EntityExtra( @SerializedName(NAME_ID) diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintMapEntity.kt b/app/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintMapEntity.kt index 613cbc740c..b5c824f97b 100755 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintMapEntity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintMapEntity.kt @@ -11,10 +11,6 @@ import com.github.salomonbrys.kotson.jsonDeserializer import com.google.gson.annotations.SerializedName import io.github.sds100.keymapper.data.db.dao.FingerprintMapDao -/** - * Created by sds100 on 08/11/20. - */ - @Entity(tableName = FingerprintMapDao.TABLE_NAME) data class FingerprintMapEntity( @SerializedName(NAME_ID) diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntity.kt b/app/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntity.kt index bb9dda5088..5b5e94ba04 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntity.kt @@ -19,10 +19,6 @@ import io.github.sds100.keymapper.data.db.dao.KeyMapDao import kotlinx.parcelize.Parcelize import java.util.UUID -/** - * Created by sds100 on 12/07/2018. - */ - @Entity( tableName = KeyMapDao.TABLE_NAME, indices = [Index(value = [KeyMapDao.KEY_UID], unique = true)], diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt b/app/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt index c901c29ed7..ca4065cb34 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt @@ -5,9 +5,7 @@ import androidx.room.Entity import androidx.room.PrimaryKey import io.github.sds100.keymapper.data.db.dao.LogEntryDao -/** - * Created by sds100 on 13/05/2021. - */ + @Entity(tableName = LogEntryDao.TABLE_NAME) data class LogEntryEntity( @PrimaryKey(autoGenerate = true) diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt b/app/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt index c6b81db172..1337126eb0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt @@ -9,9 +9,7 @@ import com.github.salomonbrys.kotson.jsonDeserializer import com.google.gson.annotations.SerializedName import kotlinx.parcelize.Parcelize -/** - * Created by sds100 on 16/07/2018. - */ + @Parcelize data class TriggerEntity( diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/JsonMigration.kt b/app/src/main/java/io/github/sds100/keymapper/data/migration/JsonMigration.kt index dcc7cb0a38..146de584db 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/JsonMigration.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/migration/JsonMigration.kt @@ -2,9 +2,6 @@ package io.github.sds100.keymapper.data.migration import com.google.gson.JsonObject -/** - * Created by sds100 on 22/01/21. - */ class JsonMigration( val versionBefore: Int, val versionAfter: Int, diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt b/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt index c631cf3df7..fb0fae2439 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt @@ -17,9 +17,7 @@ import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity import splitties.bitflags.hasFlag import timber.log.Timber -/** - * Created by sds100 on 06/06/20. - */ + /** * Mahoosive update/overhaul from 1.0 to 2.0 diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt b/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt index b3297b3b77..59b3cfcafa 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt @@ -10,9 +10,7 @@ import com.google.gson.JsonObject import com.google.gson.JsonParser import splitties.bitflags.withFlag -/** - * Created by sds100 on 25/06/20. - */ + /** * #379 feat: add option to repeat for all types of actions diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt b/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt index f659a70706..a61b6d4224 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt @@ -9,9 +9,7 @@ import com.google.gson.Gson import com.google.gson.JsonParser import kotlin.collections.set -/** - * Created by sds100 on 25/06/20. - */ + /** * #376 make trigger mode settings always visible. diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt b/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt index 4207c0dc94..10c4541487 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt @@ -15,9 +15,7 @@ import io.github.sds100.keymapper.data.entities.ActionEntity import splitties.bitflags.hasFlag import splitties.bitflags.withFlag -/** - * Created by sds100 on 25/06/20. - */ + /** * #382 feat: unique repeat behaviour for each action diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt b/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt index 0ab7846d7c..02a203fd9d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt @@ -8,9 +8,7 @@ import com.github.salomonbrys.kotson.set import com.google.gson.Gson import com.google.gson.JsonParser -/** - * Created by sds100 on 25/06/20. - */ + /** * move keymap flags to trigger flags diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt b/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt index bf2378431a..4e0d96dd9e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt @@ -15,9 +15,7 @@ import splitties.bitflags.hasFlag import splitties.bitflags.minusFlag import splitties.bitflags.withFlag -/** - * Created by sds100 on 25/06/20. - */ + object Migration6To7 { diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt b/app/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt index 3e8772074f..ccbfb187ed 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.data.migration import com.google.gson.JsonObject -/** - * Created by sds100 on 24/01/21. - */ + object MigrationUtils { fun migrate( migrations: List, diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt b/app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt index dd9e03d48e..541790302b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt @@ -8,10 +8,6 @@ import splitties.bitflags.hasFlag import splitties.bitflags.minusFlag import splitties.bitflags.withFlag -/** - * Created by sds100 on 22/01/21. - */ - /** * Move the action option "show performing toast when performing" to a trigger option. */ diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt b/app/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt index 94136926de..fad61ec232 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt @@ -3,9 +3,7 @@ package io.github.sds100.keymapper.data.repositories import androidx.datastore.preferences.core.Preferences import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 13/02/21. - */ + interface PreferenceRepository { fun get(key: Preferences.Key): Flow fun set(key: Preferences.Key, value: T?) diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt b/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt index 6ce032aa55..5e5d916b3b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt @@ -16,9 +16,7 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -/** - * Created by sds100 on 13/05/2021. - */ + class RoomLogRepository( private val coroutineScope: CoroutineScope, private val dao: LogEntryDao, diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeTab.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeTab.kt index 264083953c..d08527941c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeTab.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeTab.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.home -/** - * Created by sds100 on 02/04/2021. - */ enum class HomeTab { KEY_EVENTS, FINGERPRINT_MAPS, diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt index 6044fad6cf..9592e696a2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt @@ -35,9 +35,6 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -/** - * Created by sds100 on 18/01/21. - */ class HomeViewModel( private val listKeyMaps: ListKeyMapsUseCase, private val pauseKeyMaps: PauseKeyMapsUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/home/ShowHomeScreenAlertsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/home/ShowHomeScreenAlertsUseCase.kt index 1f21e50589..92fe824878 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/ShowHomeScreenAlertsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/ShowHomeScreenAlertsUseCase.kt @@ -11,9 +11,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map -/** - * Created by sds100 on 04/04/2021. - */ + class ShowHomeScreenAlertsUseCaseImpl( private val preferences: PreferenceRepository, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ClickType.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ClickType.kt index 3a259bd68e..02e6e04709 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ClickType.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ClickType.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.keymaps -/** - * Created by sds100 on 21/02/2021. - */ enum class ClickType { SHORT_PRESS, LONG_PRESS, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt index 2c8d3e8463..93eb36edd6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt @@ -51,9 +51,6 @@ import kotlinx.coroutines.withContext import kotlinx.serialization.json.Json import java.util.LinkedList -/** - * Created by sds100 on 16/02/2021. - */ class ConfigKeyMapUseCaseController( private val coroutineScope: CoroutineScope, private val keyMapRepository: KeyMapRepository, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt index f86292155e..9eb234b714 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt @@ -27,10 +27,6 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -/** - * Created by sds100 on 22/11/20. - */ - class ConfigKeyMapViewModel( private val config: ConfigKeyMapUseCase, private val testAction: TestActionUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutActivity.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutActivity.kt index 48d0e35783..57424b5aac 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutActivity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutActivity.kt @@ -18,10 +18,6 @@ import io.github.sds100.keymapper.util.Inject import io.github.sds100.keymapper.util.launchRepeatOnLifecycle import kotlinx.coroutines.flow.collectLatest -/** - * Created by sds100 on 08/09/20. - */ - class CreateKeyMapShortcutActivity : AppCompatActivity() { private val viewModel by viewModels { diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt index 820fc49dba..021bdd2dea 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt @@ -9,10 +9,6 @@ import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.apps.AppShortcutAdapter import io.github.sds100.keymapper.util.ui.ResourceProvider -/** - * Created by sds100 on 23/03/2021. - */ - class CreateKeyMapShortcutUseCaseImpl( private val adapter: AppShortcutAdapter, resourceProvider: ResourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt index bba8984ef3..ba9982d3f4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt @@ -32,9 +32,6 @@ import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch -/** - * Created by sds100 on 08/09/20. - */ class CreateKeyMapShortcutViewModel( private val configKeyMapUseCase: ConfigKeyMapUseCase, private val listKeyMaps: ListKeyMapsUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt index e3828bdb93..0b0b73db96 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt @@ -39,10 +39,6 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.withTimeout -/** - * Created by sds100 on 04/04/2021. - */ - class DisplayKeyMapUseCaseImpl( private val permissionAdapter: PermissionAdapter, private val inputMethodAdapter: InputMethodAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGesturesSupportedUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGesturesSupportedUseCase.kt index 3052d0afce..733e58e041 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGesturesSupportedUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGesturesSupportedUseCase.kt @@ -6,9 +6,6 @@ import io.github.sds100.keymapper.data.repositories.PreferenceRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map -/** - * Created by sds100 on 02/04/2021. - */ class FingerprintGesturesSupportedUseCaseImpl( private val preferenceRepository: PreferenceRepository, ) : FingerprintGesturesSupportedUseCase { diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMap.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMap.kt index 0e33d254ee..b4838eda6b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMap.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMap.kt @@ -17,10 +17,6 @@ import io.github.sds100.keymapper.trigger.TriggerKey import kotlinx.serialization.Serializable import java.util.UUID -/** - * Created by sds100 on 03/03/2021. - */ - @Serializable data class KeyMap( val dbId: Long? = null, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapRepository.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapRepository.kt index 2c16070364..c38ca3e8a9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapRepository.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapRepository.kt @@ -4,9 +4,6 @@ import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 18/03/2021. - */ interface KeyMapRepository { val keyMapList: Flow>> diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt index 418ece6990..1526ab0c47 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt @@ -37,9 +37,6 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.withContext import java.util.LinkedList -/** - * Created by sds100 on 16/04/2021. - */ @OptIn(ExperimentalCoroutinesApi::class) class ListKeyMapsUseCaseImpl( private val keyMapRepository: KeyMapRepository, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/PauseKeyMapsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/PauseKeyMapsUseCase.kt index b5acf2b422..529015bb72 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/PauseKeyMapsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/PauseKeyMapsUseCase.kt @@ -8,9 +8,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import timber.log.Timber -/** - * Created by sds100 on 16/04/2021. - */ + class PauseKeyMapsUseCaseImpl( private val preferenceRepository: PreferenceRepository, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt index 83d7d6b6ef..0c115ac54f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt @@ -43,10 +43,6 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import timber.log.Timber -/** - * Created by sds100 on 17/04/2021. - */ - class DetectKeyMapsUseCaseImpl( private val keyMapRepository: KeyMapRepository, private val floatingButtonRepository: FloatingButtonRepository, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt index 63f855e528..de2f2a7c3b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt @@ -17,9 +17,6 @@ import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import timber.log.Timber -/** - * Created by sds100 on 21/06/2020. - */ class DetectScreenOffKeyEventsController( private val suAdapter: SuAdapter, private val devicesAdapter: DevicesAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/ParallelTriggerActionPerformer.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/ParallelTriggerActionPerformer.kt index 0050a51d0d..4652988592 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/ParallelTriggerActionPerformer.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/ParallelTriggerActionPerformer.kt @@ -16,9 +16,7 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.isActive import kotlinx.coroutines.launch -/** - * Created by sds100 on 16/06/2021. - */ + class ParallelTriggerActionPerformer( private val coroutineScope: CoroutineScope, private val useCase: PerformActionsUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/SequenceTriggerActionPerformer.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/SequenceTriggerActionPerformer.kt index aa04286de1..1a0d8f6c9d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/SequenceTriggerActionPerformer.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/SequenceTriggerActionPerformer.kt @@ -8,9 +8,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.launch -/** - * Created by sds100 on 16/06/2021. - */ + class SequenceTriggerActionPerformer( private val coroutineScope: CoroutineScope, private val useCase: PerformActionsUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt index e780051f67..1acae21635 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt @@ -9,9 +9,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import timber.log.Timber -/** - * Created by sds100 on 11/12/20. - */ + class TriggerKeyMapFromOtherAppsController( coroutineScope: CoroutineScope, detectKeyMapsUseCase: DetectKeyMapsUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/DisplayLogUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/logging/DisplayLogUseCase.kt index 6aab805835..3d01661f5a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/DisplayLogUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/DisplayLogUseCase.kt @@ -13,10 +13,6 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map -/** - * Created by sds100 on 13/05/2021. - */ - class DisplayLogUseCaseImpl( private val repository: LogRepository, private val resourceProvider: ResourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/KeyMapperLoggingTree.kt b/app/src/main/java/io/github/sds100/keymapper/logging/KeyMapperLoggingTree.kt index 5eebe70af8..df7a5faaff 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/KeyMapperLoggingTree.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/KeyMapperLoggingTree.kt @@ -18,9 +18,6 @@ import kotlinx.coroutines.flow.stateIn import timber.log.Timber import java.util.Calendar -/** - * Created by sds100 on 13/05/2021. - */ class KeyMapperLoggingTree( private val coroutineScope: CoroutineScope, preferenceRepository: PreferenceRepository, diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogEntry.kt b/app/src/main/java/io/github/sds100/keymapper/logging/LogEntry.kt index 33d3208092..261a190787 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogEntry.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/LogEntry.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.logging -/** - * Created by sds100 on 13/05/2021. - */ + data class LogEntry( val id: Int, val time: Long, diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogEntryEntityMapper.kt b/app/src/main/java/io/github/sds100/keymapper/logging/LogEntryEntityMapper.kt index d63ce782fd..18d8dd6826 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogEntryEntityMapper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/LogEntryEntityMapper.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.logging import io.github.sds100.keymapper.data.entities.LogEntryEntity -/** - * Created by sds100 on 13/05/2021. - */ + object LogEntryEntityMapper { fun toEntity(model: LogEntry): LogEntryEntity { val severity = when (model.severity) { diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogEntryListItem.kt b/app/src/main/java/io/github/sds100/keymapper/logging/LogEntryListItem.kt index 4cd2da5bd5..7f06ca55bc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogEntryListItem.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/LogEntryListItem.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.logging import io.github.sds100.keymapper.util.ui.TintType -/** - * Created by sds100 on 14/05/2021. - */ + data class LogEntryListItem( val id: Int, val time: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogFragment.kt b/app/src/main/java/io/github/sds100/keymapper/logging/LogFragment.kt index 50760f51d0..812858fb43 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/LogFragment.kt @@ -26,9 +26,7 @@ import io.github.sds100.keymapper.util.ui.showPopups import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest -/** - * Created by sds100 on 13/05/2021. - */ + class LogFragment : SimpleRecyclerViewFragment() { private val viewModel by viewModels { diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogRepository.kt b/app/src/main/java/io/github/sds100/keymapper/logging/LogRepository.kt index 55b30bf939..34fd4f97c7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogRepository.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/LogRepository.kt @@ -4,9 +4,7 @@ import io.github.sds100.keymapper.data.entities.LogEntryEntity import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 13/05/2021. - */ + interface LogRepository { val log: Flow>> fun insert(entry: LogEntryEntity) diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogSeverity.kt b/app/src/main/java/io/github/sds100/keymapper/logging/LogSeverity.kt index 225fcf2e00..a412d116af 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogSeverity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/LogSeverity.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.logging -/** - * Created by sds100 on 13/05/2021. - */ + enum class LogSeverity { ERROR, INFO, diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogUtils.kt b/app/src/main/java/io/github/sds100/keymapper/logging/LogUtils.kt index 6182f6ef9c..b5e341aae1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/LogUtils.kt @@ -6,9 +6,7 @@ import java.text.SimpleDateFormat import java.util.Date import java.util.Locale -/** - * Created by sds100 on 14/05/2021. - */ + object LogUtils { val DATE_FORMAT get() = SimpleDateFormat("MM/dd HH:mm:ss.SSS", Locale.getDefault()) diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt index 7abb75231b..224264914a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt @@ -32,9 +32,7 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import java.util.Date -/** - * Created by sds100 on 14/05/2021. - */ + class LogViewModel( private val useCase: DisplayLogUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt index 64c0b530ab..bd75449a10 100644 --- a/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt @@ -30,9 +30,7 @@ import kotlinx.coroutines.flow.filterIsInstance import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map -/** - * Created by sds100 on 14/02/21. - */ + class OnboardingUseCaseImpl( private val preferences: PreferenceRepository, private val fileAdapter: FileAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsController.kt b/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsController.kt index e1a27137a7..0d27aa95bd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsController.kt @@ -11,9 +11,7 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.isActive import kotlinx.coroutines.launch -/** - * Created by sds100 on 27/04/2021. - */ + /** * This is used for the feature created in issue #618 to fix the device IDs of key events diff --git a/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsUseCase.kt index 2d50fd4b7c..ae75f1bb22 100644 --- a/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -11,9 +11,7 @@ import io.github.sds100.keymapper.util.firstBlocking import kotlinx.coroutines.flow.map import kotlinx.coroutines.runBlocking -/** - * Created by sds100 on 27/04/2021. - */ + /** * This is used for the feature created in issue #618 to fix the device IDs of key events diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/Android11BugWorkaroundSettingsFragment.kt b/app/src/main/java/io/github/sds100/keymapper/settings/Android11BugWorkaroundSettingsFragment.kt index 890cf8e1f3..63e0bb680f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/Android11BugWorkaroundSettingsFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/Android11BugWorkaroundSettingsFragment.kt @@ -19,9 +19,6 @@ import io.github.sds100.keymapper.util.ui.showPopup import io.github.sds100.keymapper.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest -/** - * Created by sds100 on 18/07/2021. - */ class Android11BugWorkaroundSettingsFragment : BaseSettingsFragment() { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/AutomaticallyChangeImeSettings.kt b/app/src/main/java/io/github/sds100/keymapper/settings/AutomaticallyChangeImeSettings.kt index 333715a7ac..fc29e7cbb1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/AutomaticallyChangeImeSettings.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/AutomaticallyChangeImeSettings.kt @@ -14,9 +14,6 @@ import io.github.sds100.keymapper.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils import io.github.sds100.keymapper.util.viewLifecycleScope -/** - * Created by sds100 on 19/07/2021. - */ class AutomaticallyChangeImeSettings : BaseSettingsFragment() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/BaseSettingsFragment.kt b/app/src/main/java/io/github/sds100/keymapper/settings/BaseSettingsFragment.kt index 9c4518ac69..2083167bc0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/BaseSettingsFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/BaseSettingsFragment.kt @@ -16,9 +16,6 @@ import io.github.sds100.keymapper.util.Inject import io.github.sds100.keymapper.util.str import io.github.sds100.keymapper.util.ui.showPopups -/** - * Created by sds100 on 20/07/2021. - */ abstract class BaseSettingsFragment : PreferenceFragmentCompat() { val viewModel by activityViewModels { diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt index f064c9e8a3..602768fb24 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt @@ -25,9 +25,6 @@ import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.map -/** - * Created by sds100 on 14/02/2021. - */ class ConfigSettingsUseCaseImpl( private val preferences: PreferenceRepository, private val permissionAdapter: PermissionAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/DefaultOptionsSettingsFragment.kt b/app/src/main/java/io/github/sds100/keymapper/settings/DefaultOptionsSettingsFragment.kt index 02b7b1c918..1fc06d45c7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/DefaultOptionsSettingsFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/DefaultOptionsSettingsFragment.kt @@ -15,9 +15,6 @@ import io.github.sds100.keymapper.util.ui.SliderMinimums import io.github.sds100.keymapper.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest -/** - * Created by sds100 on 16/07/2021. - */ class DefaultOptionsSettingsFragment : BaseSettingsFragment() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/ImePickerSettingsFragment.kt b/app/src/main/java/io/github/sds100/keymapper/settings/ImePickerSettingsFragment.kt index 2e9e85cd3e..b3ff501e59 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/ImePickerSettingsFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/ImePickerSettingsFragment.kt @@ -13,9 +13,6 @@ import io.github.sds100.keymapper.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils import io.github.sds100.keymapper.util.viewLifecycleScope -/** - * Created by sds100 on 18/07/2021. - */ class ImePickerSettingsFragment : BaseSettingsFragment() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/MainSettingsFragment.kt b/app/src/main/java/io/github/sds100/keymapper/settings/MainSettingsFragment.kt index 5c887d835e..9fd92a0f2c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/MainSettingsFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/MainSettingsFragment.kt @@ -34,9 +34,7 @@ import splitties.alertdialog.appcompat.messageResource import splitties.alertdialog.appcompat.negativeButton import splitties.alertdialog.appcompat.positiveButton -/** - * Created by sds100 on 16/07/2021. - */ + class MainSettingsFragment : BaseSettingsFragment() { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsUtils.kt b/app/src/main/java/io/github/sds100/keymapper/settings/SettingsUtils.kt index c97537870c..78f443825d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/SettingsUtils.kt @@ -6,9 +6,7 @@ import androidx.datastore.preferences.core.Preferences import androidx.preference.Preference import io.github.sds100.keymapper.R -/** - * Created by sds100 on 18/07/2021. - */ + object SettingsUtils { fun createChooseDevicesPreference( diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt index 13c61b734f..9554342340 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt @@ -25,9 +25,7 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -/** - * Created by sds100 on 19/01/21. - */ + class SettingsViewModel( private val useCase: ConfigSettingsUseCase, resourceProvider: ResourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/ShizukuSettingsFragment.kt b/app/src/main/java/io/github/sds100/keymapper/settings/ShizukuSettingsFragment.kt index 2c533acfc8..7f28b4f3b8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/ShizukuSettingsFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/ShizukuSettingsFragment.kt @@ -15,9 +15,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn -/** - * Created by sds100 on 18/07/2021. - */ + class ShizukuSettingsFragment : BaseSettingsFragment() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/ThemeUtils.kt b/app/src/main/java/io/github/sds100/keymapper/settings/ThemeUtils.kt index 83a6a98994..1b3e43f8d4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/ThemeUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/ThemeUtils.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.settings -/** - * Created by sds100 on 14/02/2021. - */ + object ThemeUtils { const val DARK = 0 diff --git a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapter.kt index db431328f5..2c93111963 100644 --- a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapter.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.shizuku import kotlinx.coroutines.flow.StateFlow -/** - * Created by sds100 on 20/07/2021. - */ + interface ShizukuAdapter { val isInstalled: StateFlow val isStarted: StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapterImpl.kt b/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapterImpl.kt index 7d96ea34a3..529332dbbf 100644 --- a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapterImpl.kt +++ b/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapterImpl.kt @@ -10,9 +10,7 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.stateIn import rikka.shizuku.Shizuku -/** - * Created by sds100 on 20/07/2021. - */ + class ShizukuAdapterImpl( private val coroutineScope: CoroutineScope, private val packageManagerAdapter: PackageManagerAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuUtils.kt b/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuUtils.kt index 7f7c07d78c..36231c1d33 100644 --- a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuUtils.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.shizuku import android.os.Build -/** - * Created by sds100 on 20/07/2021. - */ + object ShizukuUtils { const val SHIZUKU_PACKAGE = "moe.shizuku.privileged.api" diff --git a/app/src/main/java/io/github/sds100/keymapper/system/AndroidSystemFeatureAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/AndroidSystemFeatureAdapter.kt index d813b1a128..cc4606e00d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/AndroidSystemFeatureAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/AndroidSystemFeatureAdapter.kt @@ -3,9 +3,6 @@ package io.github.sds100.keymapper.system import android.content.Context import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter -/** - * Created by sds100 on 17/03/2021. - */ class AndroidSystemFeatureAdapter(context: Context) : SystemFeatureAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/BootBroadcastReceiver.kt b/app/src/main/java/io/github/sds100/keymapper/system/BootBroadcastReceiver.kt index c61aab628b..4f3afb56fc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/BootBroadcastReceiver.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/BootBroadcastReceiver.kt @@ -5,10 +5,6 @@ import android.content.Context import android.content.Intent import io.github.sds100.keymapper.KeyMapperApp -/** - * Created by sds100 on 24/03/2019. - */ - class BootBroadcastReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { context ?: return diff --git a/app/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt index 6ab2e09f90..760787dbee 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt @@ -20,10 +20,6 @@ import android.os.Build.VERSION_CODES.S_V2 import android.os.Build.VERSION_CODES.TIRAMISU import android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE -/** - * Created by sds100 on 12/01/2019. - */ - object BuildUtils { /** * @return the name of the android version for each [Build.VERSION_CODES] after the minimum api for this app. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/DeviceAdmin.kt b/app/src/main/java/io/github/sds100/keymapper/system/DeviceAdmin.kt index 7d29233def..86d1416574 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/DeviceAdmin.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/DeviceAdmin.kt @@ -2,8 +2,4 @@ package io.github.sds100.keymapper.system import android.app.admin.DeviceAdminReceiver -/** - * Created by sds100 on 31/03/2019. - */ - class DeviceAdmin : DeviceAdminReceiver() diff --git a/app/src/main/java/io/github/sds100/keymapper/system/JobSchedulerHelper.kt b/app/src/main/java/io/github/sds100/keymapper/system/JobSchedulerHelper.kt index 5f49445425..bbbe2a4d75 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/JobSchedulerHelper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/JobSchedulerHelper.kt @@ -13,9 +13,6 @@ import io.github.sds100.keymapper.system.inputmethod.AndroidInputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.ObserveInputMethodsJob import io.github.sds100.keymapper.system.notifications.ObserveNotificationListenersJob -/** - * Created by sds100 on 02/04/2021. - */ object JobSchedulerHelper { private const val ID_OBSERVE_ACCESSIBILITY_SERVICES = 1 diff --git a/app/src/main/java/io/github/sds100/keymapper/system/SettingsUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/SettingsUtils.kt index 57d5da1996..6fbe786ccd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/SettingsUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/SettingsUtils.kt @@ -5,9 +5,7 @@ import android.content.Context import android.provider.Settings import androidx.annotation.RequiresPermission -/** - * Created by sds100 on 31/01/21. - */ + object SettingsUtils { /** diff --git a/app/src/main/java/io/github/sds100/keymapper/system/Shell.kt b/app/src/main/java/io/github/sds100/keymapper/system/Shell.kt index ff17bd213b..24e95fec52 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/Shell.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/Shell.kt @@ -7,9 +7,7 @@ import io.github.sds100.keymapper.system.shell.ShellAdapter import java.io.IOException import java.io.InputStream -/** - * Created by sds100 on 05/11/2018. - */ + object Shell : ShellAdapter { /** * @return whether the command was executed successfully diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeAction.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeAction.kt index 12af5f515c..f79ee19615 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeAction.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeAction.kt @@ -1,6 +1,3 @@ package io.github.sds100.keymapper.system.accessibility -/** - * Created by sds100 on 24/04/2021. - */ data class AccessibilityNodeAction(val action: Int, val extras: Map = emptyMap()) diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeModel.kt index 08f5a14e04..10bd905dea 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeModel.kt @@ -4,9 +4,6 @@ import android.os.Build import androidx.annotation.RequiresApi import kotlinx.serialization.Serializable -/** - * Created by sds100 on 21/04/2021. - */ @Serializable data class AccessibilityNodeModel( val packageName: String?, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt index 240f751511..31922cb1fc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt @@ -33,9 +33,6 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withTimeoutOrNull import timber.log.Timber -/** - * Created by sds100 on 17/03/2021. - */ class AccessibilityServiceAdapter( context: Context, private val coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt index 773486c357..5e1caf4740 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt @@ -3,10 +3,6 @@ package io.github.sds100.keymapper.system.accessibility import android.os.Build import android.view.accessibility.AccessibilityNodeInfo -/** - * Created by sds100 on 06/08/2019. - */ - /** * @return The node to find. Returns null if the node doesn't match the predicate */ diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt index 73931e1160..e2001dfd9d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt @@ -59,9 +59,6 @@ import splitties.bitflags.minusFlag import splitties.bitflags.withFlag import timber.log.Timber -/** - * Created by sds100 on 17/04/2021. - */ abstract class BaseAccessibilityServiceController( private val coroutineScope: CoroutineScope, private val service: MyAccessibilityService, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt index 406bd1f7c4..dd2b9e2764 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt @@ -4,10 +4,6 @@ import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 16/04/2021. - */ - class ControlAccessibilityServiceUseCaseImpl( private val adapter: ServiceAdapter, private val permissionAdapter: PermissionAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt index 8a5b363765..1fd5578f83 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt @@ -7,9 +7,6 @@ import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.util.InputEventType import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 17/04/2021. - */ interface IAccessibilityService { fun doGlobalAction(action: Int): Result<*> diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt index af30ad6b49..861a9346bd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt @@ -43,9 +43,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update import timber.log.Timber -/** - * Created by sds100 on 05/04/2020. - */ + class MyAccessibilityService : AccessibilityService(), diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt index a51bceac3f..7c264b84ed 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt @@ -6,9 +6,7 @@ import android.os.Build import io.github.sds100.keymapper.KeyMapperApp import io.github.sds100.keymapper.system.JobSchedulerHelper -/** - * Created by sds100 on 02/04/2021. - */ + class ObserveEnabledAccessibilityServicesJob : JobService() { override fun onStartJob(params: JobParameters?): Boolean { (application!! as KeyMapperApp).accessibilityServiceAdapter.updateWhetherServiceIsEnabled() diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt index 42b2f9aede..bf2ec11c5f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt @@ -5,9 +5,7 @@ import io.github.sds100.keymapper.util.ServiceEvent import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow -/** - * Created by sds100 on 17/03/2021. - */ + interface ServiceAdapter { val state: StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceState.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceState.kt index 0e417ef809..0fb51daae4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceState.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceState.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.system.accessibility -/** - * Created by sds100 on 09/05/2021. - */ + enum class ServiceState { ENABLED, CRASHED, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt index 9688e1cc44..c6bc8315fa 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt @@ -2,9 +2,6 @@ package io.github.sds100.keymapper.system.airplanemode import io.github.sds100.keymapper.common.result.Result -/** - * Created by sds100 on 24/04/2021. - */ interface AirplaneModeAdapter { fun isEnabled(): Boolean fun enable(): Result<*> diff --git a/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt index 2943c1533b..8adda50a61 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt @@ -7,9 +7,6 @@ import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.root.SuAdapter -/** - * Created by sds100 on 24/04/2021. - */ class AndroidAirplaneModeAdapter( context: Context, val suAdapter: SuAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ActivityInfo.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ActivityInfo.kt index 3b4e73e3b8..3504e71246 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ActivityInfo.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ActivityInfo.kt @@ -2,10 +2,6 @@ package io.github.sds100.keymapper.system.apps import kotlinx.serialization.Serializable -/** - * Created by sds100 on 15/03/2021. - */ - @Serializable data class ActivityInfo( val activityName: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt index f5eeabf872..2a9ba04656 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt @@ -23,9 +23,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import java.util.UUID -/** - * Created by sds100 on 20/03/2021. - */ class AndroidAppShortcutAdapter(context: Context) : AppShortcutAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt index 101416d8a5..2da0dc9c05 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt @@ -38,9 +38,6 @@ import kotlinx.coroutines.withContext import splitties.bitflags.withFlag import java.io.IOException -/** - * Created by sds100 on 16/03/2021. - */ class AndroidPackageManagerAdapter( context: Context, coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppActivityListItem.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/AppActivityListItem.kt index 336414ff65..e8ca712e9e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppActivityListItem.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/AppActivityListItem.kt @@ -4,9 +4,6 @@ import io.github.sds100.keymapper.util.ui.IconInfo import io.github.sds100.keymapper.util.ui.SimpleListItemOld import io.github.sds100.keymapper.util.ui.TintType -/** - * Created by sds100 on 27/01/2020. - */ data class AppActivityListItem( val appName: String, val activityInfo: ActivityInfo, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt index 6354f2e924..fc33440162 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt @@ -8,10 +8,6 @@ import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 20/03/2021. - */ - interface AppShortcutAdapter { val installedAppShortcuts: Flow>> val areLauncherShortcutsSupported: Boolean diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutInfo.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutInfo.kt index fa8b87f1ac..2b2bbc45e7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutInfo.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutInfo.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.system.apps -/** - * Created by sds100 on 23/03/2021. - */ data class AppShortcutInfo( val packageName: String, val activityName: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutListItem.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutListItem.kt index b167c98e25..f71dedf3d7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutListItem.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutListItem.kt @@ -4,10 +4,6 @@ import io.github.sds100.keymapper.util.ui.IconInfo import io.github.sds100.keymapper.util.ui.SimpleListItemOld import io.github.sds100.keymapper.util.ui.TintType -/** - * Created by sds100 on 29/03/2020. - */ - data class AppShortcutListItem( val shortcutInfo: AppShortcutInfo, val label: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityFragment.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityFragment.kt index 0bcfffbfe1..2e7896175d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityFragment.kt @@ -13,9 +13,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json -/** - * Created by sds100 on 22/02/2020. - */ class ChooseActivityFragment : SimpleRecyclerViewFragment() { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt index c6e5ec88ba..8620d76987 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt @@ -18,9 +18,6 @@ import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map -/** - * Created by sds100 on 27/01/2020. - */ class ChooseActivityViewModel(private val useCase: DisplayAppsUseCase) : ViewModel() { val searchQuery = MutableStateFlow(null) diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppFragment.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppFragment.kt index f22b4924ae..7504654544 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppFragment.kt @@ -20,9 +20,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.map -/** - * Created by sds100 on 22/02/2020. - */ class ChooseAppFragment : RecyclerViewFragment() { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutFragment.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutFragment.kt index 92f2d0f934..81ef17d60e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutFragment.kt @@ -23,10 +23,6 @@ import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import splitties.toast.toast -/** - * Created by sds100 on 29/03/2020. - */ - class ChooseAppShortcutFragment : SimpleRecyclerViewFragment() { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutResult.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutResult.kt index 42adcbfc76..f79c1e75d3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutResult.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutResult.kt @@ -2,9 +2,6 @@ package io.github.sds100.keymapper.system.apps import kotlinx.serialization.Serializable -/** - * Created by sds100 on 04/04/2021. - */ @Serializable data class ChooseAppShortcutResult( val packageName: String?, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt index 4e4e56fa00..1d70a8d353 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt @@ -27,9 +27,6 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import java.util.Locale -/** - * Created by sds100 on 27/01/2020. - */ class ChooseAppShortcutViewModel internal constructor( private val useCase: DisplayAppShortcutsUseCase, resourceProvider: ResourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt index 90ec4b0af2..a939efc1f5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt @@ -25,10 +25,6 @@ import kotlinx.coroutines.flow.toList import kotlinx.coroutines.launch import java.util.Locale -/** - * Created by sds100 on 27/01/2020. - */ - class ChooseAppViewModel( private val useCase: DisplayAppsUseCase, ) : ViewModel() { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt index d01514daed..a05665340e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt @@ -5,10 +5,6 @@ import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 04/04/2021. - */ - class DisplayAppShortcutsUseCaseImpl( private val appShortcutAdapter: AppShortcutAdapter, ) : DisplayAppShortcutsUseCase { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt index 4b1c34b6ea..eeb0650cd1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt @@ -5,10 +5,6 @@ import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 04/04/2021. - */ - class DisplayAppsUseCaseImpl( private val adapter: PackageManagerAdapter, ) : DisplayAppsUseCase { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageInfo.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageInfo.kt index 42686f9f7a..d5fedd7bdb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageInfo.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageInfo.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.system.apps -/** - * Created by sds100 on 16/03/2021. - */ + data class PackageInfo( val packageName: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt index ca36ef6a68..35877fe7e0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt @@ -7,9 +7,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.callbackFlow -/** - * Created by sds100 on 26/02/2021. - */ + interface PackageManagerAdapter { val onPackagesChanged: Flow val installedPackages: StateFlow>> diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt index 8d024de07b..b5635ab593 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt @@ -18,10 +18,6 @@ import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch -/** - * Created by sds100 on 14/02/2021. - */ - class AndroidBluetoothAdapter( context: Context, private val coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt index f00a03544b..96df7e4683 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt @@ -3,9 +3,6 @@ package io.github.sds100.keymapper.system.bluetooth import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 14/02/2021. - */ interface BluetoothAdapter { val onDeviceConnect: Flow val onDeviceDisconnect: Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt index 9314780f80..541ccb75d8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt @@ -6,10 +6,6 @@ import android.content.Context import android.content.Intent import io.github.sds100.keymapper.KeyMapperApp -/** - * Created by sds100 on 28/12/2018. - */ - class BluetoothBroadcastReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothDeviceInfo.kt b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothDeviceInfo.kt index 2d7de81279..e42dc1a4bb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothDeviceInfo.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothDeviceInfo.kt @@ -1,6 +1,3 @@ package io.github.sds100.keymapper.system.bluetooth -/** - * Created by sds100 on 07/04/2021. - */ data class BluetoothDeviceInfo(val address: String, val name: String) diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceFragment.kt b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceFragment.kt index 65e6aee4fd..876d8625d8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceFragment.kt @@ -18,9 +18,6 @@ import io.github.sds100.keymapper.util.ui.TextListItem import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest -/** - * Created by sds100 on 22/02/2020. - */ class ChooseBluetoothDeviceFragment : SimpleRecyclerViewFragment() { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceUseCase.kt index 51df3fa171..0261db0fe2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceUseCase.kt @@ -6,10 +6,6 @@ import io.github.sds100.keymapper.system.permissions.PermissionAdapter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow -/** - * Created by sds100 on 07/04/2021. - */ - class ChooseBluetoothDeviceUseCaseImpl( private val devicesAdapter: DevicesAdapter, private val permissionAdapter: PermissionAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceViewModel.kt index 876b235604..d78512000c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceViewModel.kt @@ -20,9 +20,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.launch -/** - * Created by sds100 on 07/04/2021. - */ class ChooseBluetoothDeviceViewModel( val useCase: ChooseBluetoothDeviceUseCase, resourceProvider: ResourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt index 1fce3b0099..942b0cae27 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt @@ -17,9 +17,6 @@ import kotlinx.coroutines.flow.update import timber.log.Timber import kotlin.collections.set -/** - * Created by sds100 on 17/03/2021. - */ class AndroidCameraAdapter(context: Context) : CameraAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt index 54d8d08205..4facdd952c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt @@ -3,9 +3,6 @@ package io.github.sds100.keymapper.system.camera import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 17/03/2021. - */ interface CameraAdapter { /** * @return null if this lens does not have a flash. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraLens.kt b/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraLens.kt index 6e2546f694..7ddef7ae0b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraLens.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraLens.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.system.camera -/** - * Created by sds100 on 22/02/2021. - */ enum class CameraLens { FRONT, BACK, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt index 80f7090f2d..75556a7f03 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt @@ -2,9 +2,6 @@ package io.github.sds100.keymapper.system.camera import io.github.sds100.keymapper.R -/** - * Created by sds100 on 23/03/2021. - */ object CameraLensUtils { fun getLabel(lens: CameraLens) = when (lens) { CameraLens.FRONT -> R.string.lens_front diff --git a/app/src/main/java/io/github/sds100/keymapper/system/clipboard/AndroidClipboardAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/clipboard/AndroidClipboardAdapter.kt index 1df06cc582..343bb33302 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/clipboard/AndroidClipboardAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/clipboard/AndroidClipboardAdapter.kt @@ -5,9 +5,6 @@ import android.content.ClipboardManager import android.content.Context import androidx.core.content.getSystemService -/** - * Created by sds100 on 14/05/2021. - */ class AndroidClipboardAdapter(context: Context) : ClipboardAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/clipboard/ClipboardAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/clipboard/ClipboardAdapter.kt index 241f0fe636..4db37bfa14 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/clipboard/ClipboardAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/clipboard/ClipboardAdapter.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.system.clipboard -/** - * Created by sds100 on 14/05/2021. - */ interface ClipboardAdapter { fun copy(label: String, text: String) } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt index 7adf024ace..b5af00a7bc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt @@ -26,9 +26,6 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import splitties.mainthread.mainLooper -/** - * Created by sds100 on 13/03/2021. - */ class AndroidDevicesAdapter( context: Context, private val bluetoothAdapter: io.github.sds100.keymapper.system.bluetooth.BluetoothAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt index 79f9bfb552..edcc0eaf7a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt @@ -6,9 +6,6 @@ import io.github.sds100.keymapper.util.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow -/** - * Created by sds100 on 07/03/2021. - */ interface DevicesAdapter { val onInputDeviceConnect: Flow val onInputDeviceDisconnect: Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceInfo.kt b/app/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceInfo.kt index 465c3b5adf..c66b126bcc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceInfo.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceInfo.kt @@ -4,10 +4,6 @@ import android.os.Parcelable import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable -/** - * Created by sds100 on 07/03/2021. - */ - @Parcelize @Serializable data class InputDeviceInfo( diff --git a/app/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceUtils.kt index 86bfa6d789..b81d75f2ea 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceUtils.kt @@ -5,10 +5,6 @@ import android.view.InputDevice import java.lang.reflect.InvocationTargetException import java.lang.reflect.Method -/** - * Created by sds100 on 24/04/2020. - */ - object InputDeviceUtils { fun appendDeviceDescriptorToName(descriptor: String, name: String): String = "$name ${descriptor.substring(0..4)}" diff --git a/app/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt index c83db3d248..8a4e8bfc91 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt @@ -23,9 +23,6 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.flow.updateAndGet import kotlinx.coroutines.launch -/** - * Created by sds100 on 17/04/2021. - */ class AndroidDisplayAdapter( context: Context, private val coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/display/Orientation.kt b/app/src/main/java/io/github/sds100/keymapper/system/display/Orientation.kt index f29629ac9e..bf392f9fe5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/display/Orientation.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/display/Orientation.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.system.display -/** - * Created by sds100 on 22/02/2021. - */ + enum class Orientation { ORIENTATION_0, ORIENTATION_90, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt index fc3607627e..b42d77c8ea 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.system.display import io.github.sds100.keymapper.R -/** - * Created by sds100 on 23/03/2021. - */ + object OrientationUtils { fun getLabel(orientation: Orientation) = when (orientation) { Orientation.ORIENTATION_0 -> R.string.orientation_0 diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt index 2afcfb7353..a5fcd21d74 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt @@ -21,9 +21,6 @@ import java.io.File import java.io.InputStream import java.util.UUID -/** - * Created by sds100 on 13/04/2021. - */ class AndroidFileAdapter(context: Context) : FileAdapter { private val ctx = context.applicationContext private val contentResolver: ContentResolver = ctx.contentResolver diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt b/app/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt index e4b005a859..5525d4c401 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt @@ -23,9 +23,6 @@ import java.io.OutputStream import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine -/** - * Created by sds100 on 28/06/2021. - */ class DocumentFileWrapper(val file: DocumentFile, context: Context) : IFile { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt index 75251435f6..144bb9da1e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt @@ -3,9 +3,6 @@ package io.github.sds100.keymapper.system.files import io.github.sds100.keymapper.common.result.Result import java.io.InputStream -/** - * Created by sds100 on 13/04/2021. - */ interface FileAdapter { fun openAsset(fileName: String): InputStream diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/FileUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/files/FileUtils.kt index d870339f02..ed6bc8aa82 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/files/FileUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/files/FileUtils.kt @@ -14,10 +14,6 @@ import java.io.IOException import java.text.SimpleDateFormat import java.util.Calendar -/** - * Created by sds100 on 15/12/2018. - */ - object FileUtils { const val MIME_TYPE_IMAGES = "image/*" diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt b/app/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt index b4bf174a70..5121a6717d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt @@ -5,9 +5,6 @@ import java.io.File import java.io.InputStream import java.io.OutputStream -/** - * Created by sds100 on 28/06/2021. - */ interface IFile { val uri: String val path: String diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt index a42c1949fa..9451307351 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt @@ -7,9 +7,6 @@ import android.view.KeyEvent import io.github.sds100.keymapper.R import splitties.bitflags.withFlag -/** - * Created by sds100 on 17/07/2018. - */ object InputEventUtils { /** * Maps keys which aren't single characters like the Control keys to a string representation diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt index d2adc4c135..2e9765d1f8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt @@ -46,10 +46,6 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withTimeoutOrNull import timber.log.Timber -/** - * Created by sds100 on 14/02/2021. - */ - class AndroidInputMethodAdapter( context: Context, private val coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt index f597a59ca5..1300402d58 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt @@ -21,9 +21,6 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import timber.log.Timber -/** - * Created by sds100 on 20/04/2021. - */ class AutoSwitchImeController( private val coroutineScope: CoroutineScope, private val preferenceRepository: PreferenceRepository, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInfo.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInfo.kt index c02f2b4511..bd9f86d066 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInfo.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInfo.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.system.inputmethod -/** - * Created by sds100 on 23/03/2021. - */ data class ImeInfo( val id: String, val packageName: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt index e5ce73abdd..afd65afe9a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt @@ -12,10 +12,6 @@ import io.github.sds100.keymapper.system.inputevents.InputEventInjector import io.github.sds100.keymapper.util.InputEventType import timber.log.Timber -/** - * Created by sds100 on 21/04/2021. - */ - /** * This class handles communicating with the Key Mapper input method services * so key events and text can be inputted. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt index 17e4a53871..de48d6328b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt @@ -3,9 +3,6 @@ package io.github.sds100.keymapper.system.inputmethod import android.view.InputDevice import io.github.sds100.keymapper.util.InputEventType -/** - * Created by sds100 on 21/04/2021. - */ data class InputKeyModel( val keyCode: Int, val inputType: InputEventType = InputEventType.DOWN_UP, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt index 9de28143b9..0ff6145f19 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt @@ -4,9 +4,6 @@ import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow -/** - * Created by sds100 on 14/02/2021. - */ interface InputMethodAdapter { val isUserInputRequiredToChangeIme: Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt index 1ecf34eba6..9adc2a9f4d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt @@ -11,10 +11,6 @@ import io.github.sds100.keymapper.util.firstBlocking import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map -/** - * Created by sds100 on 16/03/2021. - */ - class KeyMapperImeHelper(private val imeAdapter: InputMethodAdapter) { companion object { const val KEY_MAPPER_GUI_IME_PACKAGE = diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt index 20f63ce5a7..eb4186d875 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt @@ -21,10 +21,6 @@ import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback import io.github.sds100.keymapper.api.KeyEventRelayService import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapperImpl -/** - * Created by sds100 on 31/03/2020. - */ - class KeyMapperImeService : InputMethodService() { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt index 48ccaad53d..d32a94ae2c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt @@ -6,9 +6,7 @@ import android.os.Build import io.github.sds100.keymapper.KeyMapperApp import io.github.sds100.keymapper.system.JobSchedulerHelper -/** - * Created by sds100 on 02/04/2021. - */ + class ObserveInputMethodsJob : JobService() { override fun onStartJob(params: JobParameters?): Boolean { (applicationContext as KeyMapperApp).inputMethodAdapter.onInputMethodsUpdate() diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt index feb12d0e2a..c430255b6d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt @@ -6,9 +6,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.runBlocking -/** - * Created by sds100 on 16/04/2021. - */ + class ShowHideInputMethodUseCaseImpl( private val serviceAdapter: ServiceAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowInputMethodPickerUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowInputMethodPickerUseCase.kt index fb37c9da79..42c45dcd14 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowInputMethodPickerUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowInputMethodPickerUseCase.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.system.inputmethod -/** - * Created by sds100 on 16/04/2021. - */ + class ShowInputMethodPickerUseCaseImpl( private val inputMethodAdapter: InputMethodAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt index 7ad1d6156f..4ff13c9d40 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt @@ -3,9 +3,7 @@ package io.github.sds100.keymapper.system.inputmethod import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 16/04/2021. - */ + class ToggleCompatibleImeUseCaseImpl( private val inputMethodAdapter: InputMethodAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentFragment.kt b/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentFragment.kt index 6102a544d6..16dbb14d76 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentFragment.kt @@ -30,10 +30,6 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json -/** - * Created by sds100 on 30/03/2020. - */ - class ConfigIntentFragment : Fragment() { companion object { const val EXTRA_RESULT = "extra_config_intent_result" diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentResult.kt b/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentResult.kt index 9035a73464..7cb33cf88a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentResult.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentResult.kt @@ -2,10 +2,6 @@ package io.github.sds100.keymapper.system.intents import kotlinx.serialization.Serializable -/** - * Created by sds100 on 20/04/2021. - */ - @Serializable data class ConfigIntentResult( val uri: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModel.kt index ff52743b60..bb690f0e41 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModel.kt @@ -35,10 +35,6 @@ import kotlinx.coroutines.launch import splitties.bitflags.hasFlag import splitties.bitflags.withFlag -/** - * Created by sds100 on 01/01/21. - */ - class ConfigIntentViewModel(resourceProvider: ResourceProvider) : ViewModel(), ResourceProvider by resourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt index c1e33d0315..b9efa5e314 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt @@ -6,10 +6,6 @@ import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.Success -/** - * Created by sds100 on 21/04/2021. - */ - class IntentAdapterImpl(context: Context) : IntentAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraListItem.kt b/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraListItem.kt index 10c7a03905..83d70ae599 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraListItem.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraListItem.kt @@ -1,9 +1,5 @@ package io.github.sds100.keymapper.system.intents -/** - * Created by sds100 on 01/01/21. - */ - // don't factor out properties because otherwise the Epoxyrecyclerview doesn't update when the // model changes sealed class IntentExtraListItem { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraModel.kt index 3b23af3582..46f4ec46d8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraModel.kt @@ -3,9 +3,6 @@ package io.github.sds100.keymapper.system.intents import kotlinx.serialization.Serializable import java.util.UUID -/** - * Created by sds100 on 01/01/21. - */ @Serializable data class IntentExtraModel( val type: IntentExtraType, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt b/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt index 832c2effd6..2d77ce2768 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt @@ -5,10 +5,6 @@ import io.github.sds100.keymapper.R import kotlinx.serialization.Serializable import kotlinx.serialization.Transient -/** - * Created by sds100 on 01/01/21. - */ - @Serializable sealed class IntentExtraType { abstract val labelStringRes: Int diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentTarget.kt b/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentTarget.kt index 9a79d3ed43..4592167cd6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentTarget.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentTarget.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.system.intents -/** - * Created by sds100 on 05/01/21. - */ enum class IntentTarget { ACTIVITY, BROADCAST_RECEIVER, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt index fda2f7d576..8b48bfbfa0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt @@ -5,10 +5,6 @@ import android.content.Context import android.content.res.Configuration import androidx.core.content.getSystemService -/** - * Created by sds100 on 21/07/2021. - */ - class LeanbackAdapterImpl(context: Context) : LeanbackAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackUtils.kt index 7102875c9d..b146648113 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackUtils.kt @@ -5,9 +5,6 @@ import android.content.Context import android.content.res.Configuration import androidx.core.content.getSystemService -/** - * Created by sds100 on 17/06/2021. - */ object LeanbackUtils { fun isTvDevice(ctx: Context): Boolean { val uiModeManager = ctx.getSystemService() ?: return false diff --git a/app/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt index d1bcad8c4a..4445db0cb9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt @@ -24,9 +24,6 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import java.io.FileNotFoundException -/** - * Created by sds100 on 21/04/2021. - */ class AndroidMediaAdapter(context: Context, coroutineScope: CoroutineScope) : MediaAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt index 0f76a06308..d2fa9cdb62 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt @@ -6,9 +6,7 @@ import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.volume.VolumeStream import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 21/04/2021. - */ + interface MediaAdapter { /** diff --git a/app/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt b/app/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt index 5de765a8ea..e3da59ed67 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt @@ -16,9 +16,7 @@ import io.github.sds100.keymapper.util.firstBlocking import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch -/** - * Created by sds100 on 21/04/2021. - */ + class OpenMenuHelper( private val suAdapter: SuAdapter, private val accessibilityService: IAccessibilityService, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt index 2ed3dec9c1..0f0ca86e26 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt @@ -26,9 +26,6 @@ import okio.IOException import okio.use import timber.log.Timber -/** - * Created by sds100 on 24/04/2021. - */ class AndroidNetworkAdapter( context: Context, private val suAdapter: SuAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt index 4db91274d7..f91ca9df2a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt @@ -3,9 +3,7 @@ package io.github.sds100.keymapper.system.network import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 24/04/2021. - */ + interface NetworkAdapter { val connectedWifiSSID: String? val connectedWifiSSIDFlow: Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt index b8701577a6..0de89013e1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt @@ -6,9 +6,6 @@ import androidx.core.content.getSystemService import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.root.SuAdapter -/** - * Created by sds100 on 24/04/2021. - */ class AndroidNfcAdapter( context: Context, private val suAdapter: SuAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt index 94d39af90f..d90ecb9ad3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.system.nfc import io.github.sds100.keymapper.common.result.Result -/** - * Created by sds100 on 24/04/2021. - */ + interface NfcAdapter { fun isEnabled(): Boolean fun enable(): Result<*> diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt index 9f13818dc3..fd31feddbd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt @@ -15,9 +15,6 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch -/** - * Created by sds100 on 17/04/2021. - */ class AndroidNotificationAdapter( context: Context, private val coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/ManageNotificationsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/ManageNotificationsUseCase.kt index 63ffafbdab..63a7e41dea 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/ManageNotificationsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/ManageNotificationsUseCase.kt @@ -10,9 +10,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map -/** - * Created by sds100 on 14/02/21. - */ + class ManageNotificationsUseCaseImpl( private val preferences: PreferenceRepository, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationAdapter.kt index 211489d140..0b61b3a015 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationAdapter.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.system.notifications import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 16/04/2021. - */ + interface NotificationAdapter { /** * The string is the ID of the action. diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationChannelModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationChannelModel.kt index 33e6018f09..f716f1882b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationChannelModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationChannelModel.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.system.notifications -/** - * Created by sds100 on 17/04/2021. - */ + data class NotificationChannelModel( val id: String, val name: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationClickReceiver.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationClickReceiver.kt index f6cbf53b7b..df2a2474d1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationClickReceiver.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationClickReceiver.kt @@ -6,9 +6,7 @@ import android.content.Intent import android.os.Build import io.github.sds100.keymapper.ServiceLocator -/** - * Created by sds100 on 24/03/2019. - */ + class NotificationClickReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent?) { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt index 018a7d5059..3b3dc9802c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt @@ -30,9 +30,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch -/** - * Created by sds100 on 24/03/2019. - */ + class NotificationController( private val coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationModel.kt index f7e72a1406..30bd5c1cb3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationModel.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.system.notifications import androidx.annotation.DrawableRes -/** - * Created by sds100 on 16/04/2021. - */ + data class NotificationModel( val id: Int, val channel: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt index a64b1df640..76524cdfd2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt @@ -16,9 +16,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import timber.log.Timber -/** - * Created by sds100 on 14/11/20. - */ + class NotificationReceiver : NotificationListenerService(), LifecycleOwner { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt index 595f4dee96..a5c9d48261 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt @@ -25,9 +25,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import splitties.bitflags.withFlag -/** - * Created by sds100 on 27/07/2021. - */ + class NotificationReceiverAdapter( context: Context, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt index fa7c0b59be..7e4ab25703 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt @@ -7,9 +7,7 @@ import android.provider.Settings import androidx.annotation.RequiresApi import io.github.sds100.keymapper.Constants -/** - * Created by sds100 on 30/09/2018. - */ + object NotificationUtils { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt b/app/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt index 59753abaf8..66dcc8109b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt @@ -6,9 +6,7 @@ import android.os.Build import io.github.sds100.keymapper.KeyMapperApp import io.github.sds100.keymapper.system.JobSchedulerHelper -/** - * Created by sds100 on 02/04/2021. - */ + class ObserveNotificationListenersJob : JobService() { override fun onStartJob(params: JobParameters?): Boolean { (applicationContext as KeyMapperApp).permissionAdapter.onPermissionsChanged() diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt index dec2590513..58f3012608 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt @@ -49,9 +49,6 @@ import rikka.shizuku.ShizukuBinderWrapper import rikka.shizuku.SystemServiceHelper import timber.log.Timber -/** - * Created by sds100 on 17/03/2021. - */ class AndroidPermissionAdapter( context: Context, private val coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt b/app/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt index 12289e2081..97f334bd6b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt @@ -9,9 +9,6 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn -/** - * Created by sds100 on 12/09/2021. - */ class AutoGrantPermissionController( private val coroutineScope: CoroutineScope, private val permissionAdapter: PermissionAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/Permission.kt b/app/src/main/java/io/github/sds100/keymapper/system/permissions/Permission.kt index 43319c74eb..f552ff3c8d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/permissions/Permission.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/permissions/Permission.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.system.permissions -/** - * Created by sds100 on 08/04/2021. - */ + enum class Permission { WRITE_SETTINGS, CAMERA, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt index 3a7920f374..7e1dfb8450 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt @@ -3,9 +3,7 @@ package io.github.sds100.keymapper.system.permissions import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 16/03/2021. - */ + interface PermissionAdapter { val onPermissionsUpdate: Flow fun isGranted(permission: Permission): Boolean diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt b/app/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt index e3f4b247bb..25ba199d41 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt @@ -33,9 +33,7 @@ import splitties.alertdialog.material.materialAlertDialog import splitties.toast.longToast import splitties.toast.toast -/** - * Created by sds100 on 13/04/2021. - */ + class RequestPermissionDelegate( private val activity: AppCompatActivity, val showDialogs: Boolean, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/SystemFeatureAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/permissions/SystemFeatureAdapter.kt index 2d5a586c65..dd7474a841 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/permissions/SystemFeatureAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/permissions/SystemFeatureAdapter.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.system.permissions -/** - * Created by sds100 on 16/03/2021. - */ + interface SystemFeatureAdapter { fun hasSystemFeature(feature: String): Boolean fun getSystemFeatures(): List diff --git a/app/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt index 8cc4aaa45f..ab3d668c33 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt @@ -16,9 +16,6 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch -/** - * Created by sds100 on 21/04/2021. - */ class AndroidPhoneAdapter( context: Context, private val coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/phone/CallState.kt b/app/src/main/java/io/github/sds100/keymapper/system/phone/CallState.kt index bfb1168ef9..4a5dd6f303 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/phone/CallState.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/phone/CallState.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.system.phone -/** - * Created by sds100 on 17/01/2022. - */ enum class CallState { RINGING, IN_PHONE_CALL, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt index cea51d5526..bfcd8d20c0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt @@ -3,9 +3,7 @@ package io.github.sds100.keymapper.system.phone import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 21/04/2021. - */ + interface PhoneAdapter { val callStateFlow: Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt index 633fdb5424..7d8373bd7b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt @@ -3,9 +3,6 @@ package io.github.sds100.keymapper.system.popup import android.content.Context import splitties.toast.toast -/** - * Created by sds100 on 17/04/2021. - */ class AndroidToastAdapter(context: Context) : PopupMessageAdapter { private val ctx: Context = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt index 6f0fc56638..925f720b11 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.system.popup -/** - * Created by sds100 on 17/04/2021. - */ + interface PopupMessageAdapter { fun showPopupMessage(message: String) } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/power/PowerAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/power/PowerAdapter.kt index 257771c0bc..ddaf4bb5f5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/power/PowerAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/power/PowerAdapter.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.system.power import kotlinx.coroutines.flow.StateFlow -/** - * Created by sds100 on 21/05/2022. - */ + interface PowerAdapter { val isCharging: StateFlow } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt index 29a79f09b7..a352d80030 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt @@ -17,9 +17,7 @@ import kotlinx.coroutines.flow.stateIn import java.io.IOException import java.io.InputStream -/** - * Created by sds100 on 21/04/2021. - */ + class SuAdapterImpl( coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt index 374b0905c3..6a4e6a167a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.system.shell import io.github.sds100.keymapper.common.result.Result -/** - * Created by sds100 on 21/04/2021. - */ + interface ShellAdapter { fun execute(command: String): Result<*> diff --git a/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt b/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt index bb463c5635..52be3fd7d3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt @@ -20,9 +20,7 @@ import io.github.sds100.keymapper.util.str import kotlinx.coroutines.flow.first import splitties.toast.toast -/** - * Created by sds100 on 12/06/2020. - */ + @RequiresApi(Build.VERSION_CODES.N) class ToggleKeyMapperKeyboardTile : TileService(), diff --git a/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt b/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt index 7763983b09..c70f4f8d53 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt @@ -18,9 +18,7 @@ import io.github.sds100.keymapper.util.str import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.combine -/** - * Created by sds100 on 12/06/2020. - */ + @RequiresApi(Build.VERSION_CODES.N) class ToggleMappingsTile : diff --git a/app/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt index c00c3adff2..e90859210a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt @@ -3,9 +3,6 @@ package io.github.sds100.keymapper.system.url import android.content.Context import io.github.sds100.keymapper.common.result.Result -/** - * Created by sds100 on 24/04/2021. - */ class AndroidOpenUrlAdapter(context: Context) : OpenUrlAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt index 5daf2eff73..9462a2510b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.system.url import io.github.sds100.keymapper.common.result.Result -/** - * Created by sds100 on 24/04/2021. - */ + interface OpenUrlAdapter { fun openUrl(url: String): Result<*> } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt index 62f4935ecc..6f70609379 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt @@ -8,9 +8,7 @@ import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.success -/** - * Created by sds100 on 11/01/21. - */ + object UrlUtils { fun openUrl(ctx: Context, url: String): Result<*> { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/vibrator/AndroidVibratorAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/vibrator/AndroidVibratorAdapter.kt index 5b7deb0288..3852d0848a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/vibrator/AndroidVibratorAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/vibrator/AndroidVibratorAdapter.kt @@ -7,9 +7,6 @@ import android.os.VibrationEffect import android.os.Vibrator import androidx.core.content.getSystemService -/** - * Created by sds100 on 17/04/2021. - */ class AndroidVibratorAdapter(context: Context) : VibratorAdapter { private val vibrator: Vibrator? = context.getSystemService() diff --git a/app/src/main/java/io/github/sds100/keymapper/system/vibrator/VibratorAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/vibrator/VibratorAdapter.kt index 72f90a0ae6..57f55f1559 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/vibrator/VibratorAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/vibrator/VibratorAdapter.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.system.vibrator -/** - * Created by sds100 on 17/04/2021. - */ + interface VibratorAdapter { fun vibrate(duration: Long) } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt index c06a10d439..f17f4c3baa 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt @@ -13,9 +13,6 @@ import io.github.sds100.keymapper.common.result.then import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -/** - * Created by sds100 on 20/04/2021. - */ class AndroidVolumeAdapter(context: Context) : VolumeAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/DndMode.kt b/app/src/main/java/io/github/sds100/keymapper/system/volume/DndMode.kt index e5ccf7280f..92deb0ec84 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/volume/DndMode.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/volume/DndMode.kt @@ -1,9 +1,5 @@ package io.github.sds100.keymapper.system.volume -/** - * Created by sds100 on 22/02/2021. - */ - /** * Do Not Disturb mode */ diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt index 28c7267b97..b63ec79493 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt @@ -2,9 +2,6 @@ package io.github.sds100.keymapper.system.volume import io.github.sds100.keymapper.R -/** - * Created by sds100 on 23/03/2021. - */ object DndModeUtils { fun getLabel(dndMode: DndMode) = when (dndMode) { DndMode.ALARMS -> R.string.dnd_mode_alarms diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/RingerMode.kt b/app/src/main/java/io/github/sds100/keymapper/system/volume/RingerMode.kt index 744090d3cc..5460db38ec 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/volume/RingerMode.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/volume/RingerMode.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.system.volume -/** - * Created by sds100 on 22/02/2021. - */ + enum class RingerMode { NORMAL, VIBRATE, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt index 7605409862..47fec9bd4b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.system.volume import io.github.sds100.keymapper.R -/** - * Created by sds100 on 23/03/2021. - */ + object RingerModeUtils { fun getLabel(ringerMode: RingerMode) = when (ringerMode) { RingerMode.NORMAL -> R.string.ringer_mode_normal diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt b/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt index d2fda3059a..84459d205e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.system.volume import io.github.sds100.keymapper.common.result.Result -/** - * Created by sds100 on 20/04/2021. - */ + interface VolumeAdapter { val ringerMode: RingerMode diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStream.kt b/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStream.kt index 1e37f81005..fc243f7130 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStream.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStream.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.system.volume -/** - * Created by sds100 on 22/02/2021. - */ + enum class VolumeStream { ALARM, DTMF, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt b/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt index 6b91b76e92..70bd6b1514 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.system.volume import io.github.sds100.keymapper.R -/** - * Created by sds100 on 23/03/2021. - */ + object VolumeStreamUtils { fun getLabel(stream: VolumeStream) = when (stream) { VolumeStream.ALARM -> R.string.stream_alarm diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt index a05b2de5ec..b8a05c6c30 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt @@ -62,10 +62,6 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -/** - * Created by sds100 on 24/11/20. - */ - abstract class BaseConfigTriggerViewModel( private val coroutineScope: CoroutineScope, private val onboarding: OnboardingUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/ChooseTriggerKeyDeviceModel.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/ChooseTriggerKeyDeviceModel.kt index 4ffb1bae0a..37ede588b9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/ChooseTriggerKeyDeviceModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/ChooseTriggerKeyDeviceModel.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.trigger -/** - * Created by sds100 on 07/03/2021. - */ data class ChooseTriggerKeyDeviceModel( val triggerKeyUid: String, val devices: List, diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerState.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerState.kt index afaad64fad..3aab46eb4a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerState.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerState.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.trigger -/** - * Created by sds100 on 04/03/2021. - */ + sealed class RecordTriggerState { data object Idle : RecordTriggerState() diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerUseCase.kt index 431c8e34af..6080c1b075 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerUseCase.kt @@ -18,9 +18,7 @@ import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch -/** - * Created by sds100 on 04/03/2021. - */ + class RecordTriggerController( private val coroutineScope: CoroutineScope, private val serviceAdapter: ServiceAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordedKey.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/RecordedKey.kt index 17cbc6c856..a5dd97f3b8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordedKey.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/RecordedKey.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.trigger -/** - * Created by sds100 on 04/03/2021. - */ + data class RecordedKey( val keyCode: Int, val device: TriggerKeyDevice, diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/Trigger.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/Trigger.kt index 3ccb03365f..0a46afc803 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/Trigger.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/Trigger.kt @@ -16,9 +16,7 @@ import kotlinx.serialization.Serializable import splitties.bitflags.hasFlag import splitties.bitflags.withFlag -/** - * Created by sds100 on 03/03/2021. - */ + @Serializable data class Trigger( diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerError.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerError.kt index 1d00b9fa36..4b4704dddc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerError.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerError.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.trigger -/** - * Created by sds100 on 04/04/2021. - */ + enum class TriggerError(val isFixable: Boolean) { DND_ACCESS_DENIED(isFixable = true), SCREEN_OFF_ROOT_DENIED(isFixable = true), diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyDevice.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyDevice.kt index 24f6dc8672..29281fc73b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyDevice.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyDevice.kt @@ -3,9 +3,7 @@ package io.github.sds100.keymapper.trigger import io.github.sds100.keymapper.system.devices.InputDeviceInfo import kotlinx.serialization.Serializable -/** - * Created by sds100 on 21/02/2021. - */ + @Serializable sealed class TriggerKeyDevice : Comparable { diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerMode.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerMode.kt index 1c04435521..60c573a855 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerMode.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerMode.kt @@ -3,9 +3,7 @@ package io.github.sds100.keymapper.trigger import io.github.sds100.keymapper.keymaps.ClickType import kotlinx.serialization.Serializable -/** - * Created by sds100 on 21/02/2021. - */ + @Serializable sealed class TriggerMode : Comparable { diff --git a/app/src/main/java/io/github/sds100/keymapper/util/BundleUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/BundleUtils.kt index b0be6c5e29..116d092c98 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/BundleUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/BundleUtils.kt @@ -5,10 +5,6 @@ import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json -/** - * Created by sds100 on 15/03/2021. - */ - inline fun Bundle.getJsonSerializable(key: String): T? = getString(key)?.let { Json.decodeFromString(it) } diff --git a/app/src/main/java/io/github/sds100/keymapper/util/CoroutineUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/CoroutineUtils.kt index 2177f9c972..e5aa30d7f7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/CoroutineUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/CoroutineUtils.kt @@ -15,10 +15,6 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import kotlin.coroutines.resume -/** - * Created by sds100 on 18/11/20. - */ - val Fragment.viewLifecycleScope: LifecycleCoroutineScope get() = viewLifecycleOwner.lifecycle.coroutineScope diff --git a/app/src/main/java/io/github/sds100/keymapper/util/DispatcherProvider.kt b/app/src/main/java/io/github/sds100/keymapper/util/DispatcherProvider.kt index 0a9949f6d3..6418847f1b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/DispatcherProvider.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/DispatcherProvider.kt @@ -3,10 +3,6 @@ package io.github.sds100.keymapper.util import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers -/** - * Created by sds100 on 30/01/21. - */ - interface DispatcherProvider { fun main(): CoroutineDispatcher = Dispatchers.Main fun default(): CoroutineDispatcher = Dispatchers.Default diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ErrorUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/ErrorUtils.kt index fa1f3e6c5d..624204e37e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ErrorUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ErrorUtils.kt @@ -9,10 +9,6 @@ import io.github.sds100.keymapper.system.BuildUtils import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.util.ui.ResourceProvider -/** - * Created by sds100 on 29/02/2020. - */ - fun Error.getFullMessage(resourceProvider: ResourceProvider): String = when (this) { is SystemError.PermissionDenied -> SystemError.PermissionDenied.getMessageForPermission( diff --git a/app/src/main/java/io/github/sds100/keymapper/util/FilterUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/FilterUtils.kt index c944f94985..9791bee312 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/FilterUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/FilterUtils.kt @@ -7,10 +7,6 @@ import kotlinx.coroutines.flow.flow import kotlinx.coroutines.withContext import java.util.Locale -/** - * Created by sds100 on 22/03/2021. - */ - fun List.filterByQuery(query: String?): Flow>> = flow { if (query.isNullOrBlank()) { emit(State.Data(this@filterByQuery)) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/Inject.kt b/app/src/main/java/io/github/sds100/keymapper/util/Inject.kt index 3ad39fcfac..de9f166a61 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/Inject.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/Inject.kt @@ -43,10 +43,6 @@ import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCas import io.github.sds100.keymapper.system.intents.ConfigIntentViewModel import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCaseImpl -/** - * Created by sds100 on 26/01/2020. - */ - object Inject { fun chooseActionViewModel(ctx: Context): ChooseActionViewModel.Factory = ChooseActionViewModel.Factory( diff --git a/app/src/main/java/io/github/sds100/keymapper/util/InputEventType.kt b/app/src/main/java/io/github/sds100/keymapper/util/InputEventType.kt index fb6769cffd..dea8669bf9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/InputEventType.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/InputEventType.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.util -/** - * Created by sds100 on 28/07/20. - */ enum class InputEventType { DOWN_UP, DOWN, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ListUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/ListUtils.kt index 429f0b7a48..621a55cbeb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ListUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ListUtils.kt @@ -2,10 +2,6 @@ package io.github.sds100.keymapper.util import java.util.Collections -/** - * Created by sds100 on 11/03/2021. - */ - fun MutableList<*>.moveElement(fromIndex: Int, toIndex: Int) { if (toIndex >= size || fromIndex >= size) { return diff --git a/app/src/main/java/io/github/sds100/keymapper/util/LoggingUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/LoggingUtils.kt index b5d0f02ef0..594e73f4fc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/LoggingUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/LoggingUtils.kt @@ -3,9 +3,7 @@ package io.github.sds100.keymapper.util import timber.log.Timber import kotlin.system.measureTimeMillis -/** - * Created by sds100 on 19/01/21. - */ + inline fun logMeasureTimeMillis(block: () -> T): T { val result: T diff --git a/app/src/main/java/io/github/sds100/keymapper/util/MapUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/MapUtils.kt index 90ae18d739..33786ad426 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/MapUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/MapUtils.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.util -/** - * Created by sds100 on 19/03/2021. - */ + /** * Not for high speed stuff. diff --git a/app/src/main/java/io/github/sds100/keymapper/util/PreferenceDelegate.kt b/app/src/main/java/io/github/sds100/keymapper/util/PreferenceDelegate.kt index 3664a76b8a..7c8c9988a5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/PreferenceDelegate.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/PreferenceDelegate.kt @@ -6,9 +6,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlin.reflect.KProperty -/** - * Created by sds100 on 14/02/21. - */ + class FlowPrefDelegate( private val key: Preferences.Key, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/SharedPrefsDataStoreWrapper.kt b/app/src/main/java/io/github/sds100/keymapper/util/SharedPrefsDataStoreWrapper.kt index 332c9938ab..b3b484b3ec 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/SharedPrefsDataStoreWrapper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/SharedPrefsDataStoreWrapper.kt @@ -12,9 +12,7 @@ import io.github.sds100.keymapper.settings.ConfigSettingsUseCase import kotlinx.coroutines.flow.first import kotlinx.coroutines.runBlocking -/** - * Created by sds100 on 19/01/21. - */ + class SharedPrefsDataStoreWrapper( private val configSettingsUseCase: ConfigSettingsUseCase, ) : PreferenceDataStore() { diff --git a/app/src/main/java/io/github/sds100/keymapper/util/State.kt b/app/src/main/java/io/github/sds100/keymapper/util/State.kt index 57cd353eb2..5fdedba739 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/State.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/State.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.util -/** - * Created by sds100 on 17/03/2021. - */ + sealed class State { data class Data(val data: T) : State() data object Loading : State() diff --git a/app/src/main/java/io/github/sds100/keymapper/util/StringUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/StringUtils.kt index 0e68e5e666..d1e6ca1f60 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/StringUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/StringUtils.kt @@ -3,9 +3,7 @@ package io.github.sds100.keymapper.util import androidx.annotation.IntRange import kotlin.math.roundToInt -/** - * Created by sds100 on 24/04/2021. - */ + fun String.getWordBoundaries(@IntRange(from = 0L) cursorPosition: Int): Pair? { if (this.isBlank()) return null diff --git a/app/src/main/java/io/github/sds100/keymapper/util/UserHandleUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/UserHandleUtils.kt index 09018ca073..280bf34ddc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/UserHandleUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/UserHandleUtils.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.util import android.os.UserHandle -/** - * Created by sds100 on 20/07/2021. - */ + fun UserHandle.getIdentifier(): Int { val getIdentifierMethod = UserHandle::class.java.getMethod("getIdentifier") diff --git a/app/src/main/java/io/github/sds100/keymapper/util/UuidGenerator.kt b/app/src/main/java/io/github/sds100/keymapper/util/UuidGenerator.kt index 8b44af483c..56e737dc74 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/UuidGenerator.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/UuidGenerator.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.util import java.util.UUID -/** - * Created by sds100 on 29/06/2021. - */ + class DefaultUuidGenerator : UuidGenerator { override fun random(): String = UUID.randomUUID().toString() diff --git a/app/src/main/java/io/github/sds100/keymapper/util/VersionHelper.kt b/app/src/main/java/io/github/sds100/keymapper/util/VersionHelper.kt index eb59eb2411..55f7f0238c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/VersionHelper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/VersionHelper.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.util -/** - * Created by sds100 on 25/04/2021. - */ + object VersionHelper { const val VERSION_2_3_0 = 43 diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/BindingAdapters.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/BindingAdapters.kt index c8e337507c..53aaa33b60 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/BindingAdapters.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/BindingAdapters.kt @@ -19,10 +19,6 @@ import io.github.sds100.keymapper.util.str import io.github.sds100.keymapper.util.styledColor import io.github.sds100.keymapper.util.styledFloat -/** - * Created by sds100 on 25/01/2020. - */ - @BindingAdapter("app:onTextChanged") fun EditText.onTextChangedListener(textWatcher: TextWatcher) { addTextChangedListener(textWatcher) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ChooseAppStoreModel.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/ChooseAppStoreModel.kt index 5d724df2ab..95dac989c3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ChooseAppStoreModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/ChooseAppStoreModel.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 24/07/20. - */ data class ChooseAppStoreModel( val playStoreLink: String? = null, val fdroidLink: String? = null, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/DefaultSimpleListItem.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/DefaultSimpleListItem.kt index d633ca5e3f..43915aabf0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/DefaultSimpleListItem.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/DefaultSimpleListItem.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 22/07/2021. - */ data class DefaultSimpleListItem( override val id: String, override val title: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/DialogUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/DialogUtils.kt index 69defadc14..17a8c261eb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/DialogUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/DialogUtils.kt @@ -37,10 +37,6 @@ import splitties.alertdialog.appcompat.title import splitties.alertdialog.material.materialAlertDialog import kotlin.coroutines.resume -/** - * Created by sds100 on 30/03/2020. - */ - suspend fun Context.materialAlertDialog( lifecycleOwner: LifecycleOwner, model: PopupUi.Dialog, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/EpoxyRecyclerViewModelHelper.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/EpoxyRecyclerViewModelHelper.kt index 557c50b15d..1bdcd6444b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/EpoxyRecyclerViewModelHelper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/EpoxyRecyclerViewModelHelper.kt @@ -4,10 +4,6 @@ import com.airbnb.epoxy.EpoxyController import io.github.sds100.keymapper.checkbox import io.github.sds100.keymapper.databinding.ListItemCheckboxBinding -/** - * Created by sds100 on 20/03/2021. - */ - fun EpoxyController.configuredCheckBox( model: CheckBoxListItem, onCheckedChange: (checked: Boolean) -> Unit, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ISearchable.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/ISearchable.kt index f74bcfac2b..4cd641e07a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ISearchable.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/ISearchable.kt @@ -1,8 +1,5 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 13/01/21. - */ interface ISearchable { fun getSearchableString(): String } diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/IconInfo.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/IconInfo.kt index 0e105a16ef..b13459c8fa 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/IconInfo.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/IconInfo.kt @@ -2,7 +2,4 @@ package io.github.sds100.keymapper.util.ui import android.graphics.drawable.Drawable -/** - * Created by sds100 on 18/03/2021. - */ data class IconInfo(val drawable: Drawable, val tintType: TintType = TintType.None) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/MultiChoiceItem.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/MultiChoiceItem.kt index b8c7f6c778..6b7f722d5b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/MultiChoiceItem.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/MultiChoiceItem.kt @@ -1,6 +1,4 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 26/07/2021. - */ + data class MultiChoiceItem(val id: ID, val label: String, val isChecked: Boolean = false) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/MultiSelectProvider.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/MultiSelectProvider.kt index 27050a2a91..5d57e1e3b9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/MultiSelectProvider.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/MultiSelectProvider.kt @@ -3,9 +3,7 @@ package io.github.sds100.keymapper.util.ui import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update -/** - * Created by sds100 on 11/02/2020. - */ + class MultiSelectProvider { private val lock = Any() diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavDestination.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavDestination.kt index eababf264b..40a965e40f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavDestination.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavDestination.kt @@ -10,9 +10,7 @@ import io.github.sds100.keymapper.system.apps.ChooseAppShortcutResult import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.intents.ConfigIntentResult -/** - * Created by sds100 on 25/07/2021. - */ + sealed class NavDestination { abstract val id: String diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavResult.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavResult.kt index f89f8efa7b..a250e75864 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavResult.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavResult.kt @@ -1,6 +1,4 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 23/03/2021. - */ + data class NavResult(val key: String, val result: Any?) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigateEvent.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigateEvent.kt index 0f3d9f354f..de01143425 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigateEvent.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigateEvent.kt @@ -1,6 +1,4 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 25/07/2021. - */ + data class NavigateEvent(val key: String, val destination: NavDestination<*>) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationUtils.kt index 205f2c9215..5faf2bd997 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationUtils.kt @@ -4,9 +4,7 @@ import androidx.lifecycle.LifecycleOwner import androidx.navigation.NavBackStackEntry import androidx.navigation.NavController -/** - * Created by sds100 on 25/03/2020. - */ + fun NavBackStackEntry.observeLiveData( lifecycleOwner: LifecycleOwner, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationViewModel.kt index 510eb75792..4d4c790e9d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationViewModel.kt @@ -44,9 +44,7 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.runBlocking import kotlinx.serialization.json.Json -/** - * Created by sds100 on 25/07/2021. - */ + class NavigationViewModelImpl : NavigationViewModel { private val _onNavResult by lazy { MutableSharedFlow() } diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/OnPopupResponseEvent.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/OnPopupResponseEvent.kt index bcf274a7d4..f1fbf713ec 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/OnPopupResponseEvent.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/OnPopupResponseEvent.kt @@ -1,6 +1,4 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 23/03/2021. - */ + data class OnPopupResponseEvent(val key: String, val response: Any?) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/PopupUi.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/PopupUi.kt index cb42104ded..1e821cd10d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/PopupUi.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/PopupUi.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 23/03/2021. - */ + sealed class PopupUi { diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/PopupViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/PopupViewModel.kt index a3c93d37cf..4fd2d30e4f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/PopupViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/PopupViewModel.kt @@ -26,9 +26,7 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.runBlocking import splitties.toast.toast -/** - * Created by sds100 on 23/03/2021. - */ + class PopupViewModelImpl : PopupViewModel { diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonPairListItem.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonPairListItem.kt index d7f7cd8f74..a389a88150 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonPairListItem.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonPairListItem.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 12/04/2021. - */ + data class RadioButtonPairListItem( override val id: String, val header: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonTripleListItem.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonTripleListItem.kt index 451b14d096..2797ceb619 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonTripleListItem.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonTripleListItem.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 12/04/2021. - */ + data class RadioButtonTripleListItem( override val id: String, val header: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewFragment.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewFragment.kt index a0588ac7e0..5d9ac1c1e7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewFragment.kt @@ -25,9 +25,7 @@ import io.github.sds100.keymapper.util.launchRepeatOnLifecycle import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest -/** - * Created by sds100 on 22/02/2020. - */ + abstract class RecyclerViewFragment : Fragment() { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewUtils.kt index 3d029f4e20..b45df33630 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewUtils.kt @@ -7,9 +7,7 @@ import androidx.recyclerview.widget.RecyclerView import io.github.sds100.keymapper.R import kotlin.math.floor -/** - * Created by sds100 on 26/07/2021. - */ + object RecyclerViewUtils { fun applySimpleListItemDecorations(recyclerView: RecyclerView) { diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceExt.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceExt.kt index 724e99aaa6..a958bb90f4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceExt.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceExt.kt @@ -22,9 +22,7 @@ import androidx.fragment.app.Fragment import com.google.android.material.color.MaterialColors import splitties.mainthread.isMainThread -/** - * Created by sds100 on 17/05/2020. - */ + // Using varargs doesn't work since prints [LJava.lang.object@32f...etc fun Context.str(@StringRes resId: Int, formatArg: Any? = null): String = getString(resId, formatArg) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceProvider.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceProvider.kt index a3c90db2cb..83f6025d0b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceProvider.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceProvider.kt @@ -13,9 +13,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch -/** - * Created by sds100 on 21/02/2021. - */ + class ResourceProviderImpl( context: Context, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SectionHeaderListItem.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/SectionHeaderListItem.kt index 30d3090d60..bd58117232 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SectionHeaderListItem.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/SectionHeaderListItem.kt @@ -1,6 +1,4 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 23/03/2021. - */ + data class SectionHeaderListItem(override val id: String, val text: String) : ListItem diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SelectionState.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/SelectionState.kt index cf29ee1db7..e96cd1fb42 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SelectionState.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/SelectionState.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 22/03/2021. - */ + sealed class SelectionState { data class Selecting(val selectedIds: Set) : SelectionState() data object NotSelecting : SelectionState() diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ShowPopupEvent.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/ShowPopupEvent.kt index fdf17c5ce7..0d97c59f52 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ShowPopupEvent.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/ShowPopupEvent.kt @@ -1,6 +1,4 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 23/03/2021. - */ + data class ShowPopupEvent(val key: String, val ui: PopupUi<*>) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SimpleRecyclerViewFragment.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/SimpleRecyclerViewFragment.kt index e1fcd1c8ae..e8ec640beb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SimpleRecyclerViewFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/SimpleRecyclerViewFragment.kt @@ -9,9 +9,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.util.str -/** - * Created by sds100 on 22/02/2020. - */ + abstract class SimpleRecyclerViewFragment : RecyclerViewFragment() { @MenuRes diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMaximums.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMaximums.kt index ec142983c0..a8d814ba22 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMaximums.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMaximums.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 12/04/2021. - */ + object SliderMaximums { const val ACTION_MULTIPLIER = 20 const val DELAY_BEFORE_NEXT_ACTION = 2000 diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMinimums.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMinimums.kt index b8e7ca53a9..0040a92cea 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMinimums.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMinimums.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 12/04/2021. - */ + object SliderMinimums { const val ACTION_MULTIPLIER = 1 const val DELAY_BEFORE_NEXT_ACTION = 0 diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderStepSizes.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderStepSizes.kt index b8969158ae..5446d07de2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderStepSizes.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderStepSizes.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 12/04/2021. - */ + object SliderStepSizes { const val ACTION_MULTIPLIER = 1 const val DELAY_BEFORE_NEXT_ACTION = 100 diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SnackBarUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/SnackBarUtils.kt index c7e283e2a5..a39b2555b1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SnackBarUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/SnackBarUtils.kt @@ -9,9 +9,7 @@ import splitties.snackbar.onDismiss import splitties.snackbar.snack import kotlin.coroutines.resume -/** - * Created by sds100 on 06/04/2021. - */ + object SnackBarUtils { suspend fun show( diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SquareImageButton.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/SquareImageButton.kt index 63e0dd53a0..b181e7b5fa 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SquareImageButton.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/SquareImageButton.kt @@ -4,9 +4,7 @@ import android.content.Context import android.util.AttributeSet import androidx.appcompat.widget.AppCompatImageButton -/** - * Created by sds100 on 16/07/2018. - */ + class SquareImageButton(context: Context, attrs: AttributeSet?) : AppCompatImageButton(context, attrs) { override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { // have equal sides. diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/TextListItem.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/TextListItem.kt index 78a13e2970..c05cfa8104 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/TextListItem.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/TextListItem.kt @@ -1,8 +1,6 @@ package io.github.sds100.keymapper.util.ui -/** - * Created by sds100 on 31/03/2021. - */ + sealed class TextListItem : ListItem { data class Success(override val id: String, val text: String) : TextListItem() diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/TintType.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/TintType.kt index 4740f1bfb7..2eaa3754ef 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/TintType.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/TintType.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper.util.ui import androidx.annotation.ColorInt -/** - * Created by sds100 on 03/04/2020. - */ + sealed class TintType { object None : TintType() object OnSurface : TintType() diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ViewModelHelper.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/ViewModelHelper.kt index d39e8b92f7..0040b48e76 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ViewModelHelper.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/ViewModelHelper.kt @@ -7,9 +7,7 @@ import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.isFixable -/** - * Created by sds100 on 04/11/2021. - */ + object ViewModelHelper { suspend fun handleKeyMapperCrashedDialog( resourceProvider: ResourceProvider, diff --git a/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt b/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt index 0a99ff12cb..344aad900f 100644 --- a/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt @@ -61,10 +61,6 @@ import org.mockito.kotlin.whenever import timber.log.Timber import java.io.File -/** - * Created by sds100 on 19/04/2021. - */ - @Suppress("BlockingMethodInNonBlockingContext") @ExperimentalCoroutinesApi @RunWith(MockitoJUnitRunner::class) diff --git a/app/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt b/app/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt index d80b0cbe1e..872b58fa97 100644 --- a/app/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt @@ -32,10 +32,6 @@ import org.junit.Before import org.junit.Test import org.mockito.kotlin.mock -/** - * Created by sds100 on 19/04/2021. - */ - @ExperimentalCoroutinesApi class ConfigKeyMapUseCaseTest { diff --git a/app/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt b/app/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt index 3c028b19b1..ea3414bfc1 100644 --- a/app/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt @@ -21,10 +21,6 @@ import org.junit.Rule import org.junit.Test import java.io.InputStream -/** - * Created by sds100 on 22/01/21. - */ - @ExperimentalCoroutinesApi class KeyMapJsonMigrationTest { companion object { diff --git a/app/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt b/app/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt index 8c5f6813f6..dd5c4a365c 100644 --- a/app/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt @@ -22,10 +22,6 @@ import org.junit.Rule import org.junit.Test import java.io.InputStream -/** - * Created by sds100 on 22/01/21. - */ - @ExperimentalCoroutinesApi class LegacyFingerprintMapMigrationTest { companion object { diff --git a/app/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt b/app/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt index f1384aba31..b0391060a1 100644 --- a/app/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt +++ b/app/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt @@ -3,9 +3,7 @@ package io.github.sds100.keymapper import io.github.sds100.keymapper.util.DispatcherProvider import kotlinx.coroutines.test.TestDispatcher -/** - * Created by sds100 on 01/05/2021. - */ + class TestDispatcherProvider( private val testDispatcher: TestDispatcher, diff --git a/app/src/test/java/io/github/sds100/keymapper/TestLoggingTree.kt b/app/src/test/java/io/github/sds100/keymapper/TestLoggingTree.kt index 8e536fe8bf..29142b095c 100644 --- a/app/src/test/java/io/github/sds100/keymapper/TestLoggingTree.kt +++ b/app/src/test/java/io/github/sds100/keymapper/TestLoggingTree.kt @@ -2,9 +2,7 @@ package io.github.sds100.keymapper import timber.log.Timber -/** - * Created by sds100 on 25/06/2021. - */ + class TestLoggingTree : Timber.Tree() { override fun log(priority: Int, tag: String?, message: String, t: Throwable?) { t?.printStackTrace() diff --git a/app/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt b/app/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt index ce793923e7..370ded7dc2 100644 --- a/app/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt @@ -22,10 +22,6 @@ import org.mockito.junit.MockitoJUnitRunner import org.mockito.kotlin.mock import org.mockito.kotlin.whenever -/** - * Created by sds100 on 01/05/2021. - */ - @ExperimentalCoroutinesApi @RunWith(MockitoJUnitRunner::class) class GetActionFailedUseCaseTest { diff --git a/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt b/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt index 906f511012..4cbb0293e9 100644 --- a/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt @@ -29,9 +29,7 @@ import org.mockito.kotlin.times import org.mockito.kotlin.verify import org.mockito.kotlin.whenever -/** - * Created by sds100 on 01/05/2021. - */ + @ExperimentalCoroutinesApi @RunWith(MockitoJUnitRunner::class) diff --git a/app/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt b/app/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt index 298c1dc130..b348c05cd9 100644 --- a/app/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt @@ -24,10 +24,6 @@ import org.mockito.junit.MockitoJUnitRunner import org.mockito.kotlin.any import org.mockito.kotlin.mock -/** - * Created by sds100 on 28/04/2021. - */ - @ExperimentalCoroutinesApi @RunWith(MockitoJUnitRunner::class) class ConfigKeyServiceEventActionViewModelTest { diff --git a/app/src/test/java/io/github/sds100/keymapper/data/repositories/FakePreferenceRepository.kt b/app/src/test/java/io/github/sds100/keymapper/data/repositories/FakePreferenceRepository.kt index 3c4d491026..5562887634 100644 --- a/app/src/test/java/io/github/sds100/keymapper/data/repositories/FakePreferenceRepository.kt +++ b/app/src/test/java/io/github/sds100/keymapper/data/repositories/FakePreferenceRepository.kt @@ -5,9 +5,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.map -/** - * Created by sds100 on 26/04/2021. - */ class FakePreferenceRepository : PreferenceRepository { private val preferences: MutableStateFlow, Any?>> = MutableStateFlow(emptyMap()) diff --git a/app/src/test/java/io/github/sds100/keymapper/data/repositories/KeyMapRepositoryTest.kt b/app/src/test/java/io/github/sds100/keymapper/data/repositories/KeyMapRepositoryTest.kt index 97738f47ea..e18e2ef308 100644 --- a/app/src/test/java/io/github/sds100/keymapper/data/repositories/KeyMapRepositoryTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/data/repositories/KeyMapRepositoryTest.kt @@ -21,10 +21,6 @@ import org.mockito.kotlin.inOrder import org.mockito.kotlin.mock import org.mockito.kotlin.times -/** - * Created by sds100 on 01/05/2021. - */ - @ExperimentalCoroutinesApi @RunWith(MockitoJUnitRunner::class) class KeyMapRepositoryTest { diff --git a/app/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt b/app/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt index 732c7d92b0..f8736cd88b 100644 --- a/app/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt @@ -16,10 +16,6 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith -/** - * Created by sds100 on 15/05/2021. - */ - @ExperimentalCoroutinesApi @RunWith(JUnitParamsRunner::class) class DpadMotionEventTrackerTest { diff --git a/app/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt b/app/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt index 9d71210a07..2eba0fb697 100644 --- a/app/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt @@ -65,10 +65,6 @@ import org.mockito.kotlin.verify import org.mockito.kotlin.whenever import splitties.bitflags.withFlag -/** - * Created by sds100 on 17/05/2020. - */ - @ExperimentalCoroutinesApi @RunWith(JUnitParamsRunner::class) class KeyMapControllerTest { diff --git a/app/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt b/app/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt index 631e7bc33b..4c2ff098b3 100644 --- a/app/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt @@ -27,9 +27,7 @@ import org.mockito.kotlin.mock import org.mockito.kotlin.times import org.mockito.kotlin.verify -/** - * Created by sds100 on 23/06/2021. - */ + @ExperimentalCoroutinesApi @RunWith(JUnitParamsRunner::class) diff --git a/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt b/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt index 11aad62ed7..69a386e111 100644 --- a/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt +++ b/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt @@ -7,9 +7,6 @@ import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow -/** - * Created by sds100 on 26/04/2021. - */ class FakeDevicesAdapter : DevicesAdapter { override val onInputDeviceConnect = MutableSharedFlow() override val onInputDeviceDisconnect = MutableSharedFlow() diff --git a/app/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt b/app/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt index 67125030db..50d3ad678c 100644 --- a/app/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt +++ b/app/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt @@ -7,9 +7,6 @@ import org.junit.rules.TemporaryFolder import java.io.File import java.io.InputStream -/** - * Created by sds100 on 29/06/2021. - */ class FakeFileAdapter( private val tempFolder: TemporaryFolder, ) : FileAdapter { diff --git a/app/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt b/app/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt index 9c4c07b233..e8b525a83d 100644 --- a/app/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt +++ b/app/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt @@ -8,9 +8,6 @@ import java.io.File import java.io.InputStream import java.io.OutputStream -/** - * Created by sds100 on 29/06/2021. - */ class JavaFile(val file: File) : IFile { override val uri: String diff --git a/app/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt b/app/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt index 627ff1d7d9..f149c58887 100644 --- a/app/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt @@ -19,9 +19,6 @@ import org.junit.Before import org.junit.Rule import org.junit.Test -/** - * Created by sds100 on 29/04/2022. - */ @ExperimentalCoroutinesApi internal class ConfigIntentViewModelTest { diff --git a/app/src/test/java/io/github/sds100/keymapper/util/FlowUtils.kt b/app/src/test/java/io/github/sds100/keymapper/util/FlowUtils.kt index cde03040ea..64c8fb04f7 100644 --- a/app/src/test/java/io/github/sds100/keymapper/util/FlowUtils.kt +++ b/app/src/test/java/io/github/sds100/keymapper/util/FlowUtils.kt @@ -4,9 +4,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.toList import kotlinx.coroutines.withTimeoutOrNull -/** - * Created by sds100 on 19/04/2021. - */ object FlowUtils { /** * This is useful for collecting SharedFlow in tests. diff --git a/app/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt b/app/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt index 71e2d52856..592a1bc430 100644 --- a/app/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt +++ b/app/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt @@ -11,9 +11,6 @@ import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.core.Is.`is` import org.junit.Assert -/** - * Created by sds100 on 25/01/21. - */ object JsonTestUtils { private const val NAME_SEPARATOR = '/' diff --git a/app/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt b/app/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt index eb4a9c26c3..336ff1cabc 100644 --- a/app/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt +++ b/app/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt @@ -7,10 +7,6 @@ import io.github.sds100.keymapper.trigger.TriggerKey import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode -/** - * Created by sds100 on 19/04/2021. - */ - fun singleKeyTrigger(key: TriggerKey): Trigger = Trigger( keys = listOf(key), mode = TriggerMode.Undefined, diff --git a/app/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt b/app/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt index 9574f8c285..be1b2c930c 100644 --- a/app/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt +++ b/app/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt @@ -4,9 +4,6 @@ import android.graphics.drawable.Drawable import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow -/** - * Created by sds100 on 26/04/2021. - */ class FakeResourceProvider : ResourceProvider { val stringResourceMap: MutableMap = mutableMapOf() override val onThemeChange: Flow = MutableSharedFlow() diff --git a/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt index fa651f12e6..47a06ddb0e 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt @@ -16,9 +16,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update -/** - * Created by sds100 on 22/04/2021. - */ class AndroidLockScreenAdapter(context: Context) : LockScreenAdapter { private val ctx = context.applicationContext diff --git a/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt index dc59ff4975..67e3848aef 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt @@ -5,9 +5,7 @@ import androidx.annotation.RequiresApi import io.github.sds100.keymapper.common.result.Result import kotlinx.coroutines.flow.Flow -/** - * Created by sds100 on 20/04/2021. - */ + interface LockScreenAdapter { fun secureLockDevice(): Result<*> From c241a2958984e9642f5d4b72e89a7ee97ecfeb72 Mon Sep 17 00:00:00 2001 From: sds100 Date: Fri, 16 May 2025 19:12:53 +0200 Subject: [PATCH 07/71] #1711 move all system adapters to system module --- .../sds100/keymapper/actions/ActionsScreen.kt | 2 +- .../keymapper/actions/ChooseActionScreen.kt | 2 +- .../actions/ChooseActionViewModel.kt | 2 +- .../actions/ConfigActionsViewModel.kt | 6 +- .../actions/PerformActionsUseCase.kt | 4 +- .../actions/keyevent/ChooseKeyCodeFragment.kt | 2 +- .../keyevent/ChooseKeyCodeViewModel.kt | 2 +- .../actions/keyevent/ConfigKeyEventUseCase.kt | 2 +- .../uielement/ChooseUiElementScreen.kt | 2 +- .../uielement/InteractUiElementScreen.kt | 2 +- .../uielement/InteractUiElementUseCase.kt | 4 +- .../uielement/InteractUiElementViewModel.kt | 8 +- .../sds100/keymapper/backup/BackupManager.kt | 2 +- .../constraints/ChooseConstraintScreen.kt | 2 +- .../constraints/ChooseConstraintViewModel.kt | 2 +- .../constraints/ConfigConstraintsViewModel.kt | 6 +- .../constraints/ConstraintsScreen.kt | 2 +- .../AccessibilityNodeRepository.kt | 2 +- .../repositories/FloatingButtonRepository.kt | 2 +- .../repositories/FloatingLayoutRepository.kt | 2 +- .../data/repositories/RoomKeyMapRepository.kt | 2 +- .../data/repositories/RoomLogRepository.kt | 2 +- .../keymapper/home/HomeKeyMapListScreen.kt | 2 +- .../keymaps/ConfigKeyMapOptionsViewModel.kt | 6 +- .../keymapper/keymaps/ConfigKeyMapUseCase.kt | 6 +- .../keymaps/ConfigKeyMapViewModel.kt | 4 +- .../keymaps/CreateKeyMapShortcutScreen.kt | 2 +- .../keymaps/CreateKeyMapShortcutViewModel.kt | 4 +- .../keymapper/keymaps/DisplayKeyMapUseCase.kt | 4 +- .../sds100/keymapper/keymaps/KeyMapGroup.kt | 2 +- .../keymapper/keymaps/KeyMapListScreen.kt | 2 +- .../keymapper/keymaps/KeyMapListState.kt | 2 +- .../keymapper/keymaps/KeyMapListViewModel.kt | 8 +- .../keymapper/keymaps/KeyMapOptionsScreen.kt | 2 +- .../keymapper/keymaps/KeyMapRepository.kt | 2 +- .../keymapper/keymaps/ListKeyMapsUseCase.kt | 4 +- .../keymaps/detection/DetectKeyMapsUseCase.kt | 4 +- .../DetectScreenOffKeyEventsController.kt | 2 +- .../keymapper/logging/DisplayLogUseCase.kt | 6 +- .../sds100/keymapper/logging/LogFragment.kt | 2 +- .../sds100/keymapper/logging/LogRepository.kt | 2 +- .../sds100/keymapper/logging/LogViewModel.kt | 6 +- .../keymapper/onboarding/OnboardingUseCase.kt | 2 +- .../keymapper/purchasing/PurchasingManager.kt | 2 +- .../settings/ConfigSettingsUseCase.kt | 2 +- .../keymapper/settings/SettingsViewModel.kt | 2 +- .../system/apps/ChooseActivityFragment.kt | 3 +- .../system/apps/ChooseActivityViewModel.kt | 2 +- .../system/apps/ChooseAppFragment.kt | 2 +- .../system/apps/ChooseAppShortcutFragment.kt | 3 +- .../system/apps/ChooseAppShortcutViewModel.kt | 4 +- .../system/apps/ChooseAppViewModel.kt | 4 +- .../ChooseBluetoothDeviceFragment.kt | 2 +- .../ChooseBluetoothDeviceViewModel.kt | 2 +- .../trigger/BaseConfigTriggerViewModel.kt | 8 +- .../sds100/keymapper/trigger/TriggerScreen.kt | 2 +- .../sds100/keymapper/util/FilterUtils.kt | 1 + .../keymapper/util/ui/RecyclerViewFragment.kt | 2 +- .../sds100/keymapper/BackupManagerTest.kt | 2 +- .../keymapper/ConfigKeyMapUseCaseTest.kt | 4 +- .../actions/PerformActionsUseCaseTest.kt | 2 +- .../system/devices/FakeDevicesAdapter.kt | 2 +- .../sds100/keymapper/common/state}/State.kt | 2 +- .../system/AndroidSystemFeatureAdapter.kt | 8 +- .../keymapper/system/BootBroadcastReceiver.kt | 0 .../sds100/keymapper/system/BuildUtils.kt | 0 .../sds100/keymapper/system/DeviceAdmin.kt | 0 .../keymapper/system/JobSchedulerHelper.kt | 0 .../sds100/keymapper/system/SettingsUtils.kt | 0 .../github/sds100/keymapper/system/Shell.kt | 0 .../sds100/keymapper/system/SystemError.kt | 0 .../keymapper/system/SystemHiltModule.kt | 155 ++++++++++++++++++ .../accessibility/AccessibilityNodeAction.kt | 0 .../accessibility/AccessibilityNodeModel.kt | 0 .../AccessibilityNodeRecorder.kt | 0 .../AccessibilityServiceAdapter.kt | 0 .../accessibility/AccessibilityUtils.kt | 0 .../BaseAccessibilityServiceController.kt | 0 .../ControlAccessibilityServiceUseCase.kt | 0 .../accessibility/IAccessibilityService.kt | 0 .../accessibility/MyAccessibilityService.kt | 0 .../ObserveEnabledAccessibilityServicesJob.kt | 0 .../RecordAccessibilityNodeState.kt | 0 .../system/accessibility/ServiceAdapter.kt | 0 .../system/accessibility/ServiceState.kt | 0 .../airplanemode/AirplaneModeAdapter.kt | 0 .../AndroidAirplaneModeAdapter.kt | 8 +- .../system/apps/AndroidAppShortcutAdapter.kt | 12 +- .../apps/AndroidPackageManagerAdapter.kt | 2 +- .../system/apps/AppShortcutAdapter.kt | 2 +- .../keymapper/system/apps/AppShortcutInfo.kt | 0 .../system/apps/AppShortcutListItem.kt | 0 .../keymapper/system/apps/ChooseAppScreen.kt | 2 +- .../system/apps/ChooseAppShortcutResult.kt | 0 .../system/apps/DisplayAppShortcutsUseCase.kt | 2 +- .../system/apps/DisplayAppsUseCase.kt | 2 +- .../keymapper/system/apps/PackageInfo.kt | 0 .../system/apps/PackageManagerAdapter.kt | 2 +- .../bluetooth/AndroidBluetoothAdapter.kt | 8 +- .../system/bluetooth/BluetoothAdapter.kt | 0 .../bluetooth/BluetoothBroadcastReceiver.kt | 0 .../system/bluetooth/BluetoothDeviceInfo.kt | 0 .../bluetooth/ChooseBluetoothDeviceUseCase.kt | 0 .../system/camera/AndroidCameraAdapter.kt | 10 +- .../keymapper/system/camera/CameraAdapter.kt | 0 .../system/camera/CameraFlashInfo.kt | 0 .../keymapper/system/camera/CameraLens.kt | 0 .../system/camera/CameraLensUtils.kt | 0 .../clipboard/AndroidClipboardAdapter.kt | 8 +- .../system/clipboard/ClipboardAdapter.kt | 0 .../system/devices/AndroidDevicesAdapter.kt | 10 +- .../system/devices/DevicesAdapter.kt | 2 +- .../system/devices/InputDeviceInfo.kt | 0 .../system/devices/InputDeviceUtils.kt | 0 .../system/display/AndroidDisplayAdapter.kt | 8 +- .../system/display/DisplayAdapter.kt | 0 .../keymapper/system/display/Orientation.kt | 0 .../system/display/OrientationUtils.kt | 0 .../system/files/AndroidFileAdapter.kt | 10 +- .../system/files/DocumentFileWrapper.kt | 0 .../keymapper/system/files/FileAdapter.kt | 0 .../keymapper/system/files/FileUtils.kt | 0 .../sds100/keymapper/system/files/IFile.kt | 0 .../system/inputevents/InputEventInjector.kt | 0 .../system/inputevents/InputEventUtils.kt | 0 .../system/inputevents/MyKeyEvent.kt | 0 .../system/inputevents/MyMotionEvent.kt | 0 .../inputmethod/AndroidInputMethodAdapter.kt | 8 +- .../inputmethod/AutoSwitchImeController.kt | 0 .../keymapper/system/inputmethod/ImeInfo.kt | 0 .../inputmethod/ImeInputEventInjector.kt | 0 .../system/inputmethod/InputKeyModel.kt | 0 .../system/inputmethod/InputMethodAdapter.kt | 0 .../system/inputmethod/KeyMapperImeHelper.kt | 0 .../system/inputmethod/KeyMapperImeService.kt | 0 .../inputmethod/ObserveInputMethodsJob.kt | 0 .../inputmethod/ShowHideInputMethodUseCase.kt | 0 .../ShowInputMethodPickerUseCase.kt | 0 .../inputmethod/ToggleCompatibleImeUseCase.kt | 0 .../system/intents/ConfigIntentResult.kt | 0 .../keymapper/system/intents/IntentAdapter.kt | 0 .../system/intents/IntentAdapterImpl.kt | 13 ++ .../system/intents/IntentExtraListItem.kt | 0 .../system/intents/IntentExtraModel.kt | 0 .../system/intents/IntentExtraType.kt | 0 .../keymapper/system/intents/IntentTarget.kt | 0 .../system/leanback/LeanbackAdapter.kt | 0 .../system/leanback/LeanbackAdapterImpl.kt | 13 ++ .../system/leanback/LeanbackUtils.kt | 0 .../system/media/AndroidMediaAdapter.kt | 11 +- .../keymapper/system/media/MediaAdapter.kt | 0 .../system/navigation/OpenMenuHelper.kt | 0 .../system/network/AndroidNetworkAdapter.kt | 8 +- .../keymapper/system/network/HttpMethod.kt | 0 .../system/network/NetworkAdapter.kt | 0 .../keymapper/system/nfc/AndroidNfcAdapter.kt | 8 +- .../sds100/keymapper/system/nfc/NfcAdapter.kt | 0 .../AndroidNotificationAdapter.kt | 8 +- .../ManageNotificationsUseCase.kt | 0 .../notifications/NotificationAdapter.kt | 0 .../notifications/NotificationChannelModel.kt | 0 .../NotificationClickReceiver.kt | 0 .../notifications/NotificationController.kt | 0 .../system/notifications/NotificationModel.kt | 0 .../notifications/NotificationReceiver.kt | 0 .../NotificationReceiverAdapter.kt | 0 .../system/notifications/NotificationUtils.kt | 0 .../ObserveNotificationListenersJob.kt | 0 .../permissions/AndroidPermissionAdapter.kt | 8 +- .../AutoGrantPermissionController.kt | 0 .../system/permissions/Permission.kt | 0 .../system/permissions/PermissionAdapter.kt | 0 .../permissions/RequestPermissionDelegate.kt | 0 .../permissions/SystemFeatureAdapter.kt | 0 .../system/phone/AndroidPhoneAdapter.kt | 8 +- .../keymapper/system/phone/CallState.kt | 0 .../keymapper/system/phone/PhoneAdapter.kt | 0 .../system/popup/AndroidToastAdapter.kt | 8 +- .../system/popup/PopupMessageAdapter.kt | 0 .../system/power/AndroidPowerAdapter.kt | 10 +- .../keymapper/system/power/PowerAdapter.kt | 0 .../ringtones/AndroidRingtoneAdapter.kt | 13 ++ .../system/ringtones/RingtoneAdapter.kt | 0 .../sds100/keymapper/system/root/SuAdapter.kt | 0 .../keymapper/system/root/SuAdapterImpl.kt | 13 ++ .../keymapper/system/shell/ShellAdapter.kt | 0 .../tiles/ToggleKeyMapperKeyboardTile.kt | 0 .../system/tiles/ToggleMappingsTile.kt | 0 .../system/url/AndroidOpenUrlAdapter.kt | 8 +- .../keymapper/system/url/OpenUrlAdapter.kt | 0 .../sds100/keymapper/system/url/UrlUtils.kt | 0 .../system/vibrator/AndroidVibratorAdapter.kt | 8 +- .../system/vibrator/VibratorAdapter.kt | 0 .../system/volume/AndroidVolumeAdapter.kt | 10 +- .../sds100/keymapper/system/volume/DndMode.kt | 0 .../keymapper/system/volume/DndModeUtils.kt | 0 .../keymapper/system/volume/RingerMode.kt | 0 .../system/volume/RingerModeUtils.kt | 0 .../keymapper/system/volume/VolumeAdapter.kt | 0 .../keymapper/system/volume/VolumeStream.kt | 0 .../system/volume/VolumeStreamUtils.kt | 0 201 files changed, 454 insertions(+), 141 deletions(-) rename {app/src/main/java/io/github/sds100/keymapper/util => common/src/main/java/io/github/sds100/keymapper/common/state}/State.kt (91%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/AndroidSystemFeatureAdapter.kt (62%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/BootBroadcastReceiver.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/DeviceAdmin.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/JobSchedulerHelper.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/SettingsUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/Shell.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/SystemError.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeAction.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeModel.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeRecorder.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/RecordAccessibilityNodeState.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceState.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt (82%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt (94%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt (99%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt (95%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutInfo.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutListItem.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppScreen.kt (99%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutResult.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt (94%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt (96%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/apps/PackageInfo.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt (96%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt (95%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothDeviceInfo.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceUseCase.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt (97%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/camera/CameraFlashInfo.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/camera/CameraLens.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/clipboard/AndroidClipboardAdapter.kt (66%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/clipboard/ClipboardAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt (95%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt (93%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceInfo.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt (97%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/display/Orientation.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt (95%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/files/FileUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventInjector.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputevents/MyKeyEvent.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputevents/MyMotionEvent.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt (97%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInfo.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowInputMethodPickerUseCase.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentResult.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt (100%) create mode 100644 system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapterImpl.kt rename {app => system}/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraListItem.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraModel.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/intents/IntentTarget.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt (100%) create mode 100644 system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapterImpl.kt rename {app => system}/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt (96%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt (96%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/network/HttpMethod.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt (75%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt (94%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/notifications/ManageNotificationsUseCase.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationChannelModel.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationClickReceiver.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationModel.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt (98%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/permissions/Permission.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/permissions/SystemFeatureAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt (93%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/phone/CallState.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt (50%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/power/AndroidPowerAdapter.kt (88%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/power/PowerAdapter.kt (100%) create mode 100644 system/src/main/java/io/github/sds100/keymapper/system/ringtones/AndroidRingtoneAdapter.kt rename {app => system}/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt (100%) create mode 100644 system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapterImpl.kt rename {app => system}/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt (51%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/vibrator/AndroidVibratorAdapter.kt (80%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/vibrator/VibratorAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt (96%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/volume/DndMode.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/volume/RingerMode.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStream.kt (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt (100%) diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionsScreen.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ActionsScreen.kt index e53596658e..59429a0548 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionsScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ActionsScreen.kt @@ -42,7 +42,7 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.keymaps.ShortcutModel import io.github.sds100.keymapper.keymaps.ShortcutRow import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.ui.LinkType import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.util.ui.compose.DraggableItem diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionScreen.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionScreen.kt index 34cc3a8616..2f805e9d5c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionScreen.kt @@ -40,7 +40,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.util.ui.compose.SearchAppBarActions import io.github.sds100.keymapper.util.ui.compose.SimpleListItemFixedHeight diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt index 2ffd0549b4..227da69b45 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.containsQuery import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.ui.DialogResponse diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt index cbe1ac5741..a87228759d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt @@ -9,11 +9,11 @@ import io.github.sds100.keymapper.keymaps.ShortcutModel import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.dataOrNull +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.isFixable -import io.github.sds100.keymapper.util.mapData +import io.github.sds100.keymapper.common.state.mapData import io.github.sds100.keymapper.util.ui.ChooseAppStoreModel import io.github.sds100.keymapper.util.ui.DialogResponse import io.github.sds100.keymapper.util.ui.LinkType diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt index 62901d4b80..e0f9cd4105 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt @@ -57,11 +57,11 @@ import io.github.sds100.keymapper.system.volume.VolumeAdapter import io.github.sds100.keymapper.system.volume.VolumeStream import io.github.sds100.keymapper.util.InputEventType import io.github.sds100.keymapper.util.ServiceEvent -import io.github.sds100.keymapper.util.dataOrNull +import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.util.firstBlocking import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.getWordBoundaries -import io.github.sds100.keymapper.util.ifIsData +import io.github.sds100.keymapper.common.state.ifIsData import io.github.sds100.keymapper.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeFragment.kt b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeFragment.kt index 9c5670f308..5254eebb8d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeFragment.kt @@ -7,7 +7,7 @@ import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.util.ui.RecyclerViewUtils import io.github.sds100.keymapper.util.ui.SimpleListItemOld diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt index b68fb04f38..9b894b9f0d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.filterByQuery import io.github.sds100.keymapper.util.ui.DefaultSimpleListItem import io.github.sds100.keymapper.util.ui.SimpleListItemOld diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventUseCase.kt index 20a1033e1b..5d72db5257 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventUseCase.kt @@ -4,7 +4,7 @@ import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/ChooseUiElementScreen.kt b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/ChooseUiElementScreen.kt index 340f304358..beaac9f2f9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/ChooseUiElementScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/ChooseUiElementScreen.kt @@ -51,7 +51,7 @@ import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.ui.compose.CheckBoxText import io.github.sds100.keymapper.util.ui.compose.KeyMapperDropdownMenu import io.github.sds100.keymapper.util.ui.compose.SearchAppBarActions diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementScreen.kt b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementScreen.kt index 7ff879f499..23d9992f46 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementScreen.kt @@ -73,7 +73,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.system.apps.ChooseAppScreen -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.drawable import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.util.ui.compose.KeyMapperDropdownMenu diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementUseCase.kt index afbe7d81e7..bcfa964984 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementUseCase.kt @@ -9,8 +9,8 @@ import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeSt import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.util.ServiceEvent -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.mapData +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.mapData import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt index 86b85162dd..2087fe8451 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt @@ -14,11 +14,11 @@ import io.github.sds100.keymapper.common.result.then import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.containsQuery -import io.github.sds100.keymapper.util.dataOrNull -import io.github.sds100.keymapper.util.ifIsData -import io.github.sds100.keymapper.util.mapData +import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.common.state.ifIsData +import io.github.sds100.keymapper.common.state.mapData import io.github.sds100.keymapper.util.ui.PopupViewModel import io.github.sds100.keymapper.util.ui.PopupViewModelImpl import io.github.sds100.keymapper.util.ui.ResourceProvider diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt b/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt index fec0d42c8f..8d79c8f80d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt +++ b/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt @@ -55,7 +55,7 @@ import io.github.sds100.keymapper.system.files.IFile import io.github.sds100.keymapper.util.DefaultDispatcherProvider import io.github.sds100.keymapper.util.DefaultUuidGenerator import io.github.sds100.keymapper.util.DispatcherProvider -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.TreeNode import io.github.sds100.keymapper.util.UuidGenerator import io.github.sds100.keymapper.util.breadFirstTraversal diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintScreen.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintScreen.kt index 958b557d29..9582fc5b64 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintScreen.kt @@ -47,7 +47,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.util.ui.compose.SimpleListItemFixedHeight import io.github.sds100.keymapper.util.ui.compose.SimpleListItemModel diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintViewModel.kt index 1dfb66cb0a..6e61f99532 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintViewModel.kt @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.camera.CameraLensUtils import io.github.sds100.keymapper.system.display.Orientation -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.containsQuery import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.ui.NavDestination diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt index 96e9f91247..c7113efc08 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt @@ -8,11 +8,11 @@ import io.github.sds100.keymapper.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.keymaps.ShortcutModel import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.dataOrNull +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.isFixable -import io.github.sds100.keymapper.util.mapData +import io.github.sds100.keymapper.common.state.mapData import io.github.sds100.keymapper.util.ui.NavDestination import io.github.sds100.keymapper.util.ui.NavigationViewModel import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintsScreen.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintsScreen.kt index 8c5d50b219..85804a55f8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintsScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintsScreen.kt @@ -42,7 +42,7 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.keymaps.ShortcutModel import io.github.sds100.keymapper.keymaps.ShortcutRow import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.drawable import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.util.ui.compose.RadioButtonText diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt b/app/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt index 8783d66dd5..8cd11a4c83 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.data.repositories import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt b/app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt index 50080c1290..0d28fd0cb0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt @@ -5,7 +5,7 @@ import io.github.sds100.keymapper.data.entities.FloatingButtonEntity import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout import io.github.sds100.keymapper.util.DefaultDispatcherProvider import io.github.sds100.keymapper.util.DispatcherProvider -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt b/app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt index 88fcc5a0b4..e4160377fb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.data.entities.FloatingLayoutEntity import io.github.sds100.keymapper.data.entities.FloatingLayoutEntityWithButtons import io.github.sds100.keymapper.util.DefaultDispatcherProvider import io.github.sds100.keymapper.util.DispatcherProvider -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt b/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt index 7ad76800a7..7246d8de53 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt @@ -8,7 +8,7 @@ import io.github.sds100.keymapper.data.migration.fingerprintmaps.FingerprintToKe import io.github.sds100.keymapper.keymaps.KeyMapRepository import io.github.sds100.keymapper.util.DefaultDispatcherProvider import io.github.sds100.keymapper.util.DispatcherProvider -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.splitIntoBatches import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt b/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt index 5e5d916b3b..27f409150c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt +++ b/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.data.repositories import io.github.sds100.keymapper.data.db.dao.LogEntryDao import io.github.sds100.keymapper.data.entities.LogEntryEntity import io.github.sds100.keymapper.logging.LogRepository -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeKeyMapListScreen.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeKeyMapListScreen.kt index a449ab67b9..f8e6fd3ece 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeKeyMapListScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeKeyMapListScreen.kt @@ -70,7 +70,7 @@ import io.github.sds100.keymapper.trigger.DpadTriggerSetupBottomSheet import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.util.ShareUtils -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.drawable import io.github.sds100.keymapper.util.ui.compose.CollapsableFloatingActionButton import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapOptionsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapOptionsViewModel.kt index 1e992a1e9d..4694619ceb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapOptionsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapOptionsViewModel.kt @@ -5,10 +5,10 @@ import android.graphics.drawable.Drawable import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionUiHelper import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.dataOrNull +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.mapData +import io.github.sds100.keymapper.common.state.mapData import io.github.sds100.keymapper.util.ui.PopupUi import io.github.sds100.keymapper.util.ui.PopupViewModel import io.github.sds100.keymapper.util.ui.PopupViewModelImpl diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt index 93eb36edd6..52b52cc0f8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt @@ -28,10 +28,10 @@ import io.github.sds100.keymapper.trigger.TriggerKey import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode import io.github.sds100.keymapper.util.ServiceEvent -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.dataOrNull +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.util.firstBlocking -import io.github.sds100.keymapper.util.ifIsData +import io.github.sds100.keymapper.common.state.ifIsData import io.github.sds100.keymapper.util.moveElement import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt index 9eb234b714..d0064344f9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt @@ -16,9 +16,9 @@ import io.github.sds100.keymapper.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.ui.utils.getJsonSerializable import io.github.sds100.keymapper.ui.utils.putJsonSerializable -import io.github.sds100.keymapper.util.dataOrNull +import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.util.firstBlocking -import io.github.sds100.keymapper.util.ifIsData +import io.github.sds100.keymapper.common.state.ifIsData import io.github.sds100.keymapper.util.ui.ResourceProvider import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutScreen.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutScreen.kt index 03ca71cde9..3c082d8cd2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutScreen.kt @@ -47,7 +47,7 @@ import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.groups.GroupRow import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.drawable import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt index ba9982d3f4..7b8f1607aa 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt @@ -17,8 +17,8 @@ import io.github.sds100.keymapper.constraints.ConstraintUiHelper import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.mapData +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.mapData import io.github.sds100.keymapper.util.ui.ResourceProvider import io.github.sds100.keymapper.util.ui.TintType import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt index 0b0b73db96..65d9900bf0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt @@ -27,8 +27,8 @@ import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.dataOrNull +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.dataOrNull import kotlinx.coroutines.TimeoutCancellationException import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.callbackFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapGroup.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapGroup.kt index 32a4a17028..70fbec0d95 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapGroup.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapGroup.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.keymaps import io.github.sds100.keymapper.groups.Group -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State data class KeyMapGroup( val group: Group?, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListScreen.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListScreen.kt index 974605f593..ca35423b1a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListScreen.kt @@ -59,7 +59,7 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.drawable import io.github.sds100.keymapper.util.ui.compose.CompactChip import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListState.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListState.kt index 44f6139227..2b23d03397 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListState.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListState.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.keymaps import io.github.sds100.keymapper.trigger.KeyMapListItemModel -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State data class KeyMapListState( val appBarState: KeyMapAppBarState, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListViewModel.kt index f69f371d06..2bc077aaf5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListViewModel.kt @@ -35,11 +35,11 @@ import io.github.sds100.keymapper.trigger.SetupGuiKeyboardState import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.dataOrNull +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.ifIsData -import io.github.sds100.keymapper.util.mapData +import io.github.sds100.keymapper.common.state.ifIsData +import io.github.sds100.keymapper.common.state.mapData import io.github.sds100.keymapper.util.ui.DialogResponse import io.github.sds100.keymapper.util.ui.MultiSelectProvider import io.github.sds100.keymapper.util.ui.NavDestination diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapOptionsScreen.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapOptionsScreen.kt index 87c6a00c5c..f2b102ce13 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapOptionsScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapOptionsScreen.kt @@ -43,7 +43,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.ui.SliderMaximums import io.github.sds100.keymapper.util.ui.SliderMinimums import io.github.sds100.keymapper.util.ui.SliderStepSizes diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapRepository.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapRepository.kt index c38ca3e8a9..7e91734c07 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapRepository.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapRepository.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.keymaps import io.github.sds100.keymapper.data.entities.KeyMapEntity -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.flow.Flow interface KeyMapRepository { diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt index 1526ab0c47..238860ccca 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt @@ -19,8 +19,8 @@ import io.github.sds100.keymapper.groups.Group import io.github.sds100.keymapper.groups.GroupEntityMapper import io.github.sds100.keymapper.groups.GroupFamily import io.github.sds100.keymapper.system.files.FileAdapter -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.dataOrNull +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.util.ui.ResourceProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt index 0c115ac54f..abe5b92b9c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt @@ -30,8 +30,8 @@ import io.github.sds100.keymapper.system.vibrator.VibratorAdapter import io.github.sds100.keymapper.system.volume.VolumeAdapter import io.github.sds100.keymapper.trigger.FingerprintTriggerKey import io.github.sds100.keymapper.util.InputEventType -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.dataOrNull +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt index de2f2a7c3b..4da498759e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt @@ -8,7 +8,7 @@ import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/DisplayLogUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/logging/DisplayLogUseCase.kt index 3d01661f5a..76b89b216c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/DisplayLogUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/DisplayLogUseCase.kt @@ -3,9 +3,9 @@ package io.github.sds100.keymapper.logging import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.clipboard.ClipboardAdapter import io.github.sds100.keymapper.system.files.FileAdapter -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.ifIsData -import io.github.sds100.keymapper.util.mapData +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.ifIsData +import io.github.sds100.keymapper.common.state.mapData import io.github.sds100.keymapper.util.ui.ResourceProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogFragment.kt b/app/src/main/java/io/github/sds100/keymapper/logging/LogFragment.kt index 812858fb43..30b8198880 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/LogFragment.kt @@ -19,7 +19,7 @@ import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.logEntry import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.util.ui.SimpleRecyclerViewFragment import io.github.sds100.keymapper.util.ui.showPopups diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogRepository.kt b/app/src/main/java/io/github/sds100/keymapper/logging/LogRepository.kt index 34fd4f97c7..4ee9a218db 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogRepository.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/LogRepository.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.logging import io.github.sds100.keymapper.data.entities.LogEntryEntity -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt index 224264914a..a2abeb28fd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt @@ -5,9 +5,9 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import com.michaelflisar.dragselectrecyclerview.DragSelectionProcessor import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.ifIsData -import io.github.sds100.keymapper.util.mapData +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.ifIsData +import io.github.sds100.keymapper.common.state.mapData import io.github.sds100.keymapper.util.ui.MultiSelectProvider import io.github.sds100.keymapper.util.ui.PopupUi import io.github.sds100.keymapper.util.ui.PopupViewModel diff --git a/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt index bd75449a10..c5668776c9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt @@ -22,7 +22,7 @@ import io.github.sds100.keymapper.system.leanback.LeanbackAdapter import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.util.PrefDelegate -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.VersionHelper import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine diff --git a/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManager.kt b/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManager.kt index ceb66e2366..b072f27dd7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManager.kt +++ b/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManager.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.purchasing import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt index 602768fb24..541b14d365 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt @@ -18,7 +18,7 @@ import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.channelFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt index 9554342340..a7e6563845 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt @@ -9,7 +9,7 @@ import io.github.sds100.keymapper.common.result.onFailure import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.common.result.otherwise import io.github.sds100.keymapper.util.SharedPrefsDataStoreWrapper -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.getFullMessage import io.github.sds100.keymapper.util.ui.DialogResponse import io.github.sds100.keymapper.util.ui.MultiChoiceItem diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityFragment.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityFragment.kt index 2e7896175d..46628a319f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityFragment.kt @@ -6,11 +6,10 @@ import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.ui.RecyclerViewUtils import io.github.sds100.keymapper.util.ui.SimpleRecyclerViewFragment import kotlinx.coroutines.flow.Flow -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json class ChooseActivityFragment : SimpleRecyclerViewFragment() { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt index 8620d76987..36eddb72cc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt @@ -4,7 +4,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.common.result.valueOrNull -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.filterByQuery import io.github.sds100.keymapper.util.ui.IconInfo import io.github.sds100.keymapper.util.ui.TintType diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppFragment.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppFragment.kt index 7504654544..2b4b862e48 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppFragment.kt @@ -11,7 +11,7 @@ import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.databinding.FragmentChooseAppBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.util.ui.RecyclerViewFragment import io.github.sds100.keymapper.util.ui.RecyclerViewUtils diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutFragment.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutFragment.kt index 81ef17d60e..508b35fe23 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutFragment.kt @@ -12,14 +12,13 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.util.ui.RecyclerViewUtils import io.github.sds100.keymapper.util.ui.SimpleRecyclerViewFragment import io.github.sds100.keymapper.util.ui.showPopups import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import splitties.toast.toast diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt index 1d70a8d353..063d5b41ce 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt @@ -6,9 +6,9 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.valueOrNull -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.filterByQuery -import io.github.sds100.keymapper.util.mapData +import io.github.sds100.keymapper.common.state.mapData import io.github.sds100.keymapper.util.ui.IconInfo import io.github.sds100.keymapper.util.ui.PopupUi import io.github.sds100.keymapper.util.ui.PopupViewModel diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt index a939efc1f5..ccfd4c0eee 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt @@ -4,9 +4,9 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.common.result.valueOrNull -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.filterByQuery -import io.github.sds100.keymapper.util.mapData +import io.github.sds100.keymapper.common.state.mapData import io.github.sds100.keymapper.util.ui.DefaultSimpleListItem import io.github.sds100.keymapper.util.ui.IconInfo import io.github.sds100.keymapper.util.ui.SimpleListItemOld diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceFragment.kt b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceFragment.kt index 876d8625d8..9a732a207f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceFragment.kt @@ -8,7 +8,7 @@ import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.fixError import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.util.ui.ListItem import io.github.sds100.keymapper.util.ui.RecyclerViewUtils diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceViewModel.kt index d78512000c..e4ec041bbe 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceViewModel.kt @@ -4,7 +4,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.ui.DefaultSimpleListItem import io.github.sds100.keymapper.util.ui.ListItem import io.github.sds100.keymapper.util.ui.PopupViewModel diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt index b8a05c6c30..2a04b6fa70 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt @@ -27,10 +27,10 @@ import io.github.sds100.keymapper.purchasing.ProductId import io.github.sds100.keymapper.purchasing.PurchasingManager import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.dataOrNull -import io.github.sds100.keymapper.util.ifIsData -import io.github.sds100.keymapper.util.mapData +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.common.state.ifIsData +import io.github.sds100.keymapper.common.state.mapData import io.github.sds100.keymapper.util.ui.CheckBoxListItem import io.github.sds100.keymapper.util.ui.DialogResponse import io.github.sds100.keymapper.util.ui.LinkType diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt index edbf72bd54..b2c88cf3b8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt @@ -43,7 +43,7 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.keymaps.ClickType import io.github.sds100.keymapper.keymaps.ShortcutModel import io.github.sds100.keymapper.keymaps.ShortcutRow -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.ui.LinkType import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.util.ui.compose.DraggableItem diff --git a/app/src/main/java/io/github/sds100/keymapper/util/FilterUtils.kt b/app/src/main/java/io/github/sds100/keymapper/util/FilterUtils.kt index 9791bee312..99466ff20e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/FilterUtils.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/FilterUtils.kt @@ -1,5 +1,6 @@ package io.github.sds100.keymapper.util +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.ui.ISearchable import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewFragment.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewFragment.kt index 5d9ac1c1e7..a56a89fdcb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewFragment.kt @@ -20,7 +20,7 @@ import androidx.savedstate.SavedStateRegistry import com.airbnb.epoxy.EpoxyRecyclerView import com.google.android.material.bottomappbar.BottomAppBar import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.launchRepeatOnLifecycle import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest diff --git a/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt b/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt index 344aad900f..c482ef7f19 100644 --- a/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt @@ -26,7 +26,7 @@ import io.github.sds100.keymapper.keymaps.KeyMapRepository import io.github.sds100.keymapper.system.files.FakeFileAdapter import io.github.sds100.keymapper.system.files.IFile import io.github.sds100.keymapper.system.files.JavaFile -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.UuidGenerator import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/app/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt b/app/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt index 872b58fa97..e0213c8a9d 100644 --- a/app/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt @@ -15,8 +15,8 @@ import io.github.sds100.keymapper.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode -import io.github.sds100.keymapper.util.State -import io.github.sds100.keymapper.util.dataOrNull +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.util.singleKeyTrigger import io.github.sds100.keymapper.util.triggerKey import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt b/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt index 4cbb0293e9..2a49afb382 100644 --- a/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt +++ b/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.popup.PopupMessageAdapter import io.github.sds100.keymapper.util.InputEventType -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.test.TestScope diff --git a/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt b/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt index 69a386e111..d11a70a9d9 100644 --- a/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt +++ b/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.devices import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/util/State.kt b/common/src/main/java/io/github/sds100/keymapper/common/state/State.kt similarity index 91% rename from app/src/main/java/io/github/sds100/keymapper/util/State.kt rename to common/src/main/java/io/github/sds100/keymapper/common/state/State.kt index 5fdedba739..fb424f9d77 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/State.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/state/State.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.common.state sealed class State { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/AndroidSystemFeatureAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/AndroidSystemFeatureAdapter.kt similarity index 62% rename from app/src/main/java/io/github/sds100/keymapper/system/AndroidSystemFeatureAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/AndroidSystemFeatureAdapter.kt index cc4606e00d..0e92208654 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/AndroidSystemFeatureAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/AndroidSystemFeatureAdapter.kt @@ -1,9 +1,15 @@ package io.github.sds100.keymapper.system import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter -class AndroidSystemFeatureAdapter(context: Context) : SystemFeatureAdapter { +@Singleton +class AndroidSystemFeatureAdapter @Inject constructor( + @ApplicationContext private val context: Context +) : SystemFeatureAdapter { private val ctx = context.applicationContext override fun hasSystemFeature(feature: String): Boolean = ctx.packageManager.hasSystemFeature(feature) diff --git a/app/src/main/java/io/github/sds100/keymapper/system/BootBroadcastReceiver.kt b/system/src/main/java/io/github/sds100/keymapper/system/BootBroadcastReceiver.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/BootBroadcastReceiver.kt rename to system/src/main/java/io/github/sds100/keymapper/system/BootBroadcastReceiver.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/DeviceAdmin.kt b/system/src/main/java/io/github/sds100/keymapper/system/DeviceAdmin.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/DeviceAdmin.kt rename to system/src/main/java/io/github/sds100/keymapper/system/DeviceAdmin.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/JobSchedulerHelper.kt b/system/src/main/java/io/github/sds100/keymapper/system/JobSchedulerHelper.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/JobSchedulerHelper.kt rename to system/src/main/java/io/github/sds100/keymapper/system/JobSchedulerHelper.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/SettingsUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/SettingsUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/SettingsUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/SettingsUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/Shell.kt b/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/Shell.kt rename to system/src/main/java/io/github/sds100/keymapper/system/Shell.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/SystemError.kt b/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/SystemError.kt rename to system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt diff --git a/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt b/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt index cff9eec430..14be818864 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt @@ -1,11 +1,66 @@ package io.github.sds100.keymapper.system +import android.content.Context import dagger.Binds import dagger.Module +import dagger.Provides import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.airplanemode.AndroidAirplaneModeAdapter +import io.github.sds100.keymapper.system.airplanemode.AirplaneModeAdapter +import io.github.sds100.keymapper.system.apps.AndroidAppShortcutAdapter +import io.github.sds100.keymapper.system.apps.AndroidPackageManagerAdapter +import io.github.sds100.keymapper.system.apps.AppShortcutAdapter +import io.github.sds100.keymapper.system.apps.PackageManagerAdapter +import io.github.sds100.keymapper.system.bluetooth.AndroidBluetoothAdapter +import io.github.sds100.keymapper.system.bluetooth.BluetoothAdapter +import io.github.sds100.keymapper.system.camera.AndroidCameraAdapter +import io.github.sds100.keymapper.system.camera.CameraAdapter +import io.github.sds100.keymapper.system.clipboard.AndroidClipboardAdapter +import io.github.sds100.keymapper.system.clipboard.ClipboardAdapter +import io.github.sds100.keymapper.system.devices.AndroidDevicesAdapter +import io.github.sds100.keymapper.system.devices.DevicesAdapter +import io.github.sds100.keymapper.system.display.AndroidDisplayAdapter +import io.github.sds100.keymapper.system.display.DisplayAdapter +import io.github.sds100.keymapper.system.files.AndroidFileAdapter +import io.github.sds100.keymapper.system.files.FileAdapter +import io.github.sds100.keymapper.system.inputmethod.AndroidInputMethodAdapter +import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter +import io.github.sds100.keymapper.system.intents.IntentAdapter +import io.github.sds100.keymapper.system.intents.IntentAdapterImpl +import io.github.sds100.keymapper.system.leanback.LeanbackAdapter +import io.github.sds100.keymapper.system.leanback.LeanbackAdapterImpl import io.github.sds100.keymapper.system.lock.AndroidLockScreenAdapter import io.github.sds100.keymapper.system.lock.LockScreenAdapter +import io.github.sds100.keymapper.system.media.AndroidMediaAdapter +import io.github.sds100.keymapper.system.media.MediaAdapter +import io.github.sds100.keymapper.system.network.AndroidNetworkAdapter +import io.github.sds100.keymapper.system.network.NetworkAdapter +import io.github.sds100.keymapper.system.nfc.AndroidNfcAdapter +import io.github.sds100.keymapper.system.nfc.NfcAdapter +import io.github.sds100.keymapper.system.notifications.AndroidNotificationAdapter +import io.github.sds100.keymapper.system.notifications.NotificationAdapter +import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter +import io.github.sds100.keymapper.system.permissions.PermissionAdapter +import io.github.sds100.keymapper.system.phone.AndroidPhoneAdapter +import io.github.sds100.keymapper.system.phone.PhoneAdapter +import io.github.sds100.keymapper.system.popup.AndroidToastAdapter +import io.github.sds100.keymapper.system.popup.PopupMessageAdapter +import io.github.sds100.keymapper.system.power.AndroidPowerAdapter +import io.github.sds100.keymapper.system.power.PowerAdapter +import io.github.sds100.keymapper.system.ringtones.AndroidRingtoneAdapter +import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter +import io.github.sds100.keymapper.system.root.SuAdapter +import io.github.sds100.keymapper.system.root.SuAdapterImpl +import io.github.sds100.keymapper.system.url.AndroidOpenUrlAdapter +import io.github.sds100.keymapper.system.url.OpenUrlAdapter +import io.github.sds100.keymapper.system.vibrator.AndroidVibratorAdapter +import io.github.sds100.keymapper.system.vibrator.VibratorAdapter +import io.github.sds100.keymapper.system.volume.AndroidVolumeAdapter +import io.github.sds100.keymapper.system.volume.VolumeAdapter +import kotlinx.coroutines.CoroutineScope import javax.inject.Singleton @Module @@ -14,4 +69,104 @@ abstract class SystemHiltModule { @Singleton @Binds abstract fun provideLockscreenAdapter(impl: AndroidLockScreenAdapter): LockScreenAdapter + + @Singleton + @Binds + abstract fun provideAirplaneModeAdapter(impl: AndroidAirplaneModeAdapter): AirplaneModeAdapter + + @Singleton + @Binds + abstract fun provideAppShortcutAdapter(impl: AndroidAppShortcutAdapter): AppShortcutAdapter + + @Singleton + @Binds + abstract fun providePackageManagerAdapter(impl: AndroidPackageManagerAdapter): PackageManagerAdapter + + @Singleton + @Binds + abstract fun provideBluetoothAdapter(impl: AndroidBluetoothAdapter): BluetoothAdapter + + @Singleton + @Binds + abstract fun provideCameraAdapter(impl: AndroidCameraAdapter): CameraAdapter + + @Singleton + @Binds + abstract fun provideClipboardAdapter(impl: AndroidClipboardAdapter): ClipboardAdapter + + @Singleton + @Binds + abstract fun provideDevicesAdapter(impl: AndroidDevicesAdapter): DevicesAdapter + + @Singleton + @Binds + abstract fun provideDisplayAdapter(impl: AndroidDisplayAdapter): DisplayAdapter + + @Singleton + @Binds + abstract fun provideFileAdapter(impl: AndroidFileAdapter): FileAdapter + + @Singleton + @Binds + abstract fun provideInputMethodAdapter(impl: AndroidInputMethodAdapter): InputMethodAdapter + + @Singleton + @Binds + abstract fun provideIntentAdapter(impl: IntentAdapterImpl): IntentAdapter + + @Singleton + @Binds + abstract fun provideLeanbackAdapter(impl: LeanbackAdapterImpl): LeanbackAdapter + + @Singleton + @Binds + abstract fun provideMediaAdapter(impl: AndroidMediaAdapter): MediaAdapter + + @Singleton + @Binds + abstract fun provideNetworkAdapter(impl: AndroidNetworkAdapter): NetworkAdapter + + @Singleton + @Binds + abstract fun provideNfcAdapter(impl: AndroidNfcAdapter): NfcAdapter + + @Singleton + @Binds + abstract fun provideNotificationAdapter(impl: AndroidNotificationAdapter): NotificationAdapter + + @Singleton + @Binds + abstract fun providePermissionAdapter(impl: AndroidPermissionAdapter): PermissionAdapter + + @Singleton + @Binds + abstract fun providePhoneAdapter(impl: AndroidPhoneAdapter): PhoneAdapter + + @Singleton + @Binds + abstract fun providePopupMessageAdapter(impl: AndroidToastAdapter): PopupMessageAdapter + + @Singleton + @Binds + abstract fun providePowerAdapter(impl: AndroidPowerAdapter): PowerAdapter + + @Singleton + @Binds + abstract fun provideRingtoneAdapter(impl: AndroidRingtoneAdapter): RingtoneAdapter + + @Singleton + @Binds + abstract fun provideSuAdapter(impl: SuAdapterImpl): SuAdapter + + @Singleton + @Binds + abstract fun provideOpenUrlAdapter(impl: AndroidOpenUrlAdapter): OpenUrlAdapter + + @Singleton + @Binds + abstract fun provideVibratorAdapter(impl: AndroidVibratorAdapter): VibratorAdapter + + @Singleton + @Binds + abstract fun provideVolumeAdapter(impl: AndroidVolumeAdapter): VolumeAdapter } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeAction.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeAction.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeAction.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeAction.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeModel.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeModel.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeModel.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeModel.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeRecorder.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeRecorder.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeRecorder.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeRecorder.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/RecordAccessibilityNodeState.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/RecordAccessibilityNodeState.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/RecordAccessibilityNodeState.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/RecordAccessibilityNodeState.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceState.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceState.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceState.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceState.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt similarity index 82% rename from app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt index 8adda50a61..b0aed8c841 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt @@ -6,9 +6,13 @@ import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.root.SuAdapter +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class AndroidAirplaneModeAdapter( - context: Context, +@Singleton +class AndroidAirplaneModeAdapter @Inject constructor( + @ApplicationContext private val context: Context, val suAdapter: SuAdapter, ) : AirplaneModeAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt index 2a9ba04656..509a8e4374 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt @@ -18,12 +18,18 @@ import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.common.result.success -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import java.util.UUID - -class AndroidAppShortcutAdapter(context: Context) : AppShortcutAdapter { +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class AndroidAppShortcutAdapter @Inject constructor( + @ApplicationContext private val context: Context +) : AppShortcutAdapter { private val ctx = context.applicationContext override val installedAppShortcuts: Flow>> = flow { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt index 2da0dc9c05..4fc19f5f91 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt @@ -25,7 +25,7 @@ import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.common.result.success -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt index fc33440162..bb30ce834b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt @@ -5,7 +5,7 @@ import android.graphics.drawable.Drawable import android.os.Bundle import androidx.core.content.pm.ShortcutInfoCompat import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.flow.Flow interface AppShortcutAdapter { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutInfo.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutInfo.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutInfo.kt rename to system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutInfo.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutListItem.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutListItem.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutListItem.kt rename to system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutListItem.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppScreen.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppScreen.kt rename to system/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppScreen.kt index ca05260be4..dbef3051ba 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppScreen.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppScreen.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.drawable import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.util.ui.compose.SearchAppBarActions diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutResult.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutResult.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutResult.kt rename to system/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutResult.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt rename to system/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt index a05665340e..68299a6273 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppShortcutsUseCase.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.apps import android.graphics.drawable.Drawable import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.flow.Flow class DisplayAppShortcutsUseCaseImpl( diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt rename to system/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt index eeb0650cd1..167e4a33ff 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/DisplayAppsUseCase.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.apps import android.graphics.drawable.Drawable import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.flow.Flow class DisplayAppsUseCaseImpl( diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageInfo.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageInfo.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/apps/PackageInfo.kt rename to system/src/main/java/io/github/sds100/keymapper/system/apps/PackageInfo.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt index 35877fe7e0..cffaf6c5dd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.apps import android.graphics.drawable.Drawable import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.callbackFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt index b5635ab593..fee216e7c0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt @@ -17,9 +17,13 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class AndroidBluetoothAdapter( - context: Context, +@Singleton +class AndroidBluetoothAdapter @Inject constructor( + @ApplicationContext private val context: Context, private val coroutineScope: CoroutineScope, ) : io.github.sds100.keymapper.system.bluetooth.BluetoothAdapter { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt rename to system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothDeviceInfo.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothDeviceInfo.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothDeviceInfo.kt rename to system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothDeviceInfo.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceUseCase.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceUseCase.kt rename to system/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceUseCase.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt index 942b0cae27..4974c0c8d4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt @@ -16,8 +16,14 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.update import timber.log.Timber import kotlin.collections.set - -class AndroidCameraAdapter(context: Context) : CameraAdapter { +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class AndroidCameraAdapter @Inject constructor( + @ApplicationContext private val context: Context +) : CameraAdapter { private val ctx = context.applicationContext private val cameraManager: CameraManager by lazy { ctx.getSystemService()!! } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraFlashInfo.kt b/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraFlashInfo.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/camera/CameraFlashInfo.kt rename to system/src/main/java/io/github/sds100/keymapper/system/camera/CameraFlashInfo.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraLens.kt b/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraLens.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/camera/CameraLens.kt rename to system/src/main/java/io/github/sds100/keymapper/system/camera/CameraLens.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/clipboard/AndroidClipboardAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/clipboard/AndroidClipboardAdapter.kt similarity index 66% rename from app/src/main/java/io/github/sds100/keymapper/system/clipboard/AndroidClipboardAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/clipboard/AndroidClipboardAdapter.kt index 343bb33302..ed4051ef21 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/clipboard/AndroidClipboardAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/clipboard/AndroidClipboardAdapter.kt @@ -4,8 +4,14 @@ import android.content.ClipData import android.content.ClipboardManager import android.content.Context import androidx.core.content.getSystemService +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class AndroidClipboardAdapter(context: Context) : ClipboardAdapter { +@Singleton +class AndroidClipboardAdapter @Inject constructor( + @ApplicationContext private val context: Context +) : ClipboardAdapter { private val ctx = context.applicationContext private val clipboardManager: ClipboardManager? = ctx.getSystemService() diff --git a/app/src/main/java/io/github/sds100/keymapper/system/clipboard/ClipboardAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/clipboard/ClipboardAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/clipboard/ClipboardAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/clipboard/ClipboardAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt index b5af00a7bc..f38030501e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt @@ -13,7 +13,7 @@ import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.ifIsData import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow @@ -25,9 +25,13 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import splitties.mainthread.mainLooper +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class AndroidDevicesAdapter( - context: Context, +@Singleton +class AndroidDevicesAdapter @Inject constructor( + @ApplicationContext private val context: Context, private val bluetoothAdapter: io.github.sds100.keymapper.system.bluetooth.BluetoothAdapter, private val permissionAdapter: PermissionAdapter, private val coroutineScope: CoroutineScope, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt similarity index 93% rename from app/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt index edcc0eaf7a..56b93dee8d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.devices import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceInfo.kt b/system/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceInfo.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceInfo.kt rename to system/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceInfo.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/devices/InputDeviceUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt index 8a4e8bfc91..31c1e76f4d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt @@ -22,9 +22,13 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.flow.updateAndGet import kotlinx.coroutines.launch +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class AndroidDisplayAdapter( - context: Context, +@Singleton +class AndroidDisplayAdapter @Inject constructor( + @ApplicationContext private val context: Context, private val coroutineScope: CoroutineScope, ) : DisplayAdapter { companion object { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/display/Orientation.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/Orientation.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/display/Orientation.kt rename to system/src/main/java/io/github/sds100/keymapper/system/display/Orientation.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt index a5fcd21d74..d166b36b23 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt @@ -20,8 +20,14 @@ import net.lingala.zip4j.ZipFile import java.io.File import java.io.InputStream import java.util.UUID - -class AndroidFileAdapter(context: Context) : FileAdapter { +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class AndroidFileAdapter @Inject constructor( + @ApplicationContext private val context: Context +) : FileAdapter { private val ctx = context.applicationContext private val contentResolver: ContentResolver = ctx.contentResolver diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt rename to system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/FileUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/FileUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/files/FileUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/files/FileUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt rename to system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventInjector.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventInjector.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventInjector.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventInjector.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputevents/MyKeyEvent.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputevents/MyKeyEvent.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputevents/MyKeyEvent.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputevents/MyKeyEvent.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputevents/MyMotionEvent.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputevents/MyMotionEvent.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputevents/MyMotionEvent.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputevents/MyMotionEvent.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt index 2e9765d1f8..3acf4b44fc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt @@ -45,9 +45,13 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import kotlinx.coroutines.withTimeoutOrNull import timber.log.Timber +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class AndroidInputMethodAdapter( - context: Context, +@Singleton +class AndroidInputMethodAdapter @Inject constructor( + @ApplicationContext private val context: Context, private val coroutineScope: CoroutineScope, private val serviceAdapter: ServiceAdapter, private val permissionAdapter: PermissionAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInfo.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInfo.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInfo.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInfo.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowInputMethodPickerUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowInputMethodPickerUseCase.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowInputMethodPickerUseCase.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowInputMethodPickerUseCase.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentResult.kt b/system/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentResult.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentResult.kt rename to system/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentResult.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt diff --git a/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapterImpl.kt b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapterImpl.kt new file mode 100644 index 0000000000..93e9f46891 --- /dev/null +++ b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapterImpl.kt @@ -0,0 +1,13 @@ +package io.github.sds100.keymapper.system.intents + +import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class IntentAdapterImpl @Inject constructor( + @ApplicationContext private val context: Context +) : IntentAdapter { + // ... existing code ... +} \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraListItem.kt b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraListItem.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraListItem.kt rename to system/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraListItem.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraModel.kt b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraModel.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraModel.kt rename to system/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraModel.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt rename to system/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/IntentTarget.kt b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentTarget.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/intents/IntentTarget.kt rename to system/src/main/java/io/github/sds100/keymapper/system/intents/IntentTarget.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt diff --git a/system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapterImpl.kt b/system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapterImpl.kt new file mode 100644 index 0000000000..11870dd64f --- /dev/null +++ b/system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapterImpl.kt @@ -0,0 +1,13 @@ +package io.github.sds100.keymapper.system.leanback + +import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class LeanbackAdapterImpl @Inject constructor( + @ApplicationContext private val context: Context +) : LeanbackAdapter { + // ... existing code ... +} \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt index 4445db0cb9..c11f73f8a0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt @@ -23,8 +23,15 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import java.io.FileNotFoundException - -class AndroidMediaAdapter(context: Context, coroutineScope: CoroutineScope) : MediaAdapter { +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class AndroidMediaAdapter @Inject constructor( + @ApplicationContext private val context: Context, + private val coroutineScope: CoroutineScope +) : MediaAdapter { private val ctx = context.applicationContext private val audioManager: AudioManager by lazy { ctx.getSystemService()!! } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt b/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt rename to system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt index 0f0ca86e26..44aa82422d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt @@ -25,9 +25,13 @@ import okhttp3.RequestBody.Companion.toRequestBody import okio.IOException import okio.use import timber.log.Timber +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class AndroidNetworkAdapter( - context: Context, +@Singleton +class AndroidNetworkAdapter @Inject constructor( + @ApplicationContext private val context: Context, private val suAdapter: SuAdapter, ) : NetworkAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/network/HttpMethod.kt b/system/src/main/java/io/github/sds100/keymapper/system/network/HttpMethod.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/network/HttpMethod.kt rename to system/src/main/java/io/github/sds100/keymapper/system/network/HttpMethod.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt similarity index 75% rename from app/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt index 0de89013e1..401d2abe50 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt @@ -5,9 +5,13 @@ import android.nfc.NfcManager import androidx.core.content.getSystemService import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.root.SuAdapter +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class AndroidNfcAdapter( - context: Context, +@Singleton +class AndroidNfcAdapter @Inject constructor( + @ApplicationContext private val context: Context, private val suAdapter: SuAdapter, ) : NfcAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt index fd31feddbd..2f7b1155f5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt @@ -14,9 +14,13 @@ import io.github.sds100.keymapper.util.color import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class AndroidNotificationAdapter( - context: Context, +@Singleton +class AndroidNotificationAdapter @Inject constructor( + @ApplicationContext private val context: Context, private val coroutineScope: CoroutineScope, ) : NotificationAdapter { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/ManageNotificationsUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/ManageNotificationsUseCase.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/notifications/ManageNotificationsUseCase.kt rename to system/src/main/java/io/github/sds100/keymapper/system/notifications/ManageNotificationsUseCase.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationChannelModel.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationChannelModel.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationChannelModel.kt rename to system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationChannelModel.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationClickReceiver.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationClickReceiver.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationClickReceiver.kt rename to system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationClickReceiver.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt rename to system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationModel.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationModel.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationModel.kt rename to system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationModel.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt rename to system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt rename to system/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt index 58f3012608..8db51daec1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt @@ -48,9 +48,13 @@ import rikka.shizuku.Shizuku import rikka.shizuku.ShizukuBinderWrapper import rikka.shizuku.SystemServiceHelper import timber.log.Timber +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class AndroidPermissionAdapter( - context: Context, +@Singleton +class AndroidPermissionAdapter @Inject constructor( + @ApplicationContext private val context: Context, private val coroutineScope: CoroutineScope, private val suAdapter: SuAdapter, private val notificationReceiverAdapter: ServiceAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt rename to system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/Permission.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/Permission.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/permissions/Permission.kt rename to system/src/main/java/io/github/sds100/keymapper/system/permissions/Permission.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt rename to system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/permissions/SystemFeatureAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/SystemFeatureAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/permissions/SystemFeatureAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/permissions/SystemFeatureAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt similarity index 93% rename from app/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt index ab3d668c33..8aa41715d2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt @@ -15,9 +15,13 @@ import io.github.sds100.keymapper.common.result.Success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class AndroidPhoneAdapter( - context: Context, +@Singleton +class AndroidPhoneAdapter @Inject constructor( + @ApplicationContext private val context: Context, private val coroutineScope: CoroutineScope, ) : PhoneAdapter { private val ctx: Context = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/phone/CallState.kt b/system/src/main/java/io/github/sds100/keymapper/system/phone/CallState.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/phone/CallState.kt rename to system/src/main/java/io/github/sds100/keymapper/system/phone/CallState.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt similarity index 50% rename from app/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt index 7d8373bd7b..ea5b936331 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt @@ -1,9 +1,15 @@ package io.github.sds100.keymapper.system.popup import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton import splitties.toast.toast -class AndroidToastAdapter(context: Context) : PopupMessageAdapter { +@Singleton +class AndroidToastAdapter @Inject constructor( + @ApplicationContext private val context: Context +) : PopupMessageAdapter { private val ctx: Context = context.applicationContext override fun showPopupMessage(message: String) { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/power/AndroidPowerAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/power/AndroidPowerAdapter.kt similarity index 88% rename from app/src/main/java/io/github/sds100/keymapper/system/power/AndroidPowerAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/power/AndroidPowerAdapter.kt index 66e971115e..10b6d5f619 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/power/AndroidPowerAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/power/AndroidPowerAdapter.kt @@ -11,8 +11,14 @@ import androidx.core.content.getSystemService import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow - -class AndroidPowerAdapter(context: Context) : PowerAdapter { +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class AndroidPowerAdapter @Inject constructor( + @ApplicationContext private val context: Context +) : PowerAdapter { private val ctx: Context = context.applicationContext private val batteryManager: BatteryManager by lazy { ctx.getSystemService()!! } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/power/PowerAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/power/PowerAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/power/PowerAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/power/PowerAdapter.kt diff --git a/system/src/main/java/io/github/sds100/keymapper/system/ringtones/AndroidRingtoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/ringtones/AndroidRingtoneAdapter.kt new file mode 100644 index 0000000000..ce0d42fb58 --- /dev/null +++ b/system/src/main/java/io/github/sds100/keymapper/system/ringtones/AndroidRingtoneAdapter.kt @@ -0,0 +1,13 @@ +package io.github.sds100.keymapper.system.ringtones + +import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class AndroidRingtoneAdapter @Inject constructor( + @ApplicationContext private val context: Context +) : RingtoneAdapter { + // ... existing code ... +} \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt diff --git a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapterImpl.kt b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapterImpl.kt new file mode 100644 index 0000000000..9461464c1c --- /dev/null +++ b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapterImpl.kt @@ -0,0 +1,13 @@ +package io.github.sds100.keymapper.system.root + +import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class SuAdapterImpl @Inject constructor( + @ApplicationContext private val context: Context +) : SuAdapter { + // ... existing code ... +} \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt b/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt rename to system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt b/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt rename to system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt similarity index 51% rename from app/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt index e90859210a..1c2b8fdc2f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt @@ -1,9 +1,15 @@ package io.github.sds100.keymapper.system.url import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton import io.github.sds100.keymapper.common.result.Result -class AndroidOpenUrlAdapter(context: Context) : OpenUrlAdapter { +@Singleton +class AndroidOpenUrlAdapter @Inject constructor( + @ApplicationContext private val context: Context +) : OpenUrlAdapter { private val ctx = context.applicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/vibrator/AndroidVibratorAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/vibrator/AndroidVibratorAdapter.kt similarity index 80% rename from app/src/main/java/io/github/sds100/keymapper/system/vibrator/AndroidVibratorAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/vibrator/AndroidVibratorAdapter.kt index 3852d0848a..51159df53f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/vibrator/AndroidVibratorAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/vibrator/AndroidVibratorAdapter.kt @@ -6,8 +6,14 @@ import android.os.VibrationAttributes import android.os.VibrationEffect import android.os.Vibrator import androidx.core.content.getSystemService +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class AndroidVibratorAdapter(context: Context) : VibratorAdapter { +@Singleton +class AndroidVibratorAdapter @Inject constructor( + @ApplicationContext private val context: Context +) : VibratorAdapter { private val vibrator: Vibrator? = context.getSystemService() override fun vibrate(duration: Long) { diff --git a/app/src/main/java/io/github/sds100/keymapper/system/vibrator/VibratorAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/vibrator/VibratorAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/vibrator/VibratorAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/vibrator/VibratorAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt index f17f4c3baa..6f846c7352 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt @@ -12,8 +12,14 @@ import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.common.result.then import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission - -class AndroidVolumeAdapter(context: Context) : VolumeAdapter { +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class AndroidVolumeAdapter @Inject constructor( + @ApplicationContext private val context: Context +) : VolumeAdapter { private val ctx = context.applicationContext private val audioManager: AudioManager by lazy { ctx.getSystemService()!! } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/DndMode.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/DndMode.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/volume/DndMode.kt rename to system/src/main/java/io/github/sds100/keymapper/system/volume/DndMode.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/RingerMode.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/RingerMode.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/volume/RingerMode.kt rename to system/src/main/java/io/github/sds100/keymapper/system/volume/RingerMode.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStream.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStream.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStream.kt rename to system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStream.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt From a68cbbef959350dc4fc90af8d158343f8ecb883b Mon Sep 17 00:00:00 2001 From: sds100 Date: Fri, 16 May 2025 19:47:27 +0200 Subject: [PATCH 08/71] #1711 convert usecases and viewmodels --- .../io/github/sds100/keymapper/UseCases.kt | 220 --------------- .../actions/ChooseActionViewModel.kt | 17 +- .../keymapper/actions/CreateActionUseCase.kt | 11 +- .../actions/GetActionErrorUseCase.kt | 19 +- .../actions/PerformActionsUseCase.kt | 181 +++++++------ .../keyevent/ConfigKeyEventActionViewModel.kt | 16 +- .../constraints/GetConstraintErrorUseCase.kt | 17 +- .../sds100/keymapper/home/HomeViewModel.kt | 34 +-- .../keymaps/ConfigKeyMapViewModel.kt | 35 +-- .../keymaps/CreateKeyMapShortcutUseCase.kt | 28 +- .../keymaps/CreateKeyMapShortcutViewModel.kt | 43 +-- .../keymapper/keymaps/DisplayKeyMapUseCase.kt | 51 ++-- .../FingerprintGesturesSupportedUseCase.kt | 9 +- .../keymapper/keymaps/PauseKeyMapsUseCase.kt | 15 +- .../keymaps/detection/DetectKeyMapsUseCase.kt | 8 +- .../keymapper/onboarding/OnboardingUseCase.kt | 36 ++- .../RerouteKeyEventsUseCase.kt | 16 +- .../keymapper/settings/SettingsViewModel.kt | 21 +- .../keymapper/sorting/SortKeyMapsUseCase.kt | 15 +- .../system/apps/ChooseActivityViewModel.kt | 17 +- .../system/apps/ChooseAppShortcutViewModel.kt | 21 +- .../system/apps/ChooseAppViewModel.kt | 14 +- .../ChooseBluetoothDeviceViewModel.kt | 24 +- .../system/intents/ConfigIntentViewModel.kt | 39 ++- .../io/github/sds100/keymapper/util/Inject.kt | 256 ------------------ 25 files changed, 319 insertions(+), 844 deletions(-) delete mode 100644 app/src/main/java/io/github/sds100/keymapper/UseCases.kt delete mode 100644 app/src/main/java/io/github/sds100/keymapper/util/Inject.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/UseCases.kt b/app/src/main/java/io/github/sds100/keymapper/UseCases.kt deleted file mode 100644 index a14324758c..0000000000 --- a/app/src/main/java/io/github/sds100/keymapper/UseCases.kt +++ /dev/null @@ -1,220 +0,0 @@ -package io.github.sds100.keymapper - -import android.content.Context -import io.github.sds100.keymapper.actions.CreateActionUseCaseImpl -import io.github.sds100.keymapper.actions.GetActionErrorUseCaseImpl -import io.github.sds100.keymapper.actions.PerformActionsUseCaseImpl -import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapper -import io.github.sds100.keymapper.constraints.DetectConstraintsUseCaseImpl -import io.github.sds100.keymapper.constraints.GetConstraintErrorUseCaseImpl -import io.github.sds100.keymapper.floating.ListFloatingLayoutsUseCase -import io.github.sds100.keymapper.floating.ListFloatingLayoutsUseCaseImpl -import io.github.sds100.keymapper.keymaps.ConfigKeyMapUseCase -import io.github.sds100.keymapper.keymaps.CreateKeyMapShortcutUseCaseImpl -import io.github.sds100.keymapper.keymaps.DisplayKeyMapUseCase -import io.github.sds100.keymapper.keymaps.DisplayKeyMapUseCaseImpl -import io.github.sds100.keymapper.keymaps.FingerprintGesturesSupportedUseCaseImpl -import io.github.sds100.keymapper.keymaps.PauseKeyMapsUseCaseImpl -import io.github.sds100.keymapper.keymaps.detection.DetectKeyMapsUseCaseImpl -import io.github.sds100.keymapper.onboarding.OnboardingUseCaseImpl -import io.github.sds100.keymapper.reroutekeyevents.RerouteKeyEventsUseCaseImpl -import io.github.sds100.keymapper.shizuku.ShizukuInputEventInjector -import io.github.sds100.keymapper.sorting.SortKeyMapsUseCase -import io.github.sds100.keymapper.sorting.SortKeyMapsUseCaseImpl -import io.github.sds100.keymapper.system.Shell -import io.github.sds100.keymapper.system.accessibility.ControlAccessibilityServiceUseCase -import io.github.sds100.keymapper.system.accessibility.ControlAccessibilityServiceUseCaseImpl -import io.github.sds100.keymapper.system.accessibility.IAccessibilityService -import io.github.sds100.keymapper.system.accessibility.MyAccessibilityService -import io.github.sds100.keymapper.system.apps.DisplayAppsUseCase -import io.github.sds100.keymapper.system.apps.DisplayAppsUseCaseImpl -import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjectorImpl -import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase -import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCaseImpl -import io.github.sds100.keymapper.system.inputmethod.ToggleCompatibleImeUseCaseImpl - - -object UseCases { - - fun listFloatingLayouts(ctx: Context): ListFloatingLayoutsUseCase = ListFloatingLayoutsUseCaseImpl( - ServiceLocator.floatingLayoutRepository(ctx), - ServiceLocator.purchasingManager(ctx), - ServiceLocator.accessibilityServiceAdapter(ctx), - ServiceLocator.settingsRepository(ctx), - ) - - fun displayPackages(ctx: Context): DisplayAppsUseCase = DisplayAppsUseCaseImpl( - ServiceLocator.packageManagerAdapter(ctx), - ) - - fun displayKeyMap(ctx: Context): DisplayKeyMapUseCase = DisplayKeyMapUseCaseImpl( - ServiceLocator.permissionAdapter(ctx), - ServiceLocator.inputMethodAdapter(ctx), - ServiceLocator.packageManagerAdapter(ctx), - ServiceLocator.settingsRepository(ctx), - ServiceLocator.accessibilityServiceAdapter(ctx), - ServiceLocator.settingsRepository(ctx), - ServiceLocator.purchasingManager(ctx), - ServiceLocator.ringtoneAdapter(ctx), - getActionError(ctx), - getConstraintError(ctx), - ) - - fun configKeyMap(ctx: Context): ConfigKeyMapUseCase = ServiceLocator.configKeyMapsController(ctx) - - fun getActionError(ctx: Context) = GetActionErrorUseCaseImpl( - ServiceLocator.packageManagerAdapter(ctx), - ServiceLocator.inputMethodAdapter(ctx), - ServiceLocator.permissionAdapter(ctx), - ServiceLocator.systemFeatureAdapter(ctx), - ServiceLocator.cameraAdapter(ctx), - ServiceLocator.soundsManager(ctx), - ServiceLocator.shizukuAdapter(ctx), - ServiceLocator.ringtoneAdapter(ctx), - ) - - fun getConstraintError(ctx: Context) = GetConstraintErrorUseCaseImpl( - ServiceLocator.packageManagerAdapter(ctx), - ServiceLocator.permissionAdapter(ctx), - ServiceLocator.systemFeatureAdapter(ctx), - ServiceLocator.inputMethodAdapter(ctx), - ServiceLocator.cameraAdapter(ctx), - ) - - fun onboarding(ctx: Context) = OnboardingUseCaseImpl( - ServiceLocator.settingsRepository(ctx), - ServiceLocator.fileAdapter(ctx), - ServiceLocator.leanbackAdapter(ctx), - ServiceLocator.shizukuAdapter(ctx), - ServiceLocator.permissionAdapter(ctx), - ServiceLocator.packageManagerAdapter(ctx), - ServiceLocator.purchasingManager(ctx), - ServiceLocator.roomKeyMapRepository(ctx), - ) - - fun createKeymapShortcut(ctx: Context) = CreateKeyMapShortcutUseCaseImpl( - ServiceLocator.appShortcutAdapter(ctx), - ServiceLocator.resourceProvider(ctx), - ) - - fun fingerprintGesturesSupported(ctx: Context) = FingerprintGesturesSupportedUseCaseImpl(ServiceLocator.settingsRepository(ctx)) - - fun pauseKeyMaps(ctx: Context) = PauseKeyMapsUseCaseImpl( - ServiceLocator.settingsRepository(ctx), - ServiceLocator.mediaAdapter(ctx), - ServiceLocator.ringtoneAdapter(ctx), - ) - - fun showImePicker(ctx: Context): ShowInputMethodPickerUseCase = ShowInputMethodPickerUseCaseImpl( - ServiceLocator.inputMethodAdapter(ctx), - ) - - fun controlAccessibilityService(ctx: Context): ControlAccessibilityServiceUseCase = ControlAccessibilityServiceUseCaseImpl( - ServiceLocator.accessibilityServiceAdapter(ctx), - ServiceLocator.permissionAdapter(ctx), - ) - - fun toggleCompatibleIme(ctx: Context) = ToggleCompatibleImeUseCaseImpl( - ServiceLocator.inputMethodAdapter(ctx), - ) - - fun detectConstraints(service: MyAccessibilityService) = DetectConstraintsUseCaseImpl( - service, - ServiceLocator.mediaAdapter(service), - ServiceLocator.devicesAdapter(service), - ServiceLocator.displayAdapter(service), - ServiceLocator.cameraAdapter(service), - ServiceLocator.networkAdapter(service), - ServiceLocator.inputMethodAdapter(service), - ServiceLocator.lockScreenAdapter(service), - ServiceLocator.phoneAdapter(service), - ServiceLocator.powerAdapter(service), - ) - - fun performActions( - ctx: Context, - service: IAccessibilityService, - keyEventRelayService: KeyEventRelayServiceWrapper, - ) = PerformActionsUseCaseImpl( - (ctx.applicationContext as KeyMapperApp).appCoroutineScope, - service, - ServiceLocator.inputMethodAdapter(ctx), - ServiceLocator.fileAdapter(ctx), - ServiceLocator.suAdapter(ctx), - Shell, - ServiceLocator.intentAdapter(ctx), - getActionError(ctx), - keyMapperImeMessenger(ctx, keyEventRelayService), - ShizukuInputEventInjector(), - ServiceLocator.packageManagerAdapter(ctx), - ServiceLocator.appShortcutAdapter(ctx), - ServiceLocator.popupMessageAdapter(ctx), - ServiceLocator.devicesAdapter(ctx), - ServiceLocator.phoneAdapter(ctx), - ServiceLocator.audioAdapter(ctx), - ServiceLocator.cameraAdapter(ctx), - ServiceLocator.displayAdapter(ctx), - ServiceLocator.lockScreenAdapter(ctx), - ServiceLocator.mediaAdapter(ctx), - ServiceLocator.airplaneModeAdapter(ctx), - ServiceLocator.networkAdapter(ctx), - ServiceLocator.bluetoothAdapter(ctx), - ServiceLocator.nfcAdapter(ctx), - ServiceLocator.openUrlAdapter(ctx), - ServiceLocator.resourceProvider(ctx), - ServiceLocator.settingsRepository(ctx), - ServiceLocator.soundsManager(ctx), - ServiceLocator.permissionAdapter(ctx), - ServiceLocator.notificationReceiverAdapter(ctx), - ServiceLocator.ringtoneAdapter(ctx), - ) - - fun detectKeyMaps( - ctx: Context, - service: IAccessibilityService, - keyEventRelayService: KeyEventRelayServiceWrapper, - ) = DetectKeyMapsUseCaseImpl( - ServiceLocator.roomKeyMapRepository(ctx), - ServiceLocator.floatingButtonRepository(ctx), - ServiceLocator.groupRepository(ctx), - ServiceLocator.settingsRepository(ctx), - ServiceLocator.suAdapter(ctx), - ServiceLocator.displayAdapter(ctx), - ServiceLocator.audioAdapter(ctx), - keyMapperImeMessenger(ctx, keyEventRelayService), - service, - ShizukuInputEventInjector(), - ServiceLocator.popupMessageAdapter(ctx), - ServiceLocator.permissionAdapter(ctx), - ServiceLocator.resourceProvider(ctx), - ServiceLocator.vibratorAdapter(ctx), - ServiceLocator.appCoroutineScope(ctx), - ) - - fun rerouteKeyEvents(ctx: Context, keyEventRelayService: KeyEventRelayServiceWrapper) = RerouteKeyEventsUseCaseImpl( - ServiceLocator.inputMethodAdapter(ctx), - keyMapperImeMessenger(ctx, keyEventRelayService), - ServiceLocator.settingsRepository(ctx), - ) - - fun createAction(ctx: Context) = CreateActionUseCaseImpl( - ServiceLocator.inputMethodAdapter(ctx), - ServiceLocator.systemFeatureAdapter(ctx), - ServiceLocator.cameraAdapter(ctx), - ServiceLocator.permissionAdapter(ctx), - ) - - private fun keyMapperImeMessenger( - ctx: Context, - keyEventRelayService: KeyEventRelayServiceWrapper, - ) = ImeInputEventInjectorImpl( - ctx, - keyEventRelayService, - ServiceLocator.inputMethodAdapter(ctx), - ) - - fun sortKeyMapsUseCase(ctx: Context): SortKeyMapsUseCase = SortKeyMapsUseCaseImpl( - ServiceLocator.settingsRepository(ctx), - displayKeyMap(ctx), - ) -} diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt index 227da69b45..89b6f55f2a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt @@ -30,10 +30,14 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.shareIn import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import dagger.hilt.android.lifecycle.HiltViewModel +import io.github.sds100.keymapper.actions.CreateActionUseCase +import javax.inject.Inject -class ChooseActionViewModel( +@HiltViewModel +class ChooseActionViewModel @Inject constructor( private val useCase: CreateActionUseCase, - resourceProvider: ResourceProvider, + private val resourceProvider: ResourceProvider ) : ViewModel(), ResourceProvider by resourceProvider, PopupViewModel by PopupViewModelImpl(), @@ -217,13 +221,4 @@ class ChooseActionViewModel( return true } - - @Suppress("UNCHECKED_CAST") - class Factory( - private val useCase: CreateActionUseCase, - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = ChooseActionViewModel(useCase, resourceProvider) as T - } } diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionUseCase.kt index 35651657ab..f0fa786a8d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionUseCase.kt @@ -1,21 +1,26 @@ package io.github.sds100.keymapper.actions +import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraFlashInfo import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter +import io.github.sds100.keymapper.system.systemfeature.SystemFeatureAdapter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.merge +import javax.inject.Inject +import javax.inject.Singleton -class CreateActionUseCaseImpl( +@Singleton +class CreateActionUseCaseImpl @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, private val systemFeatureAdapter: SystemFeatureAdapter, private val cameraAdapter: CameraAdapter, - private val permissionAdapter: PermissionAdapter, + private val permissionAdapter: PermissionAdapter ) : CreateActionUseCase, IsActionSupportedUseCase by IsActionSupportedUseCaseImpl( systemFeatureAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/GetActionErrorUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/GetActionErrorUseCase.kt index ce8a18b9e1..e9472e64d0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/GetActionErrorUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/GetActionErrorUseCase.kt @@ -1,5 +1,7 @@ package io.github.sds100.keymapper.actions +import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.actions.sound.SoundsManager import io.github.sds100.keymapper.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter @@ -8,6 +10,12 @@ import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.system.systemfeature.SystemFeatureAdapter +import io.github.sds100.keymapper.util.ResourceProvider +import io.github.sds100.keymapper.util.SoundsManager +import javax.inject.Inject +import javax.inject.Singleton import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.collectLatest @@ -15,15 +23,16 @@ import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge -class GetActionErrorUseCaseImpl( - private val packageManager: PackageManagerAdapter, +@Singleton +class GetActionErrorUseCaseImpl @Inject constructor( + private val packageManagerAdapter: PackageManagerAdapter, private val inputMethodAdapter: InputMethodAdapter, private val permissionAdapter: PermissionAdapter, private val systemFeatureAdapter: SystemFeatureAdapter, private val cameraAdapter: CameraAdapter, private val soundsManager: SoundsManager, private val shizukuAdapter: ShizukuAdapter, - private val ringtoneAdapter: RingtoneAdapter, + private val ringtoneAdapter: RingtoneAdapter ) : GetActionErrorUseCase { private val invalidateActionErrors = merge( @@ -34,7 +43,7 @@ class GetActionErrorUseCaseImpl( soundsManager.soundFiles.drop(1).map { }, shizukuAdapter.isStarted.drop(1).map { }, shizukuAdapter.isInstalled.drop(1).map { }, - packageManager.onPackagesChanged, + packageManagerAdapter.onPackagesChanged, ) override val actionErrorSnapshot: Flow = channelFlow { @@ -46,7 +55,7 @@ class GetActionErrorUseCaseImpl( } private fun createSnapshot(): ActionErrorSnapshot = LazyActionErrorSnapshot( - packageManager, + packageManagerAdapter, inputMethodAdapter, permissionAdapter, systemFeatureAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt index e0f9cd4105..21eebde48e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt @@ -73,26 +73,37 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import splitties.bitflags.withFlag import timber.log.Timber - - - -class PerformActionsUseCaseImpl( - private val coroutineScope: CoroutineScope, - private val accessibilityService: IAccessibilityService, +import dagger.hilt.android.qualifiers.ApplicationContext +import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapper +import io.github.sds100.keymapper.system.IAccessibilityService +import io.github.sds100.keymapper.system.Shell +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.audio.AudioAdapter +import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjectorImpl +import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapter +import io.github.sds100.keymapper.util.SettingsRepository +import io.github.sds100.keymapper.system.power.PowerAdapter +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class PerformActionsUseCaseImpl @Inject constructor( + private val appCoroutineScope: CoroutineScope, + private val service: IAccessibilityService, private val inputMethodAdapter: InputMethodAdapter, private val fileAdapter: FileAdapter, private val suAdapter: SuAdapter, - private val shellAdapter: ShellAdapter, + private val shell: Shell, private val intentAdapter: IntentAdapter, - private val getActionError: GetActionErrorUseCase, - private val imeInputEventInjector: ImeInputEventInjector, - private val shizukuInputEventInjector: InputEventInjector, + private val getActionErrorUseCase: GetActionErrorUseCase, + private val keyMapperImeMessenger: ImeInputEventInjectorImpl, + private val shizukuInputEventInjector: ShizukuInputEventInjector, private val packageManagerAdapter: PackageManagerAdapter, private val appShortcutAdapter: AppShortcutAdapter, private val popupMessageAdapter: PopupMessageAdapter, - private val deviceAdapter: DevicesAdapter, + private val devicesAdapter: DevicesAdapter, private val phoneAdapter: PhoneAdapter, - private val volumeAdapter: VolumeAdapter, + private val audioAdapter: AudioAdapter, private val cameraAdapter: CameraAdapter, private val displayAdapter: DisplayAdapter, private val lockScreenAdapter: LockScreenAdapter, @@ -103,20 +114,20 @@ class PerformActionsUseCaseImpl( private val nfcAdapter: NfcAdapter, private val openUrlAdapter: OpenUrlAdapter, private val resourceProvider: ResourceProvider, - private val preferenceRepository: PreferenceRepository, + private val settingsRepository: SettingsRepository, private val soundsManager: SoundsManager, private val permissionAdapter: PermissionAdapter, - private val notificationReceiverAdapter: ServiceAdapter, - private val ringtoneAdapter: RingtoneAdapter, + private val notificationReceiverAdapter: NotificationReceiverAdapter, + private val ringtoneAdapter: RingtoneAdapter ) : PerformActionsUseCase { private val openMenuHelper by lazy { OpenMenuHelper( suAdapter, - accessibilityService, + service, shizukuInputEventInjector, permissionAdapter, - coroutineScope, + appCoroutineScope, ) } @@ -125,7 +136,7 @@ class PerformActionsUseCaseImpl( */ private val inputKeyEventsWithShizuku: StateFlow = permissionAdapter.isGrantedFlow(Permission.SHIZUKU) - .stateIn(coroutineScope, SharingStarted.Eagerly, false) + .stateIn(appCoroutineScope, SharingStarted.Eagerly, false) override suspend fun perform( action: ActionData, @@ -177,7 +188,7 @@ class PerformActionsUseCaseImpl( action.useShell -> suAdapter.execute("input keyevent ${model.keyCode}") else -> { - imeInputEventInjector.inputKeyEvent(model) + keyMapperImeMessenger.inputKeyEvent(model) Success(Unit) } @@ -189,19 +200,19 @@ class PerformActionsUseCaseImpl( } is ActionData.DoNotDisturb.Enable -> { - result = volumeAdapter.enableDndMode(action.dndMode) + result = audioAdapter.enableDndMode(action.dndMode) } is ActionData.DoNotDisturb.Toggle -> { - result = if (volumeAdapter.isDndEnabled()) { - volumeAdapter.disableDndMode() + result = if (audioAdapter.isDndEnabled()) { + audioAdapter.disableDndMode() } else { - volumeAdapter.enableDndMode(action.dndMode) + audioAdapter.enableDndMode(action.dndMode) } } is ActionData.Volume.SetRingerMode -> { - result = volumeAdapter.setRingerMode(action.ringerMode) + result = audioAdapter.setRingerMode(action.ringerMode) } is ActionData.ControlMediaForApp.FastForward -> { @@ -289,45 +300,45 @@ class PerformActionsUseCaseImpl( } is ActionData.Volume.Down -> { - result = volumeAdapter.lowerVolume(showVolumeUi = action.showVolumeUi) + result = audioAdapter.lowerVolume(showVolumeUi = action.showVolumeUi) } is ActionData.Volume.Up -> { - result = volumeAdapter.raiseVolume(showVolumeUi = action.showVolumeUi) + result = audioAdapter.raiseVolume(showVolumeUi = action.showVolumeUi) } is ActionData.Volume.Mute -> { - result = volumeAdapter.muteVolume(showVolumeUi = action.showVolumeUi) + result = audioAdapter.muteVolume(showVolumeUi = action.showVolumeUi) } is ActionData.Volume.Stream.Decrease -> { - result = volumeAdapter.lowerVolume( + result = audioAdapter.lowerVolume( stream = action.volumeStream, showVolumeUi = action.showVolumeUi, ) } is ActionData.Volume.Stream.Increase -> { - result = volumeAdapter.raiseVolume( + result = audioAdapter.raiseVolume( stream = action.volumeStream, showVolumeUi = action.showVolumeUi, ) } is ActionData.Volume.ToggleMute -> { - result = volumeAdapter.toggleMuteVolume(showVolumeUi = action.showVolumeUi) + result = audioAdapter.toggleMuteVolume(showVolumeUi = action.showVolumeUi) } is ActionData.Volume.UnMute -> { - result = volumeAdapter.unmuteVolume(showVolumeUi = action.showVolumeUi) + result = audioAdapter.unmuteVolume(showVolumeUi = action.showVolumeUi) } is ActionData.TapScreen -> { - result = accessibilityService.tapScreen(action.x, action.y, inputEventType) + result = service.tapScreen(action.x, action.y, inputEventType) } is ActionData.SwipeScreen -> { - result = accessibilityService.swipeScreen( + result = service.swipeScreen( action.xStart, action.yStart, action.xEnd, @@ -339,7 +350,7 @@ class PerformActionsUseCaseImpl( } is ActionData.PinchScreen -> { - result = accessibilityService.pinchScreen( + result = service.pinchScreen( action.x, action.y, action.distance, @@ -351,7 +362,7 @@ class PerformActionsUseCaseImpl( } is ActionData.Text -> { - imeInputEventInjector.inputText(action.text) + keyMapperImeMessenger.inputText(action.text) result = Success(Unit) } @@ -481,42 +492,42 @@ class PerformActionsUseCaseImpl( } is ActionData.Volume.CycleRingerMode -> { - result = when (volumeAdapter.ringerMode) { - RingerMode.NORMAL -> volumeAdapter.setRingerMode(RingerMode.VIBRATE) - RingerMode.VIBRATE -> volumeAdapter.setRingerMode(RingerMode.SILENT) - RingerMode.SILENT -> volumeAdapter.setRingerMode(RingerMode.NORMAL) + result = when (audioAdapter.ringerMode) { + RingerMode.NORMAL -> audioAdapter.setRingerMode(RingerMode.VIBRATE) + RingerMode.VIBRATE -> audioAdapter.setRingerMode(RingerMode.SILENT) + RingerMode.SILENT -> audioAdapter.setRingerMode(RingerMode.NORMAL) } } is ActionData.Volume.CycleVibrateRing -> { - result = when (volumeAdapter.ringerMode) { - RingerMode.NORMAL -> volumeAdapter.setRingerMode(RingerMode.VIBRATE) - RingerMode.VIBRATE -> volumeAdapter.setRingerMode(RingerMode.NORMAL) - RingerMode.SILENT -> volumeAdapter.setRingerMode(RingerMode.NORMAL) + result = when (audioAdapter.ringerMode) { + RingerMode.NORMAL -> audioAdapter.setRingerMode(RingerMode.VIBRATE) + RingerMode.VIBRATE -> audioAdapter.setRingerMode(RingerMode.NORMAL) + RingerMode.SILENT -> audioAdapter.setRingerMode(RingerMode.NORMAL) } } is ActionData.DoNotDisturb.Disable -> { - result = volumeAdapter.disableDndMode() + result = audioAdapter.disableDndMode() } is ActionData.StatusBar.ExpandNotifications -> { val globalAction = AccessibilityService.GLOBAL_ACTION_NOTIFICATIONS - result = accessibilityService.doGlobalAction(globalAction).otherwise { - shellAdapter.execute("cmd statusbar expand-notifications") + result = service.doGlobalAction(globalAction).otherwise { + shell.execute("cmd statusbar expand-notifications") } } is ActionData.StatusBar.ToggleNotifications -> { result = - if (accessibilityService.rootNode?.packageName == "com.android.systemui") { + if (service.rootNode?.packageName == "com.android.systemui") { closeStatusBarShade() } else { val globalAction = AccessibilityService.GLOBAL_ACTION_NOTIFICATIONS - accessibilityService.doGlobalAction(globalAction).otherwise { - shellAdapter.execute("cmd statusbar expand-notifications") + service.doGlobalAction(globalAction).otherwise { + shell.execute("cmd statusbar expand-notifications") } } } @@ -525,20 +536,20 @@ class PerformActionsUseCaseImpl( val globalAction = AccessibilityService.GLOBAL_ACTION_QUICK_SETTINGS result = - accessibilityService.doGlobalAction(globalAction).otherwise { - shellAdapter.execute("cmd statusbar expand-settings") + service.doGlobalAction(globalAction).otherwise { + shell.execute("cmd statusbar expand-settings") } } is ActionData.StatusBar.ToggleQuickSettings -> { result = - if (accessibilityService.rootNode?.packageName == "com.android.systemui") { + if (service.rootNode?.packageName == "com.android.systemui") { closeStatusBarShade() } else { val globalAction = AccessibilityService.GLOBAL_ACTION_QUICK_SETTINGS - accessibilityService.doGlobalAction(globalAction).otherwise { - shellAdapter.execute("cmd statusbar expand-settings") + service.doGlobalAction(globalAction).otherwise { + shell.execute("cmd statusbar expand-settings") } } } @@ -589,32 +600,32 @@ class PerformActionsUseCaseImpl( is ActionData.GoBack -> { result = - accessibilityService.doGlobalAction(AccessibilityService.GLOBAL_ACTION_BACK) + service.doGlobalAction(AccessibilityService.GLOBAL_ACTION_BACK) } is ActionData.GoHome -> { result = - accessibilityService.doGlobalAction(AccessibilityService.GLOBAL_ACTION_HOME) + service.doGlobalAction(AccessibilityService.GLOBAL_ACTION_HOME) } is ActionData.OpenRecents -> { result = - accessibilityService.doGlobalAction(AccessibilityService.GLOBAL_ACTION_RECENTS) + service.doGlobalAction(AccessibilityService.GLOBAL_ACTION_RECENTS) } is ActionData.ToggleSplitScreen -> { result = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - accessibilityService.doGlobalAction(AccessibilityService.GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN) + service.doGlobalAction(AccessibilityService.GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN) } else { Error.SdkVersionTooLow(minSdk = Build.VERSION_CODES.N) } } is ActionData.GoLastApp -> { - accessibilityService.doGlobalAction(AccessibilityService.GLOBAL_ACTION_RECENTS) + service.doGlobalAction(AccessibilityService.GLOBAL_ACTION_RECENTS) delay(100) result = - accessibilityService.doGlobalAction(AccessibilityService.GLOBAL_ACTION_RECENTS) + service.doGlobalAction(AccessibilityService.GLOBAL_ACTION_RECENTS) } is ActionData.OpenMenu -> { @@ -646,30 +657,30 @@ class PerformActionsUseCaseImpl( if (inputKeyEventsWithShizuku.value) { shizukuInputEventInjector.inputKeyEvent(keyModel) } else { - imeInputEventInjector.inputKeyEvent(keyModel) + keyMapperImeMessenger.inputKeyEvent(keyModel) } result = Success(Unit) } is ActionData.ToggleKeyboard -> { - val isHidden = accessibilityService.isKeyboardHidden.firstBlocking() + val isHidden = service.isKeyboardHidden.firstBlocking() if (isHidden) { - accessibilityService.showKeyboard() + service.showKeyboard() } else { - accessibilityService.hideKeyboard() + service.hideKeyboard() } result = Success(Unit) } is ActionData.ShowKeyboard -> { - accessibilityService.showKeyboard() + service.showKeyboard() result = Success(Unit) } is ActionData.HideKeyboard -> { - accessibilityService.hideKeyboard() + service.hideKeyboard() result = Success(Unit) } @@ -678,25 +689,25 @@ class PerformActionsUseCaseImpl( } is ActionData.CutText -> { - result = accessibilityService.performActionOnNode({ it.isFocused }) { + result = service.performActionOnNode({ it.isFocused }) { AccessibilityNodeAction(AccessibilityNodeInfo.ACTION_CUT) } } is ActionData.CopyText -> { - result = accessibilityService.performActionOnNode({ it.isFocused }) { + result = service.performActionOnNode({ it.isFocused }) { AccessibilityNodeAction(AccessibilityNodeInfo.ACTION_COPY) } } is ActionData.PasteText -> { - result = accessibilityService.performActionOnNode({ it.isFocused }) { + result = service.performActionOnNode({ it.isFocused }) { AccessibilityNodeAction(AccessibilityNodeInfo.ACTION_PASTE) } } is ActionData.SelectWordAtCursor -> { - result = accessibilityService.performActionOnNode({ it.isFocused }) { node -> + result = service.performActionOnNode({ it.isFocused }) { node -> // it is at the cursor position if they both return the same value if (node.textSelectionStart == node.textSelectionEnd) { val cursorPosition = node.textSelectionStart @@ -758,7 +769,7 @@ class PerformActionsUseCaseImpl( } } else { result = - accessibilityService.doGlobalAction(AccessibilityService.GLOBAL_ACTION_TAKE_SCREENSHOT) + service.doGlobalAction(AccessibilityService.GLOBAL_ACTION_TAKE_SCREENSHOT) } } @@ -778,7 +789,7 @@ class PerformActionsUseCaseImpl( result = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { suAdapter.execute("input keyevent ${KeyEvent.KEYCODE_POWER}") } else { - accessibilityService.doGlobalAction(AccessibilityService.GLOBAL_ACTION_LOCK_SCREEN) + service.doGlobalAction(AccessibilityService.GLOBAL_ACTION_LOCK_SCREEN) } } @@ -800,11 +811,11 @@ class PerformActionsUseCaseImpl( is ActionData.ShowPowerMenu -> { result = - accessibilityService.doGlobalAction(AccessibilityService.GLOBAL_ACTION_POWER_DIALOG) + service.doGlobalAction(AccessibilityService.GLOBAL_ACTION_POWER_DIALOG) } is ActionData.Volume.ShowDialog -> { - result = volumeAdapter.showVolumeUi() + result = audioAdapter.showVolumeUi() } ActionData.DismissAllNotifications -> { @@ -843,10 +854,10 @@ class PerformActionsUseCaseImpl( } is ActionData.InteractUiElement -> { - if (accessibilityService.activeWindowPackage.first() != action.packageName) { + if (service.activeWindowPackage.first() != action.packageName) { result = Error.UiElementNotFound } else { - result = accessibilityService.performActionOnNode( + result = service.performActionOnNode( findNode = { node -> matchAccessibilityNode(node, action) }, @@ -867,21 +878,21 @@ class PerformActionsUseCaseImpl( } override fun getErrorSnapshot(): ActionErrorSnapshot { - return getActionError.actionErrorSnapshot.firstBlocking() + return getActionErrorUseCase.actionErrorSnapshot.firstBlocking() } override val defaultRepeatDelay: Flow = - preferenceRepository.get(Keys.defaultRepeatDelay) + settingsRepository.get(Keys.defaultRepeatDelay) .map { it ?: PreferenceDefaults.REPEAT_DELAY } .map { it.toLong() } override val defaultRepeatRate: Flow = - preferenceRepository.get(Keys.defaultRepeatRate) + settingsRepository.get(Keys.defaultRepeatRate) .map { it ?: PreferenceDefaults.REPEAT_RATE } .map { it.toLong() } override val defaultHoldDownDuration: Flow = - preferenceRepository.get(Keys.defaultHoldDownDuration) + settingsRepository.get(Keys.defaultHoldDownDuration) .map { it ?: PreferenceDefaults.HOLD_DOWN_DURATION } .map { it.toLong() } @@ -890,7 +901,7 @@ class PerformActionsUseCaseImpl( // automatically select a game controller as the input device for game controller key events if (InputEventUtils.isGamepadKeyCode(action.keyCode)) { - deviceAdapter.connectedInputDevices.value.ifIsData { inputDevices -> + devicesAdapter.connectedInputDevices.value.ifIsData { inputDevices -> val device = inputDevices.find { it.isGameController } if (device != null) { @@ -902,7 +913,7 @@ class PerformActionsUseCaseImpl( return 0 } - val inputDevices = deviceAdapter.connectedInputDevices.value + val inputDevices = devicesAdapter.connectedInputDevices.value val devicesWithSameDescriptor = inputDevices.dataOrNull() @@ -922,7 +933,7 @@ class PerformActionsUseCaseImpl( code. if none do then use the first one */ val deviceThatHasKey = devicesWithSameDescriptor.singleOrNull { - deviceAdapter.deviceHasKey(it.id, action.keyCode) + devicesAdapter.deviceHasKey(it.id, action.keyCode) } val device = deviceThatHasKey @@ -934,10 +945,10 @@ class PerformActionsUseCaseImpl( private fun closeStatusBarShade(): Result<*> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - return accessibilityService + return service .doGlobalAction(AccessibilityService.GLOBAL_ACTION_DISMISS_NOTIFICATION_SHADE) } else { - return shellAdapter.execute("cmd statusbar collapse") + return shell.execute("cmd statusbar collapse") } } diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt index 268a22c958..327cdfa40f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -5,6 +5,7 @@ import android.view.KeyEvent import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.common.result.Error @@ -37,10 +38,12 @@ import kotlinx.coroutines.launch import splitties.bitflags.hasFlag import splitties.bitflags.minusFlag import splitties.bitflags.withFlag +import javax.inject.Inject -class ConfigKeyEventActionViewModel( +@HiltViewModel +class ConfigKeyEventActionViewModel @Inject constructor( private val useCase: ConfigKeyEventUseCase, - resourceProvider: ResourceProvider, + private val resourceProvider: ResourceProvider ) : ViewModel(), ResourceProvider by resourceProvider, NavigationViewModel by NavigationViewModelImpl() { @@ -234,15 +237,6 @@ class ConfigKeyEventActionViewModel( ) } - @Suppress("UNCHECKED_CAST") - class Factory( - private val useCase: ConfigKeyEventUseCase, - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = ConfigKeyEventActionViewModel(useCase, resourceProvider) as T - } - private data class KeyEventState( val keyCode: Result = Error.EmptyText, val chosenDevice: InputDeviceInfo? = null, diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/GetConstraintErrorUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/GetConstraintErrorUseCase.kt index 0d2667029b..4365574b8c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/GetConstraintErrorUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/constraints/GetConstraintErrorUseCase.kt @@ -1,10 +1,14 @@ package io.github.sds100.keymapper.constraints +import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter +import io.github.sds100.keymapper.system.systemfeature.SystemFeatureAdapter +import javax.inject.Inject +import javax.inject.Singleton import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.collectLatest @@ -12,17 +16,18 @@ import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge -class GetConstraintErrorUseCaseImpl( - private val packageManager: PackageManagerAdapter, +@Singleton +class GetConstraintErrorUseCaseImpl @Inject constructor( + private val packageManagerAdapter: PackageManagerAdapter, private val permissionAdapter: PermissionAdapter, private val systemFeatureAdapter: SystemFeatureAdapter, private val inputMethodAdapter: InputMethodAdapter, - private val cameraAdapter: CameraAdapter, + private val cameraAdapter: CameraAdapter ) : GetConstraintErrorUseCase { private val invalidateConstraintErrors = merge( permissionAdapter.onPermissionsUpdate, inputMethodAdapter.inputMethods.drop(1).map { }, - packageManager.onPackagesChanged, + packageManagerAdapter.onPackagesChanged, ) override val constraintErrorSnapshot: Flow = channelFlow { @@ -34,7 +39,7 @@ class GetConstraintErrorUseCaseImpl( } private fun createSnapshot(): ConstraintErrorSnapshot = LazyConstraintErrorSnapshot( - packageManager, + packageManagerAdapter, permissionAdapter, systemFeatureAdapter, inputMethodAdapter, diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt index 9592e696a2..8d72c024bc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt @@ -6,8 +6,8 @@ import androidx.compose.material.icons.outlined.BubbleChart import androidx.compose.material.icons.outlined.Keyboard import androidx.compose.ui.graphics.vector.ImageVector import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.R import io.github.sds100.keymapper.backup.BackupRestoreMappingsUseCase @@ -34,8 +34,10 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import javax.inject.Inject -class HomeViewModel( +@HiltViewModel +class HomeViewModel @Inject constructor( private val listKeyMaps: ListKeyMapsUseCase, private val pauseKeyMaps: PauseKeyMapsUseCase, private val backupRestore: BackupRestoreMappingsUseCase, @@ -172,34 +174,6 @@ class HomeViewModel( ) } } - - @Suppress("UNCHECKED_CAST") - class Factory( - private val listKeyMaps: ListKeyMapsUseCase, - private val pauseMappings: PauseKeyMapsUseCase, - private val backupRestore: BackupRestoreMappingsUseCase, - private val showAlertsUseCase: ShowHomeScreenAlertsUseCase, - private val onboarding: OnboardingUseCase, - private val resourceProvider: ResourceProvider, - private val setupGuiKeyboard: SetupGuiKeyboardUseCase, - private val sortKeyMaps: SortKeyMapsUseCase, - private val listFloatingLayouts: ListFloatingLayoutsUseCase, - private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, - ) : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = HomeViewModel( - listKeyMaps, - pauseMappings, - backupRestore, - showAlertsUseCase, - onboarding, - resourceProvider, - setupGuiKeyboard, - sortKeyMaps, - listFloatingLayouts, - showInputMethodPickerUseCase, - ) as T - } } enum class SelectedKeyMapsEnabled { diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt index d0064344f9..5ef907d9f0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt @@ -26,8 +26,11 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject -class ConfigKeyMapViewModel( +@HiltViewModel +class ConfigKeyMapViewModel @Inject constructor( private val config: ConfigKeyMapUseCase, private val testAction: TestActionUseCase, private val onboarding: OnboardingUseCase, @@ -144,34 +147,4 @@ class ConfigKeyMapViewModel( fun onSkipTutorialClick() { onboarding.skipTapTargetOnboarding() } - - class Factory( - private val config: ConfigKeyMapUseCase, - private val testAction: TestActionUseCase, - private val onboard: OnboardingUseCase, - private val recordTrigger: RecordTriggerUseCase, - private val createKeyMapShortcut: CreateKeyMapShortcutUseCase, - private val displayMapping: DisplayKeyMapUseCase, - private val createActionUseCase: CreateActionUseCase, - private val resourceProvider: ResourceProvider, - private val purchasingManager: PurchasingManager, - private val setupGuiKeyboardUseCase: SetupGuiKeyboardUseCase, - private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, - ) : ViewModelProvider.Factory { - - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class) = ConfigKeyMapViewModel( - config, - testAction, - onboard, - recordTrigger, - createKeyMapShortcut, - displayMapping, - createActionUseCase, - resourceProvider, - purchasingManager, - setupGuiKeyboardUseCase, - fingerprintGesturesSupported, - ) as T - } } diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt index 021bdd2dea..4360a79270 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt @@ -7,16 +7,18 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.api.Api import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.apps.AppShortcutAdapter -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.util.ResourceProvider +import javax.inject.Inject +import javax.inject.Singleton -class CreateKeyMapShortcutUseCaseImpl( - private val adapter: AppShortcutAdapter, - resourceProvider: ResourceProvider, -) : CreateKeyMapShortcutUseCase, - ResourceProvider by resourceProvider { +@Singleton +class CreateKeyMapShortcutUseCaseImpl @Inject constructor( + private val appShortcutAdapter: AppShortcutAdapter, + private val resourceProvider: ResourceProvider +) : CreateKeyMapShortcutUseCase { override val isSupported: Boolean - get() = adapter.areLauncherShortcutsSupported + get() = appShortcutAdapter.areLauncherShortcutsSupported override fun pinShortcut( keyMapUid: String, @@ -24,21 +26,21 @@ class CreateKeyMapShortcutUseCaseImpl( icon: Drawable?, ): Result<*> { val shortcut = if (icon == null) { - adapter.createLauncherShortcut( + appShortcutAdapter.createLauncherShortcut( iconResId = R.mipmap.ic_launcher_round, label = shortcutLabel, intentAction = Api.ACTION_TRIGGER_KEYMAP_BY_UID, bundleOf(Api.EXTRA_KEYMAP_UID to keyMapUid), ) } else { - adapter.createLauncherShortcut( + appShortcutAdapter.createLauncherShortcut( icon = icon, label = shortcutLabel, intentAction = Api.ACTION_TRIGGER_KEYMAP_BY_UID, bundleOf(Api.EXTRA_KEYMAP_UID to keyMapUid), ) } - return adapter.pinShortcut(shortcut) + return appShortcutAdapter.pinShortcut(shortcut) } override fun createIntent( @@ -47,21 +49,21 @@ class CreateKeyMapShortcutUseCaseImpl( icon: Drawable?, ): Intent { val shortcut = if (icon == null) { - adapter.createLauncherShortcut( + appShortcutAdapter.createLauncherShortcut( iconResId = R.mipmap.ic_launcher_round, label = shortcutLabel, intentAction = Api.ACTION_TRIGGER_KEYMAP_BY_UID, bundleOf(Api.EXTRA_KEYMAP_UID to keyMapUid), ) } else { - adapter.createLauncherShortcut( + appShortcutAdapter.createLauncherShortcut( icon = icon, label = shortcutLabel, intentAction = Api.ACTION_TRIGGER_KEYMAP_BY_UID, bundleOf(Api.EXTRA_KEYMAP_UID to keyMapUid), ) } - return adapter.createShortcutResultIntent(shortcut) + return appShortcutAdapter.createShortcutResultIntent(shortcut) } } diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt index 7b8f1607aa..3555749abf 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt @@ -7,8 +7,8 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.actions.ActionErrorSnapshot import io.github.sds100.keymapper.actions.ActionUiHelper import io.github.sds100.keymapper.constraints.ConstraintErrorSnapshot @@ -19,7 +19,7 @@ import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.mapData -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.util.ResourceProvider import io.github.sds100.keymapper.util.ui.TintType import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo import kotlinx.coroutines.flow.MutableSharedFlow @@ -31,14 +31,15 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch +import javax.inject.Inject -class CreateKeyMapShortcutViewModel( - private val configKeyMapUseCase: ConfigKeyMapUseCase, +@HiltViewModel +class CreateKeyMapShortcutViewModel @Inject constructor( + private val config: ConfigKeyMapUseCase, private val listKeyMaps: ListKeyMapsUseCase, - private val createShortcutUseCase: CreateKeyMapShortcutUseCase, - resourceProvider: ResourceProvider, -) : ViewModel(), - ResourceProvider by resourceProvider { + private val createKeyMapShortcut: CreateKeyMapShortcutUseCase, + private val resourceProvider: ResourceProvider +) : ViewModel() { private val actionUiHelper = ActionUiHelper(listKeyMaps, resourceProvider) private val constraintUiHelper = ConstraintUiHelper( listKeyMaps, @@ -155,10 +156,10 @@ class CreateKeyMapShortcutViewModel( if (state.keyMaps !is State.Data) return@launch - configKeyMapUseCase.loadKeyMap(uid) - configKeyMapUseCase.setTriggerFromOtherAppsEnabled(true) + config.loadKeyMap(uid) + config.setTriggerFromOtherAppsEnabled(true) - val keyMapState = configKeyMapUseCase.keyMap.first() + val keyMapState = config.keyMap.first() if (keyMapState !is State.Data) return@launch @@ -205,13 +206,13 @@ class CreateKeyMapShortcutViewModel( return@launch } - val intent = createShortcutUseCase.createIntent( + val intent = createKeyMapShortcut.createIntent( keyMapUid = keyMap.uid, shortcutLabel = shortcutName, icon = icon, ) - configKeyMapUseCase.save() + config.save() _returnIntentResult.emit(intent) } @@ -228,20 +229,4 @@ class CreateKeyMapShortcutViewModel( listKeyMaps.popGroup() } } - - class Factory( - private val configKeyMapUseCase: ConfigKeyMapUseCase, - private val listUseCase: ListKeyMapsUseCase, - private val createShortcutUseCase: CreateKeyMapShortcutUseCase, - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.Factory { - - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class) = CreateKeyMapShortcutViewModel( - configKeyMapUseCase, - listUseCase, - createShortcutUseCase, - resourceProvider, - ) as T - } } diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt index 65d9900bf0..c35acaee87 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt @@ -1,6 +1,8 @@ package io.github.sds100.keymapper.keymaps +import android.content.Context import android.graphics.drawable.Drawable +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.actions.DisplayActionUseCase import io.github.sds100.keymapper.actions.GetActionErrorUseCase import io.github.sds100.keymapper.common.result.Error @@ -18,17 +20,19 @@ import io.github.sds100.keymapper.purchasing.PurchasingError import io.github.sds100.keymapper.purchasing.PurchasingManager import io.github.sds100.keymapper.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter +import io.github.sds100.keymapper.system.ringtone.RingtoneAdapter import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.util.ResourceProvider +import io.github.sds100.keymapper.util.SettingsRepository import kotlinx.coroutines.TimeoutCancellationException import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.callbackFlow @@ -38,25 +42,28 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.withTimeout +import javax.inject.Inject +import javax.inject.Singleton -class DisplayKeyMapUseCaseImpl( +@Singleton +class DisplayKeyMapUseCaseImpl @Inject constructor( private val permissionAdapter: PermissionAdapter, private val inputMethodAdapter: InputMethodAdapter, - private val packageManager: PackageManagerAdapter, - private val preferenceRepository: PreferenceRepository, - private val accessibilityServiceAdapter: ServiceAdapter, - private val preferences: PreferenceRepository, + private val packageManagerAdapter: PackageManagerAdapter, + private val settingsRepository: SettingsRepository, + private val accessibilityServiceAdapter: AccessibilityServiceAdapter, + private val settingsRepository2: SettingsRepository, private val purchasingManager: PurchasingManager, private val ringtoneAdapter: RingtoneAdapter, - getActionError: GetActionErrorUseCase, - getConstraintError: GetConstraintErrorUseCase, + private val getActionErrorUseCase: GetActionErrorUseCase, + private val getConstraintErrorUseCase: GetConstraintErrorUseCase ) : DisplayKeyMapUseCase, - GetActionErrorUseCase by getActionError, - GetConstraintErrorUseCase by getConstraintError { + GetActionErrorUseCase by getActionErrorUseCase, + GetConstraintErrorUseCase by getConstraintErrorUseCase { private val keyMapperImeHelper = KeyMapperImeHelper(inputMethodAdapter) private val showDpadImeSetupError: Flow = - preferences.get(Keys.neverShowDpadImeTriggerError).map { neverShow -> + settingsRepository.get(Keys.neverShowDpadImeTriggerError).map { neverShow -> if (neverShow == null) { true } else { @@ -102,7 +109,7 @@ class DisplayKeyMapUseCaseImpl( } override val showTriggerKeyboardIconExplanation: Flow = - preferences.get(Keys.neverShowTriggerKeyboardIconExplanation).map { neverShow -> + settingsRepository.get(Keys.neverShowTriggerKeyboardIconExplanation).map { neverShow -> if (neverShow == null) { true } else { @@ -111,14 +118,14 @@ class DisplayKeyMapUseCaseImpl( } override val showDeviceDescriptors: Flow = - preferenceRepository.get(Keys.showDeviceDescriptors).map { it == true } + settingsRepository2.get(Keys.showDeviceDescriptors).map { it == true } override fun neverShowTriggerKeyboardIconExplanation() { - preferences.set(Keys.neverShowTriggerKeyboardIconExplanation, true) + settingsRepository.set(Keys.neverShowTriggerKeyboardIconExplanation, true) } override fun neverShowDpadImeSetupError() { - preferences.set(Keys.neverShowDpadImeTriggerError, true) + settingsRepository.set(Keys.neverShowDpadImeTriggerError, true) } override suspend fun isFloatingButtonsPurchased(): Boolean { @@ -152,16 +159,16 @@ class DisplayKeyMapUseCaseImpl( } } - override fun getAppName(packageName: String): Result = packageManager.getAppName(packageName) + override fun getAppName(packageName: String): Result = packageManagerAdapter.getAppName(packageName) - override fun getAppIcon(packageName: String): Result = packageManager.getAppIcon(packageName) + override fun getAppIcon(packageName: String): Result = packageManagerAdapter.getAppIcon(packageName) override fun getInputMethodLabel(imeId: String): Result = inputMethodAdapter.getInfoById(imeId).then { Success(it.label) } override suspend fun fixError(error: Error) { when (error) { - is Error.AppDisabled -> packageManager.enableApp(error.packageName) - is Error.AppNotFound -> packageManager.downloadApp(error.packageName) + is Error.AppDisabled -> packageManagerAdapter.enableApp(error.packageName) + is Error.AppNotFound -> packageManagerAdapter.downloadApp(error.packageName) Error.NoCompatibleImeChosen -> keyMapperImeHelper.chooseCompatibleInputMethod().otherwise { inputMethodAdapter.showImePicker(fromForeground = true) @@ -170,7 +177,7 @@ class DisplayKeyMapUseCaseImpl( Error.NoCompatibleImeEnabled -> keyMapperImeHelper.enableCompatibleInputMethods() is SystemError.ImeDisabled -> inputMethodAdapter.enableIme(error.ime.id) is SystemError.PermissionDenied -> permissionAdapter.request(error.permission) - is Error.ShizukuNotStarted -> packageManager.openApp(ShizukuUtils.SHIZUKU_PACKAGE) + is Error.ShizukuNotStarted -> packageManagerAdapter.openApp(ShizukuUtils.SHIZUKU_PACKAGE) is Error.CantDetectKeyEventsInPhoneCall -> { if (!keyMapperImeHelper.isCompatibleImeEnabled()) { keyMapperImeHelper.enableCompatibleInputMethods() @@ -193,7 +200,7 @@ class DisplayKeyMapUseCaseImpl( override fun restartAccessibilityService(): Boolean = accessibilityServiceAdapter.restart() override fun neverShowDndTriggerError() { - preferenceRepository.set(Keys.neverShowDndAccessError, true) + settingsRepository2.set(Keys.neverShowDndAccessError, true) } override fun getRingtoneLabel(uri: String): Result { diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGesturesSupportedUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGesturesSupportedUseCase.kt index 733e58e041..f5502dc17e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGesturesSupportedUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGesturesSupportedUseCase.kt @@ -1,13 +1,20 @@ package io.github.sds100.keymapper.keymaps +import android.content.Context import android.os.Build import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository +import io.github.sds100.keymapper.util.SettingsRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class FingerprintGesturesSupportedUseCaseImpl( +@Singleton +class FingerprintGesturesSupportedUseCaseImpl @Inject constructor( private val preferenceRepository: PreferenceRepository, + private val settingsRepository: SettingsRepository ) : FingerprintGesturesSupportedUseCase { override val isSupported: Flow = preferenceRepository.get(Keys.fingerprintGesturesAvailable).map { diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/PauseKeyMapsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/PauseKeyMapsUseCase.kt index 529015bb72..3f802f85cd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/PauseKeyMapsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/PauseKeyMapsUseCase.kt @@ -1,19 +1,24 @@ package io.github.sds100.keymapper.keymaps +import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.media.MediaAdapter -import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter +import io.github.sds100.keymapper.system.ringtone.RingtoneAdapter +import io.github.sds100.keymapper.util.SettingsRepository +import javax.inject.Inject +import javax.inject.Singleton import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import timber.log.Timber - - -class PauseKeyMapsUseCaseImpl( +@Singleton +class PauseKeyMapsUseCaseImpl @Inject constructor( + private val settingsRepository: SettingsRepository, private val preferenceRepository: PreferenceRepository, private val mediaAdapter: MediaAdapter, - private val ringtoneAdapter: RingtoneAdapter, + private val ringtoneAdapter: RingtoneAdapter ) : PauseKeyMapsUseCase { override val isPaused: Flow = diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt index abe5b92b9c..b9477628fa 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt @@ -32,7 +32,8 @@ import io.github.sds100.keymapper.trigger.FingerprintTriggerKey import io.github.sds100.keymapper.util.InputEventType import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.util.ResourceProvider +import io.github.sds100.keymapper.util.SettingsRepository import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow @@ -42,8 +43,11 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import timber.log.Timber +import javax.inject.Inject +import javax.inject.Singleton -class DetectKeyMapsUseCaseImpl( +@Singleton +class DetectKeyMapsUseCaseImpl @Inject constructor( private val keyMapRepository: KeyMapRepository, private val floatingButtonRepository: FloatingButtonRepository, private val groupRepository: GroupRepository, diff --git a/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt index c5668776c9..3998becd1b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt @@ -1,6 +1,8 @@ package io.github.sds100.keymapper.onboarding +import android.content.Context import androidx.datastore.preferences.core.Preferences +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.canUseImeToPerform @@ -24,29 +26,33 @@ import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.util.PrefDelegate import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.VersionHelper +import io.github.sds100.keymapper.util.ResourceProvider +import io.github.sds100.keymapper.util.SettingsRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filterIsInstance import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map +import javax.inject.Inject +import javax.inject.Singleton - -class OnboardingUseCaseImpl( - private val preferences: PreferenceRepository, +@Singleton +class OnboardingUseCaseImpl @Inject constructor( + private val settingsRepository: SettingsRepository, private val fileAdapter: FileAdapter, private val leanbackAdapter: LeanbackAdapter, private val shizukuAdapter: ShizukuAdapter, private val permissionAdapter: PermissionAdapter, private val packageManagerAdapter: PackageManagerAdapter, private val purchasingManager: PurchasingManager, - private val keyMapRepository: KeyMapRepository, -) : PreferenceRepository by preferences, + private val keyMapRepository: KeyMapRepository +) : PreferenceRepository by settingsRepository, OnboardingUseCase { override var shownAppIntro by PrefDelegate(Keys.shownAppIntro, false) override suspend fun showInstallGuiKeyboardPrompt(action: ActionData): Boolean { - val acknowledged = preferences.get(Keys.acknowledgedGuiKeyboard).first() + val acknowledged = settingsRepository.get(Keys.acknowledgedGuiKeyboard).first() val isGuiKeyboardInstalled = packageManagerAdapter.isAppInstalled(KeyMapperImeHelper.KEY_MAPPER_GUI_IME_PACKAGE) @@ -63,7 +69,7 @@ class OnboardingUseCaseImpl( action.canUseShizukuToPerform() override fun neverShowGuiKeyboardPromptsAgain() { - preferences.set(Keys.acknowledgedGuiKeyboard, true) + settingsRepository.set(Keys.acknowledgedGuiKeyboard, true) } override var shownParallelTriggerOrderExplanation by PrefDelegate( @@ -113,7 +119,7 @@ class OnboardingUseCaseImpl( override fun isTvDevice(): Boolean = leanbackAdapter.isTvDevice() override val promptForShizukuPermission: Flow = combine( - preferences.get(Keys.shownShizukuPermissionPrompt), + settingsRepository.get(Keys.shownShizukuPermissionPrompt), shizukuAdapter.isInstalled, permissionAdapter.isGrantedFlow(Permission.SHIZUKU), ) { @@ -128,7 +134,7 @@ class OnboardingUseCaseImpl( get() = shizukuAdapter.isInstalled.value override val showNoKeysDetectedBottomSheet: Flow = - preferences.get(Keys.neverShowNoKeysRecordedError).map { neverShow -> + settingsRepository.get(Keys.neverShowNoKeysRecordedError).map { neverShow -> if (neverShow == null) { true } else { @@ -137,7 +143,7 @@ class OnboardingUseCaseImpl( } override fun neverShowNoKeysRecordedBottomSheet() { - preferences.set(Keys.neverShowNoKeysRecordedError, true) + settingsRepository.set(Keys.neverShowNoKeysRecordedError, true) } override val hasViewedAdvancedTriggers: Flow = @@ -152,7 +158,7 @@ class OnboardingUseCaseImpl( if (tapTarget == OnboardingTapTarget.ADVANCED_TRIGGERS) { return combine( - preferences.get(shownKey).map { it ?: false }, + settingsRepository.get(shownKey).map { it ?: false }, purchasingManager.purchases.filterIsInstance>>>(), keyMapRepository.keyMapList.filterIsInstance>>(), ) { isShown, purchases, keyMapList -> @@ -169,8 +175,8 @@ class OnboardingUseCaseImpl( } } else { return combine( - preferences.get(shownKey).map { it ?: false }, - preferences.get(Keys.skipTapTargetTutorial).map { it ?: false }, + settingsRepository.get(shownKey).map { it ?: false }, + settingsRepository.get(Keys.skipTapTargetTutorial).map { it ?: false }, keyMapRepository.keyMapList.filterIsInstance>>(), ) { isShown, skipTapTarget, keyMapList -> showTutorialTapTarget(tapTarget, isShown, skipTapTarget, keyMapList.data) @@ -180,7 +186,7 @@ class OnboardingUseCaseImpl( override fun completedTapTarget(tapTarget: OnboardingTapTarget) { val key = getTapTargetKey(tapTarget) - preferences.set(key, true) + settingsRepository.set(key, true) } private fun getTapTargetKey(tapTarget: OnboardingTapTarget): Preferences.Key { @@ -224,7 +230,7 @@ class OnboardingUseCaseImpl( } override fun skipTapTargetOnboarding() { - preferences.set(Keys.skipTapTargetTutorial, true) + settingsRepository.set(Keys.skipTapTargetTutorial, true) } } diff --git a/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsUseCase.kt index ae75f1bb22..f78f79c506 100644 --- a/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -1,6 +1,9 @@ package io.github.sds100.keymapper.reroutekeyevents +import android.content.Context import android.os.Build +import dagger.hilt.android.qualifiers.ApplicationContext +import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapper import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjector @@ -8,20 +11,23 @@ import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.util.firstBlocking +import io.github.sds100.keymapper.util.SettingsRepository import kotlinx.coroutines.flow.map import kotlinx.coroutines.runBlocking - - +import javax.inject.Inject +import javax.inject.Singleton /** * This is used for the feature created in issue #618 to fix the device IDs of key events * on Android 11. There was a bug in the system where enabling an accessibility service * would reset the device ID of key events to -1. */ -class RerouteKeyEventsUseCaseImpl( +@Singleton +class RerouteKeyEventsUseCaseImpl @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, - private val imeInputEventInjector: ImeInputEventInjector, + private val keyMapperImeMessenger: ImeInputEventInjector, private val preferenceRepository: PreferenceRepository, + private val settingsRepository: SettingsRepository ) : RerouteKeyEventsUseCase { private val rerouteKeyEvents = @@ -49,7 +55,7 @@ class RerouteKeyEventsUseCaseImpl( override fun inputKeyEvent(keyModel: InputKeyModel) { // It is safe to run the ime injector on the main thread. runBlocking { - imeInputEventInjector.inputKeyEvent(keyModel) + keyMapperImeMessenger.inputKeyEvent(keyModel) } } } diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt index a7e6563845..a164ba5fe5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt @@ -24,11 +24,14 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import dagger.hilt.android.lifecycle.HiltViewModel +import io.github.sds100.keymapper.settings.ConfigSettingsUseCase +import javax.inject.Inject - -class SettingsViewModel( +@HiltViewModel +class SettingsViewModel @Inject constructor( private val useCase: ConfigSettingsUseCase, - resourceProvider: ResourceProvider, + private val resourceProvider: ResourceProvider ) : ViewModel(), PopupViewModel by PopupViewModelImpl(), ResourceProvider by resourceProvider { @@ -208,16 +211,4 @@ class SettingsViewModel( } } } - - @Suppress("UNCHECKED_CAST") - class Factory( - private val configSettingsUseCase: ConfigSettingsUseCase, - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = SettingsViewModel( - configSettingsUseCase, - resourceProvider, - ) as T - } } diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/SortKeyMapsUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/sorting/SortKeyMapsUseCase.kt index 03b9ca6835..fb4dac1ec6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/SortKeyMapsUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/sorting/SortKeyMapsUseCase.kt @@ -1,5 +1,7 @@ package io.github.sds100.keymapper.sorting +import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.keymaps.DisplayKeyMapUseCase @@ -8,13 +10,18 @@ import io.github.sds100.keymapper.sorting.comparators.KeyMapActionsComparator import io.github.sds100.keymapper.sorting.comparators.KeyMapConstraintsComparator import io.github.sds100.keymapper.sorting.comparators.KeyMapOptionsComparator import io.github.sds100.keymapper.sorting.comparators.KeyMapTriggerComparator +import io.github.sds100.keymapper.util.SettingsRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlinx.serialization.json.Json +import javax.inject.Inject +import javax.inject.Singleton -class SortKeyMapsUseCaseImpl( +@Singleton +class SortKeyMapsUseCaseImpl @Inject constructor( private val preferenceRepository: PreferenceRepository, - private val displaySimpleMappingUseCase: DisplayKeyMapUseCase, + private val displayKeyMapUseCase: DisplayKeyMapUseCase, + private val settingsRepository: SettingsRepository ) : SortKeyMapsUseCase { override val showHelp = preferenceRepository.get(Keys.sortShowHelp).map { it ?: true } @@ -72,9 +79,9 @@ class SortKeyMapsUseCaseImpl( return when (sortFieldOrder.field) { SortField.TRIGGER -> KeyMapTriggerComparator(reverseOrder) - SortField.ACTIONS -> KeyMapActionsComparator(displaySimpleMappingUseCase, reverseOrder) + SortField.ACTIONS -> KeyMapActionsComparator(displayKeyMapUseCase, reverseOrder) SortField.CONSTRAINTS -> KeyMapConstraintsComparator( - displaySimpleMappingUseCase, + displayKeyMapUseCase, reverseOrder, ) diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt index 36eddb72cc..60e5f4cdac 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseActivityViewModel.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system.apps import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.filterByQuery @@ -17,8 +17,12 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map +import javax.inject.Inject -class ChooseActivityViewModel(private val useCase: DisplayAppsUseCase) : ViewModel() { +@HiltViewModel +class ChooseActivityViewModel @Inject constructor( + private val useCase: DisplayAppsUseCase +) : ViewModel() { val searchQuery = MutableStateFlow(null) @@ -73,13 +77,4 @@ class ChooseActivityViewModel(private val useCase: DisplayAppsUseCase) : ViewMod } }.flowOn(Dispatchers.Default).launchIn(viewModelScope) } - - class Factory( - private val useCase: DisplayAppsUseCase, - ) : ViewModelProvider.Factory { - - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class) = - ChooseActivityViewModel(useCase) as T - } } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt index 063d5b41ce..3caf4494e9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppShortcutViewModel.kt @@ -26,10 +26,14 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import java.util.Locale +import dagger.hilt.android.lifecycle.HiltViewModel +import io.github.sds100.keymapper.system.apps.DisplayAppShortcutsUseCase +import javax.inject.Inject -class ChooseAppShortcutViewModel internal constructor( +@HiltViewModel +class ChooseAppShortcutViewModel @Inject constructor( private val useCase: DisplayAppShortcutsUseCase, - resourceProvider: ResourceProvider, + private val resourceProvider: ResourceProvider ) : ViewModel(), PopupViewModel by PopupViewModelImpl(), ResourceProvider by resourceProvider { @@ -121,17 +125,4 @@ class ChooseAppShortcutViewModel internal constructor( ) } } - - class Factory( - private val useCase: DisplayAppShortcutsUseCase, - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.Factory { - - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class) = - ChooseAppShortcutViewModel( - useCase, - resourceProvider, - ) as T - } } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt index ccfd4c0eee..63b651046b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/apps/ChooseAppViewModel.kt @@ -3,6 +3,7 @@ package io.github.sds100.keymapper.system.apps import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.filterByQuery @@ -24,8 +25,10 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.toList import kotlinx.coroutines.launch import java.util.Locale +import javax.inject.Inject -class ChooseAppViewModel( +@HiltViewModel +class ChooseAppViewModel @Inject constructor( private val useCase: DisplayAppsUseCase, ) : ViewModel() { @@ -128,15 +131,6 @@ class ChooseAppViewModel( }.flowOn(Dispatchers.Default) .toList() .sortedBy { it.title.lowercase(Locale.getDefault()) } - - class Factory( - private val useCase: DisplayAppsUseCase, - ) : ViewModelProvider.Factory { - - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class) = - ChooseAppViewModel(useCase) as T - } } data class AppListState( diff --git a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceViewModel.kt index e4ec041bbe..5c5ecc434b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceViewModel.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system.bluetooth import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.ui.DefaultSimpleListItem @@ -19,10 +19,13 @@ import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.launch +import io.github.sds100.keymapper.system.bluetooth.ChooseBluetoothDeviceUseCase +import javax.inject.Inject -class ChooseBluetoothDeviceViewModel( - val useCase: ChooseBluetoothDeviceUseCase, - resourceProvider: ResourceProvider, +@HiltViewModel +class ChooseBluetoothDeviceViewModel @Inject constructor( + private val useCase: ChooseBluetoothDeviceUseCase, + private val resourceProvider: ResourceProvider ) : ViewModel(), ResourceProvider by resourceProvider, PopupViewModel by PopupViewModelImpl() { @@ -78,17 +81,4 @@ class ChooseBluetoothDeviceViewModel( _returnResult.emit(deviceInfo) } } - - class Factory( - private val useCase: ChooseBluetoothDeviceUseCase, - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.Factory { - - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class) = - ChooseBluetoothDeviceViewModel( - useCase, - resourceProvider, - ) as T - } } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModel.kt index bb690f0e41..ca3e91e06e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModel.kt @@ -8,19 +8,20 @@ import androidx.core.net.toUri import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.apps.ActivityInfo -import io.github.sds100.keymapper.util.ui.DialogResponse -import io.github.sds100.keymapper.util.ui.MultiChoiceItem -import io.github.sds100.keymapper.util.ui.NavDestination -import io.github.sds100.keymapper.util.ui.NavigationViewModel -import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.navigate -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.util.DialogResponse +import io.github.sds100.keymapper.util.MultiChoiceItem +import io.github.sds100.keymapper.util.NavDestination +import io.github.sds100.keymapper.util.NavigationViewModel +import io.github.sds100.keymapper.util.NavigationViewModelImpl +import io.github.sds100.keymapper.util.PopupUi +import io.github.sds100.keymapper.util.PopupViewModel +import io.github.sds100.keymapper.util.PopupViewModelImpl +import io.github.sds100.keymapper.util.ResourceProvider +import io.github.sds100.keymapper.util.navigate +import io.github.sds100.keymapper.util.showPopup import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -34,9 +35,12 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import splitties.bitflags.hasFlag import splitties.bitflags.withFlag +import javax.inject.Inject -class ConfigIntentViewModel(resourceProvider: ResourceProvider) : - ViewModel(), +@HiltViewModel +class ConfigIntentViewModel @Inject constructor( + private val resourceProvider: ResourceProvider +) : ViewModel(), ResourceProvider by resourceProvider, PopupViewModel by PopupViewModelImpl(), NavigationViewModel by NavigationViewModelImpl() { @@ -516,13 +520,4 @@ class ConfigIntentViewModel(resourceProvider: ResourceProvider) : ) } } - - @Suppress("UNCHECKED_CAST") - class Factory( - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = - ConfigIntentViewModel(resourceProvider) as T - } } diff --git a/app/src/main/java/io/github/sds100/keymapper/util/Inject.kt b/app/src/main/java/io/github/sds100/keymapper/util/Inject.kt deleted file mode 100644 index de9f166a61..0000000000 --- a/app/src/main/java/io/github/sds100/keymapper/util/Inject.kt +++ /dev/null @@ -1,256 +0,0 @@ -package io.github.sds100.keymapper.util - -import android.content.Context -import androidx.lifecycle.lifecycleScope -import io.github.sds100.keymapper.KeyMapperApp -import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.UseCases -import io.github.sds100.keymapper.actions.ChooseActionViewModel -import io.github.sds100.keymapper.actions.TestActionUseCaseImpl -import io.github.sds100.keymapper.actions.keyevent.ChooseKeyCodeViewModel -import io.github.sds100.keymapper.actions.keyevent.ConfigKeyEventActionViewModel -import io.github.sds100.keymapper.actions.keyevent.ConfigKeyEventUseCaseImpl -import io.github.sds100.keymapper.actions.pinchscreen.PinchPickDisplayCoordinateViewModel -import io.github.sds100.keymapper.actions.sound.ChooseSoundFileUseCaseImpl -import io.github.sds100.keymapper.actions.sound.ChooseSoundFileViewModel -import io.github.sds100.keymapper.actions.swipescreen.SwipePickDisplayCoordinateViewModel -import io.github.sds100.keymapper.actions.tapscreen.PickDisplayCoordinateViewModel -import io.github.sds100.keymapper.actions.uielement.InteractUiElementViewModel -import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapper -import io.github.sds100.keymapper.backup.BackupRestoreMappingsUseCaseImpl -import io.github.sds100.keymapper.constraints.ChooseConstraintViewModel -import io.github.sds100.keymapper.constraints.CreateConstraintUseCaseImpl -import io.github.sds100.keymapper.home.HomeViewModel -import io.github.sds100.keymapper.home.ShowHomeScreenAlertsUseCaseImpl -import io.github.sds100.keymapper.keymaps.ConfigKeyMapViewModel -import io.github.sds100.keymapper.keymaps.CreateKeyMapShortcutViewModel -import io.github.sds100.keymapper.keymaps.FingerprintGesturesSupportedUseCaseImpl -import io.github.sds100.keymapper.keymaps.ListKeyMapsUseCaseImpl -import io.github.sds100.keymapper.logging.DisplayLogUseCaseImpl -import io.github.sds100.keymapper.logging.LogViewModel -import io.github.sds100.keymapper.settings.ConfigSettingsUseCaseImpl -import io.github.sds100.keymapper.settings.SettingsViewModel -import io.github.sds100.keymapper.sorting.SortKeyMapsUseCaseImpl -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceController -import io.github.sds100.keymapper.system.accessibility.MyAccessibilityService -import io.github.sds100.keymapper.system.apps.ChooseActivityViewModel -import io.github.sds100.keymapper.system.apps.ChooseAppShortcutViewModel -import io.github.sds100.keymapper.system.apps.ChooseAppViewModel -import io.github.sds100.keymapper.system.apps.DisplayAppShortcutsUseCaseImpl -import io.github.sds100.keymapper.system.bluetooth.ChooseBluetoothDeviceUseCaseImpl -import io.github.sds100.keymapper.system.bluetooth.ChooseBluetoothDeviceViewModel -import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCaseImpl -import io.github.sds100.keymapper.system.intents.ConfigIntentViewModel -import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCaseImpl - -object Inject { - - fun chooseActionViewModel(ctx: Context): ChooseActionViewModel.Factory = ChooseActionViewModel.Factory( - UseCases.createAction(ctx), - ServiceLocator.resourceProvider(ctx), - ) - - fun chooseAppViewModel(context: Context): ChooseAppViewModel.Factory = ChooseAppViewModel.Factory( - UseCases.displayPackages(context), - ) - - fun chooseActivityViewModel(context: Context): ChooseActivityViewModel.Factory = ChooseActivityViewModel.Factory( - UseCases.displayPackages(context), - ) - - fun chooseAppShortcutViewModel(context: Context): ChooseAppShortcutViewModel.Factory = ChooseAppShortcutViewModel.Factory( - DisplayAppShortcutsUseCaseImpl( - ServiceLocator.appShortcutAdapter(context), - ), - ServiceLocator.resourceProvider(context), - ) - - fun chooseConstraintListViewModel(ctx: Context): ChooseConstraintViewModel.Factory = ChooseConstraintViewModel.Factory( - CreateConstraintUseCaseImpl( - ServiceLocator.networkAdapter(ctx), - ServiceLocator.inputMethodAdapter(ctx), - ServiceLocator.settingsRepository(ctx), - ServiceLocator.cameraAdapter(ctx), - ), - ServiceLocator.resourceProvider(ctx), - ) - - fun configKeyEventViewModel( - context: Context, - ): ConfigKeyEventActionViewModel.Factory { - val useCase = ConfigKeyEventUseCaseImpl( - preferenceRepository = ServiceLocator.settingsRepository(context), - devicesAdapter = ServiceLocator.devicesAdapter(context), - ) - return ConfigKeyEventActionViewModel.Factory( - useCase, - ServiceLocator.resourceProvider(context), - ) - } - - fun chooseKeyCodeViewModel(): ChooseKeyCodeViewModel.Factory = ChooseKeyCodeViewModel.Factory() - - fun configIntentViewModel(ctx: Context): ConfigIntentViewModel.Factory = ConfigIntentViewModel.Factory(ServiceLocator.resourceProvider(ctx)) - - fun soundFileActionTypeViewModel(ctx: Context): ChooseSoundFileViewModel.Factory = ChooseSoundFileViewModel.Factory( - ServiceLocator.resourceProvider(ctx), - ChooseSoundFileUseCaseImpl( - ServiceLocator.fileAdapter(ctx), - ServiceLocator.soundsManager(ctx), - ), - ) - - fun tapCoordinateActionTypeViewModel(context: Context): PickDisplayCoordinateViewModel.Factory = PickDisplayCoordinateViewModel.Factory( - ServiceLocator.resourceProvider(context), - ) - - fun swipeCoordinateActionTypeViewModel(context: Context): SwipePickDisplayCoordinateViewModel.Factory = SwipePickDisplayCoordinateViewModel.Factory( - ServiceLocator.resourceProvider(context), - ) - - fun pinchCoordinateActionTypeViewModel(context: Context): PinchPickDisplayCoordinateViewModel.Factory = PinchPickDisplayCoordinateViewModel.Factory( - ServiceLocator.resourceProvider(context), - ) - - fun configKeyMapViewModel( - ctx: Context, - ): ConfigKeyMapViewModel.Factory = ConfigKeyMapViewModel.Factory( - UseCases.configKeyMap(ctx), - TestActionUseCaseImpl(ServiceLocator.accessibilityServiceAdapter(ctx)), - UseCases.onboarding(ctx), - (ctx.applicationContext as KeyMapperApp).recordTriggerController, - UseCases.createKeymapShortcut(ctx), - UseCases.displayKeyMap(ctx), - UseCases.createAction(ctx), - ServiceLocator.resourceProvider(ctx), - ServiceLocator.purchasingManager(ctx), - SetupGuiKeyboardUseCaseImpl( - ServiceLocator.inputMethodAdapter(ctx), - ServiceLocator.packageManagerAdapter(ctx), - ), - FingerprintGesturesSupportedUseCaseImpl(ServiceLocator.settingsRepository(ctx)), - ) - - fun createActionShortcutViewModel( - ctx: Context, - ): CreateKeyMapShortcutViewModel.Factory = CreateKeyMapShortcutViewModel.Factory( - UseCases.configKeyMap(ctx), - ListKeyMapsUseCaseImpl( - ServiceLocator.roomKeyMapRepository(ctx), - ServiceLocator.groupRepository(ctx), - ServiceLocator.floatingButtonRepository(ctx), - ServiceLocator.fileAdapter(ctx), - ServiceLocator.backupManager(ctx), - ServiceLocator.resourceProvider(ctx), - UseCases.displayKeyMap(ctx), - ), - UseCases.createKeymapShortcut(ctx), - ServiceLocator.resourceProvider(ctx), - ) - - fun homeViewModel(ctx: Context): HomeViewModel.Factory = HomeViewModel.Factory( - ListKeyMapsUseCaseImpl( - ServiceLocator.roomKeyMapRepository(ctx), - ServiceLocator.groupRepository(ctx), - ServiceLocator.floatingButtonRepository(ctx), - ServiceLocator.fileAdapter(ctx), - ServiceLocator.backupManager(ctx), - ServiceLocator.resourceProvider(ctx), - UseCases.displayKeyMap(ctx), - ), - UseCases.pauseKeyMaps(ctx), - BackupRestoreMappingsUseCaseImpl( - ServiceLocator.fileAdapter(ctx), - ServiceLocator.backupManager(ctx), - ), - ShowHomeScreenAlertsUseCaseImpl( - ServiceLocator.settingsRepository(ctx), - ServiceLocator.permissionAdapter(ctx), - ServiceLocator.accessibilityServiceAdapter(ctx), - UseCases.pauseKeyMaps(ctx), - ), - UseCases.onboarding(ctx), - ServiceLocator.resourceProvider(ctx), - SetupGuiKeyboardUseCaseImpl( - ServiceLocator.inputMethodAdapter(ctx), - ServiceLocator.packageManagerAdapter(ctx), - ), - SortKeyMapsUseCaseImpl( - ServiceLocator.settingsRepository(ctx), - UseCases.displayKeyMap(ctx), - ), - UseCases.listFloatingLayouts(ctx), - ShowInputMethodPickerUseCaseImpl(ServiceLocator.inputMethodAdapter(ctx)), - ) - - fun settingsViewModel(context: Context): SettingsViewModel.Factory = SettingsViewModel.Factory( - ConfigSettingsUseCaseImpl( - ServiceLocator.settingsRepository(context), - ServiceLocator.permissionAdapter(context), - ServiceLocator.inputMethodAdapter(context), - ServiceLocator.soundsManager(context), - ServiceLocator.suAdapter(context), - ServiceLocator.packageManagerAdapter(context), - ServiceLocator.shizukuAdapter(context), - ServiceLocator.devicesAdapter(context), - ), - ServiceLocator.resourceProvider(context), - ) - - fun accessibilityServiceController( - service: MyAccessibilityService, - keyEventRelayService: KeyEventRelayServiceWrapper, - ): AccessibilityServiceController = AccessibilityServiceController( - coroutineScope = service.lifecycleScope, - accessibilityService = service, - inputEvents = ServiceLocator.accessibilityServiceAdapter(service).eventsToService, - outputEvents = ServiceLocator.accessibilityServiceAdapter(service).eventReceiver, - detectConstraintsUseCase = UseCases.detectConstraints(service), - performActionsUseCase = UseCases.performActions( - ctx = service, - service = service, - keyEventRelayService = keyEventRelayService, - ), - detectKeyMapsUseCase = UseCases.detectKeyMaps( - ctx = service, - service = service, - keyEventRelayService = keyEventRelayService, - ), - fingerprintGesturesSupportedUseCase = UseCases.fingerprintGesturesSupported(service), - pauseKeyMapsUseCase = UseCases.pauseKeyMaps(service), - devicesAdapter = ServiceLocator.devicesAdapter(service), - suAdapter = ServiceLocator.suAdapter(service), - rerouteKeyEventsUseCase = UseCases.rerouteKeyEvents( - ctx = service, - keyEventRelayService = keyEventRelayService, - ), - inputMethodAdapter = ServiceLocator.inputMethodAdapter(service), - settingsRepository = ServiceLocator.settingsRepository(service), - nodeRepository = ServiceLocator.accessibilityNodeRepository(service), - ) - - fun chooseBluetoothDeviceViewModel(ctx: Context): ChooseBluetoothDeviceViewModel.Factory = ChooseBluetoothDeviceViewModel.Factory( - ChooseBluetoothDeviceUseCaseImpl( - ServiceLocator.devicesAdapter(ctx), - ServiceLocator.permissionAdapter(ctx), - ), - ServiceLocator.resourceProvider(ctx), - ) - - fun logViewModel(ctx: Context): LogViewModel.Factory = LogViewModel.Factory( - DisplayLogUseCaseImpl( - ServiceLocator.logRepository(ctx), - ServiceLocator.resourceProvider(ctx), - ServiceLocator.clipboardAdapter(ctx), - ServiceLocator.fileAdapter(ctx), - ), - ServiceLocator.resourceProvider(ctx), - ) - - fun interactUiElementViewModel( - ctx: Context, - ): InteractUiElementViewModel.Factory = InteractUiElementViewModel.Factory( - (ctx.applicationContext as KeyMapperApp).interactUiElementController, - resourceProvider = ServiceLocator.resourceProvider(ctx), - ) -} From 6d030a7aeaddbfc5755f5665517b3fa17047665e Mon Sep 17 00:00:00 2001 From: sds100 Date: Sat, 17 May 2025 10:12:20 +0200 Subject: [PATCH 09/71] #1711 convert more usecases and viewmodels --- .../keyevent/ChooseKeyCodeViewModel.kt | 25 ++++++++------ .../PinchPickDisplayCoordinateViewModel.kt | 5 ++- .../actions/sound/ChooseSoundFileViewModel.kt | 15 +++------ .../SwipePickDisplayCoordinateViewModel.kt | 8 +++-- .../PickDisplayCoordinateViewModel.kt | 6 ++-- .../uielement/InteractUiElementViewModel.kt | 33 +++++++++++++------ .../backup/RestoreKeyMapsViewModel.kt | 15 +++------ .../keymapper/keymaps/ConfigKeyMapUseCase.kt | 12 ++++--- .../sds100/keymapper/logging/LogViewModel.kt | 17 +++------- 9 files changed, 71 insertions(+), 65 deletions(-) diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt index 9b894b9f0d..b3fe23e561 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -19,8 +19,19 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import dagger.hilt.android.lifecycle.HiltViewModel +import io.github.sds100.keymapper.actions.ActionData +import io.github.sds100.keymapper.util.ui.PopupUi +import io.github.sds100.keymapper.util.ui.PopupViewModel +import io.github.sds100.keymapper.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.util.ui.showPopup +import kotlinx.coroutines.flow.StateFlow +import javax.inject.Inject -class ChooseKeyCodeViewModel : ViewModel() { +@HiltViewModel +class ChooseKeyCodeViewModel : ViewModel(), + PopupViewModel by PopupViewModelImpl() { val searchQuery = MutableStateFlow(null) @@ -38,8 +49,8 @@ class ChooseKeyCodeViewModel : ViewModel() { }.let { emit(it) } } - private val _returnResult = MutableSharedFlow() - val returnResult = _returnResult.asSharedFlow() + private val _returnResult = MutableStateFlow(null) + val returnResult: StateFlow = _returnResult.asStateFlow() init { viewModelScope.launch { @@ -60,13 +71,7 @@ class ChooseKeyCodeViewModel : ViewModel() { fun onListItemClick(id: String) { viewModelScope.launch { - _returnResult.emit(id.toInt()) + _returnResult.emit(ActionData.InputKeyEvent(keyCode = id.toInt(), description = null)) } } - - @Suppress("UNCHECKED_CAST") - class Factory : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = ChooseKeyCodeViewModel() as T - } } diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt index 5cff836fe5..f627a315c4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt @@ -9,6 +9,7 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.util.ui.PopupUi import io.github.sds100.keymapper.util.ui.PopupViewModel @@ -25,9 +26,11 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import javax.inject.Inject import kotlin.math.roundToInt -class PinchPickDisplayCoordinateViewModel( +@HiltViewModel +class PinchPickDisplayCoordinateViewModel @Inject constructor( resourceProvider: ResourceProvider, ) : ViewModel(), ResourceProvider by resourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt index 2cbed90e51..750a251bad 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.actions.sound import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.common.result.onFailure @@ -24,8 +24,10 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch +import javax.inject.Inject -class ChooseSoundFileViewModel( +@HiltViewModel +class ChooseSoundFileViewModel @Inject constructor( resourceProvider: ResourceProvider, private val useCase: ChooseSoundFileUseCase, ) : ViewModel(), @@ -115,13 +117,4 @@ class ChooseSoundFileViewModel( returnResult.update { ActionData.Sound.Ringtone(uri) } } } - - @Suppress("UNCHECKED_CAST") - class Factory( - private val resourceProvider: ResourceProvider, - private val useCase: ChooseSoundFileUseCase, - ) : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = ChooseSoundFileViewModel(resourceProvider, useCase) as T - } } diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt index 6fbfe7cf64..fa77f1054e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt @@ -7,6 +7,7 @@ import android.os.Build import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.util.ui.PopupUi import io.github.sds100.keymapper.util.ui.PopupViewModel @@ -23,6 +24,7 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import javax.inject.Inject import kotlin.math.roundToInt enum class ScreenshotTouchType { @@ -30,7 +32,8 @@ enum class ScreenshotTouchType { END, } -class SwipePickDisplayCoordinateViewModel( +@HiltViewModel +class SwipePickDisplayCoordinateViewModel @Inject constructor( resourceProvider: ResourceProvider, ) : ViewModel(), ResourceProvider by resourceProvider, @@ -278,7 +281,6 @@ class SwipePickDisplayCoordinateViewModel( private val resourceProvider: ResourceProvider, ) : ViewModelProvider.NewInstanceFactory() { - override fun create(modelClass: Class): T = - SwipePickDisplayCoordinateViewModel(resourceProvider) as T + override fun create(modelClass: Class): T = SwipePickDisplayCoordinateViewModel(resourceProvider) as T } } diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateViewModel.kt index 96d314e630..b836943ea9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateViewModel.kt @@ -5,6 +5,7 @@ import android.graphics.Point import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.util.ui.PopupUi import io.github.sds100.keymapper.util.ui.PopupViewModel @@ -21,11 +22,12 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import javax.inject.Inject import kotlin.math.roundToInt - -class PickDisplayCoordinateViewModel( +@HiltViewModel +class PickDisplayCoordinateViewModel @Inject constructor( resourceProvider: ResourceProvider, ) : ViewModel(), ResourceProvider by resourceProvider, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt index 2087fe8451..b3623f3a75 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt @@ -5,6 +5,7 @@ import androidx.compose.material.icons.rounded.Android import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.common.result.Error @@ -19,6 +20,7 @@ import io.github.sds100.keymapper.util.containsQuery import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.common.state.ifIsData import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.util.ui.PopupUi import io.github.sds100.keymapper.util.ui.PopupViewModel import io.github.sds100.keymapper.util.ui.PopupViewModelImpl import io.github.sds100.keymapper.util.ui.ResourceProvider @@ -42,14 +44,16 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch +import javax.inject.Inject import java.util.Locale -class InteractUiElementViewModel( +@HiltViewModel +class InteractUiElementViewModel @Inject constructor( private val useCase: InteractUiElementUseCase, private val resourceProvider: ResourceProvider, ) : ViewModel(), - ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl() { + PopupViewModel by PopupViewModelImpl(), + ResourceProvider by resourceProvider { private val _returnAction: MutableSharedFlow = MutableSharedFlow() val returnAction: SharedFlow = _returnAction.asSharedFlow() @@ -409,13 +413,22 @@ class InteractUiElementViewModel( } } - @Suppress("UNCHECKED_CAST") - class Factory( - private val useCase: InteractUiElementUseCase, - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.NewInstanceFactory() { - override fun create(modelClass: Class): T { - return InteractUiElementViewModel(useCase, resourceProvider) as T + fun onElementSelected(elementId: String) { + viewModelScope.launch { + val dialog = PopupUi.Text( + hint = getString(R.string.hint_ui_element_description), + allowEmpty = false, + text = elementId, + ) + + val description = showPopup("ui_element_description", dialog) ?: return@launch + + _returnAction.emit( + ActionData.InteractUiElement( + elementId = elementId, + description = description, + ) + ) } } } diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsViewModel.kt index 1199fabd5f..3fcbe8bf1b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsViewModel.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.backup import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.common.result.onFailure import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.util.getFullMessage @@ -11,8 +11,10 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch +import javax.inject.Inject -class RestoreKeyMapsViewModel( +@HiltViewModel +class RestoreKeyMapsViewModel @Inject constructor( private val useCase: BackupRestoreMappingsUseCase, resourceProvider: ResourceProvider, ) : ViewModel(), @@ -47,13 +49,4 @@ class RestoreKeyMapsViewModel( } } } - - @Suppress("UNCHECKED_CAST") - class Factory( - private val useCase: BackupRestoreMappingsUseCase, - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = RestoreKeyMapsViewModel(useCase, resourceProvider) as T - } } diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt index 52b52cc0f8..369fe854c8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt @@ -5,6 +5,9 @@ import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.RepeatMode import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.common.state.ifIsData import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.constraints.ConstraintState @@ -28,10 +31,7 @@ import io.github.sds100.keymapper.trigger.TriggerKey import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode import io.github.sds100.keymapper.util.ServiceEvent -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.util.firstBlocking -import io.github.sds100.keymapper.common.state.ifIsData import io.github.sds100.keymapper.util.moveElement import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -50,8 +50,11 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlinx.serialization.json.Json import java.util.LinkedList +import javax.inject.Inject +import javax.inject.Singleton -class ConfigKeyMapUseCaseController( +@Singleton +class ConfigKeyMapUseCaseController @Inject constructor( private val coroutineScope: CoroutineScope, private val keyMapRepository: KeyMapRepository, private val devicesAdapter: DevicesAdapter, @@ -450,6 +453,7 @@ class ConfigKeyMapUseCaseController( key.keyCode, key.device, ) + is FloatingButtonKey -> key.buttonUid } } diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt index a2abeb28fd..835f2e95db 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.logging import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import com.michaelflisar.dragselectrecyclerview.DragSelectionProcessor +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.ifIsData @@ -31,10 +31,10 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import java.util.Date +import javax.inject.Inject - - -class LogViewModel( +@HiltViewModel +class LogViewModel @Inject constructor( private val useCase: DisplayLogUseCase, resourceProvider: ResourceProvider, ) : ViewModel(), @@ -196,15 +196,6 @@ class LogViewModel( isSelected = isSelected, ) } - - class Factory( - private val useCase: DisplayLogUseCase, - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.Factory { - - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class) = LogViewModel(useCase, resourceProvider) as T - } } enum class LogAppBarState { From 6ec24b5ca39b7cfb0f10e925b4f565b6da70f656 Mon Sep 17 00:00:00 2001 From: sds100 Date: Sat, 17 May 2025 13:19:23 +0200 Subject: [PATCH 10/71] #1711 refactor more view models and move files to base module --- .../github/sds100/keymapper/KeyMapperApp.kt | 1 - .../keymapper/actions/CreateActionDelegate.kt | 2 +- .../keyevent/ChooseKeyCodeViewModel.kt | 24 ++--- .../uielement/InteractUiElementScreen.kt | 2 +- .../keymapper/util/ui/NavDestination.kt | 5 +- .../keymapper/util/ui/NavigationViewModel.kt | 14 +-- app/src/main/res/navigation/nav_app.xml | 10 +- .../intents/ConfigIntentViewModelTest.kt | 1 + base/build.gradle.kts | 98 ++++++++++++++++-- .../base/ui}/apps/AppActivityListItem.kt | 3 +- .../base/ui}/apps/AppShortcutListItem.kt | 3 +- .../base/ui}/apps/ChooseActivityFragment.kt | 4 +- .../base/ui}/apps/ChooseActivityViewModel.kt | 3 +- .../base/ui}/apps/ChooseAppFragment.kt | 4 +- .../base/ui}/apps/ChooseAppScreen.kt | 5 +- .../ui}/apps/ChooseAppShortcutFragment.kt | 5 +- .../base/ui}/apps/ChooseAppShortcutResult.kt | 2 +- .../ui}/apps/ChooseAppShortcutViewModel.kt | 8 +- .../base/ui}/apps/ChooseAppViewModel.kt | 6 +- .../ui}/apps/DisplayAppShortcutsUseCase.kt | 4 +- .../base/ui}/apps/DisplayAppsUseCase.kt | 4 +- .../ChooseBluetoothDeviceFragment.kt | 4 +- .../ChooseBluetoothDeviceViewModel.kt | 5 +- .../base/ui}/intents/ConfigIntentFragment.kt | 6 +- .../base/ui}/intents/ConfigIntentResult.kt | 4 +- .../base/ui}/intents/ConfigIntentViewModel.kt | 26 ++++- .../src/main/java}/values-ar/strings.xml | 0 .../src/main/java}/values-cs/strings.xml | 0 .../src/main/java}/values-de/strings.xml | 0 .../src/main/java}/values-es/strings.xml | 0 .../src/main/java}/values-fr/strings.xml | 0 .../src/main/java}/values-hu/strings.xml | 0 .../src/main/java}/values-id/strings.xml | 0 .../src/main/java}/values-ka/strings.xml | 0 .../src/main/java}/values-ko/strings.xml | 0 .../src/main/java}/values-night/colors.xml | 0 .../src/main/java}/values-pl/strings.xml | 0 .../src/main/java}/values-pt/strings.xml | 0 .../src/main/java}/values-ru/strings.xml | 0 .../src/main/java}/values-sk/strings.xml | 0 .../src/main/java}/values-tr/strings.xml | 0 .../src/main/java}/values-uk/strings.xml | 0 .../src/main/java}/values-vi/strings.xml | 0 .../src/main/java}/values-zh-rCN/strings.xml | 0 .../src/main/java}/values-zh-rTW/strings.xml | 0 .../src/main/java}/values/anim.xml | 0 .../src/main/java}/values/colors.xml | 0 .../src/main/java}/values/dimens.xml | 0 .../src/main/java}/values/prefs.xml | 0 .../src/main/java}/values/strings.xml | 0 .../src/main/java}/values/styles.xml | 0 .../src/main/java}/values/themes.xml | 0 .../src/main/res/anim/slide_in_bottom.xml | 0 .../src/main/res/anim/slide_in_left.xml | 0 .../src/main/res/anim/slide_in_right.xml | 0 .../src/main/res/anim/slide_out_bottom.xml | 0 .../src/main/res/anim/slide_out_left.xml | 0 .../src/main/res/anim/slide_out_right.xml | 0 .../res/drawable/dnd_circle_off_outline.xml | 0 .../main/res/drawable/dnd_circle_outline.xml | 0 .../main/res/drawable/ic_baseline_add_24.xml | 0 .../drawable/ic_baseline_announcement_24.xml | 0 .../drawable/ic_baseline_arrow_back_24.xml | 0 .../ic_baseline_arrow_downward_24.xml | 0 .../drawable/ic_baseline_arrow_forward_24.xml | 0 .../ic_baseline_battery_charging_full_24.xml | 0 .../res/drawable/ic_baseline_call_end_24.xml | 0 .../res/drawable/ic_baseline_check_64.xml | 0 .../res/drawable/ic_baseline_clear_all_24.xml | 0 .../drawable/ic_baseline_content_copy_64.xml | 0 .../res/drawable/ic_baseline_cross_64.xml | 0 .../ic_baseline_delete_outline_24.xml | 0 .../drawable/ic_baseline_devices_other_24.xml | 0 .../drawable/ic_baseline_devices_other_64.xml | 0 .../main/res/drawable/ic_baseline_done_24.xml | 0 .../drawable/ic_baseline_drag_handle_24.xml | 0 .../drawable/ic_baseline_error_outline_24.xml | 0 .../drawable/ic_baseline_expand_less_24.xml | 0 .../drawable/ic_baseline_fingerprint_64.xml | 0 .../drawable/ic_baseline_help_outline_24.xml | 0 .../main/res/drawable/ic_baseline_menu_24.xml | 0 .../drawable/ic_baseline_mobile_off_24.xml | 0 .../res/drawable/ic_baseline_refresh_24.xml | 0 .../drawable/ic_baseline_ring_volume_24.xml | 0 .../drawable/ic_baseline_select_all_24.xml | 0 .../res/drawable/ic_baseline_warning_24.xml | 0 .../src/main/res/drawable/ic_battery_70.xml | 0 .../drawable/ic_battery_std_white_64dp.xml | 0 .../src/main/res/drawable/ic_content_copy.xml | 0 .../src/main/res/drawable/ic_content_cut.xml | 0 .../main/res/drawable/ic_content_paste.xml | 0 .../src/main/res/drawable/ic_cursor.xml | 0 .../ic_disable_brightness_auto_24dp.xml | 0 .../src/main/res/drawable/ic_discord.xml | 0 .../main/res/drawable/ic_dock_white_64dp.xml | 0 .../src/main/res/drawable/ic_fdroid.xml | 0 .../src/main/res/drawable/ic_flashlight.xml | 0 .../main/res/drawable/ic_flashlight_off.xml | 0 .../src/main/res/drawable/ic_github.xml | 0 .../src/main/res/drawable/ic_google_play.xml | 0 .../main/res/drawable/ic_home_automation.xml | 0 .../res/drawable/ic_launcher_background.xml | 0 .../res/drawable/ic_launcher_foreground.xml | 0 .../src/main/res/drawable/ic_launcher_web.png | Bin .../src/main/res/drawable/ic_letter_24.xml | 0 .../src/main/res/drawable/ic_nfc_off.xml | 0 .../res/drawable/ic_notification_error.xml | 0 .../drawable/ic_notification_fingerprint.xml | 0 .../res/drawable/ic_notification_keyboard.xml | 0 .../ic_notification_keyboard_hide.xml | 0 .../res/drawable/ic_notification_pause.xml | 0 .../res/drawable/ic_notification_play.xml | 0 .../res/drawable/ic_notification_settings.xml | 0 .../main/res/drawable/ic_outline_account.xml | 0 .../ic_outline_airplanemode_active_24.xml | 0 .../ic_outline_airplanemode_inactive_24.xml | 0 .../res/drawable/ic_outline_android_24.xml | 0 .../res/drawable/ic_outline_assistant_24.xml | 0 .../res/drawable/ic_outline_bluetooth_24.xml | 0 .../ic_outline_bluetooth_connected_24.xml | 0 .../ic_outline_bluetooth_disabled_24.xml | 0 .../ic_outline_brightness_auto_24.xml | 0 .../ic_outline_brightness_high_24.xml | 0 .../drawable/ic_outline_brightness_low_24.xml | 0 .../ic_outline_brightness_medium_24.xml | 0 .../res/drawable/ic_outline_bug_report_24.xml | 0 .../res/drawable/ic_outline_bug_report_64.xml | 0 .../main/res/drawable/ic_outline_call_24.xml | 0 .../res/drawable/ic_outline_call_end_24.xml | 0 .../res/drawable/ic_outline_camera_alt_24.xml | 0 .../ic_outline_check_circle_outline_24.xml | 0 .../main/res/drawable/ic_outline_clear_24.xml | 0 .../drawable/ic_outline_devices_other_64.xml | 0 .../ic_outline_dnd_circle_outline_64.xml | 0 .../main/res/drawable/ic_outline_edit_24.xml | 0 .../drawable/ic_outline_error_outline_64.xml | 0 .../drawable/ic_outline_expand_more_24.xml | 0 .../drawable/ic_outline_fast_forward_24.xml | 0 .../drawable/ic_outline_fast_rewind_24.xml | 0 .../res/drawable/ic_outline_feedback_24.xml | 0 .../res/drawable/ic_outline_feedback_64.xml | 0 .../res/drawable/ic_outline_file_copy_24.xml | 0 .../res/drawable/ic_outline_fullscreen_24.xml | 0 .../drawable/ic_outline_help_center_64.xml | 0 .../main/res/drawable/ic_outline_home_24.xml | 0 .../main/res/drawable/ic_outline_info_24.xml | 0 .../res/drawable/ic_outline_keyboard_24.xml | 0 .../drawable/ic_outline_keyboard_hide_24.xml | 0 .../main/res/drawable/ic_outline_link_24.xml | 0 .../main/res/drawable/ic_outline_lock_24.xml | 0 .../res/drawable/ic_outline_lock_open_24.xml | 0 .../res/drawable/ic_outline_more_vert_24.xml | 0 .../main/res/drawable/ic_outline_nfc_24.xml | 0 .../drawable/ic_outline_open_in_new_24.xml | 0 .../main/res/drawable/ic_outline_pause_24.xml | 0 .../res/drawable/ic_outline_pinch_app_24.xml | 0 .../res/drawable/ic_outline_play_arrow_24.xml | 0 .../ic_outline_power_settings_new_24.xml | 0 .../drawable/ic_outline_privacy_tip_24.xml | 0 .../res/drawable/ic_outline_refresh_64.xml | 0 .../main/res/drawable/ic_outline_save_24.xml | 0 .../ic_outline_screen_lock_rotation_24.xml | 0 .../ic_outline_screen_rotation_24.xml | 0 .../res/drawable/ic_outline_search_24.xml | 0 .../res/drawable/ic_outline_settings_24.xml | 0 .../ic_outline_settings_applications_24.xml | 0 .../main/res/drawable/ic_outline_share_64.xml | 0 .../res/drawable/ic_outline_short_text_24.xml | 0 .../ic_outline_signal_cellular_4_bar_24.xml | 0 .../ic_outline_signal_cellular_off_24.xml | 0 ..._outline_signal_wifi_statusbar_null_24.xml | 0 .../res/drawable/ic_outline_skip_next_24.xml | 0 .../drawable/ic_outline_skip_previous_24.xml | 0 .../drawable/ic_outline_star_border_24.xml | 0 .../res/drawable/ic_outline_star_rate_24.xml | 0 .../ic_outline_stay_current_landscape_24.xml | 0 .../ic_outline_stay_current_portrait_24.xml | 0 .../drawable/ic_outline_stop_circle_24.xml | 0 .../res/drawable/ic_outline_swipe_app_24.xml | 0 .../res/drawable/ic_outline_touch_app_24.xml | 0 .../res/drawable/ic_outline_translate_24.xml | 0 .../res/drawable/ic_outline_vibration_24.xml | 0 .../drawable/ic_outline_volume_down_24.xml | 0 .../drawable/ic_outline_volume_mute_24.xml | 0 .../res/drawable/ic_outline_volume_up_24.xml | 0 .../main/res/drawable/ic_outline_wifi_24.xml | 0 .../res/drawable/ic_outline_wifi_off_24.xml | 0 .../drawable/ic_permission_input_method.xml | 0 .../main/res/drawable/ic_play_pause_24dp.xml | 0 .../src/main/res/drawable/ic_q_24.xml | 0 .../res/drawable/ic_script_text_outline.xml | 0 .../res/drawable/ic_search_black_24dp.xml | 0 .../src/main/res/drawable/ic_sort_24.xml | 0 .../src/main/res/drawable/ic_tile_error.xml | 0 .../main/res/drawable/ic_tile_keyboard.xml | 0 .../src/main/res/drawable/ic_tile_pause.xml | 0 .../src/main/res/drawable/ic_tile_resume.xml | 0 .../res/drawable/outline_bubble_chart_24.xml | 0 .../main/res/drawable/profile_pic_bydario.png | Bin .../main/res/drawable/profile_pic_jambl3r.jpg | Bin .../main/res/drawable/profile_pic_kekero.png | Bin .../main/res/drawable/profile_pic_sds100.jpeg | Bin .../res/drawable/round_folder_open_24.xml | 0 .../main/res/layout/fragment_choose_app.xml | 2 +- .../res/layout/fragment_config_intent.xml | 2 +- .../layout/list_item_intent_extra_bool.xml | 0 .../layout/list_item_intent_extra_generic.xml | 0 system/build.gradle.kts | 7 +- .../keymapper/system/SystemHiltModule.kt | 1 - .../keymapper/system/apps/ActivityInfo.kt | 0 .../apps/AndroidPackageManagerAdapter.kt | 7 +- .../system/intents/IntentAdapterImpl.kt | 13 --- 212 files changed, 188 insertions(+), 97 deletions(-) rename {app/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/apps/AppActivityListItem.kt (88%) rename {system/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/apps/AppShortcutListItem.kt (85%) rename {app/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/apps/ChooseActivityFragment.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/apps/ChooseActivityViewModel.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/apps/ChooseAppFragment.kt (98%) rename {system/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/apps/ChooseAppScreen.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/apps/ChooseAppShortcutFragment.kt (97%) rename {system/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/apps/ChooseAppShortcutResult.kt (78%) rename {app/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/apps/ChooseAppShortcutViewModel.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/apps/ChooseAppViewModel.kt (97%) rename {system/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/apps/DisplayAppShortcutsUseCase.kt (84%) rename {system/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/apps/DisplayAppsUseCase.kt (88%) rename {app/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/bluetooth/ChooseBluetoothDeviceFragment.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/bluetooth/ChooseBluetoothDeviceViewModel.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/intents/ConfigIntentFragment.kt (96%) rename {system/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/intents/ConfigIntentResult.kt (54%) rename {app/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base/ui}/intents/ConfigIntentViewModel.kt (92%) rename {app/src/main/res => base/src/main/java}/values-ar/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-cs/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-de/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-es/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-fr/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-hu/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-id/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-ka/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-ko/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-night/colors.xml (100%) rename {app/src/main/res => base/src/main/java}/values-pl/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-pt/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-ru/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-sk/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-tr/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-uk/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-vi/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-zh-rCN/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values-zh-rTW/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values/anim.xml (100%) rename {app/src/main/res => base/src/main/java}/values/colors.xml (100%) rename {app/src/main/res => base/src/main/java}/values/dimens.xml (100%) rename {app/src/main/res => base/src/main/java}/values/prefs.xml (100%) rename {app/src/main/res => base/src/main/java}/values/strings.xml (100%) rename {app/src/main/res => base/src/main/java}/values/styles.xml (100%) rename {app/src/main/res => base/src/main/java}/values/themes.xml (100%) rename {app => base}/src/main/res/anim/slide_in_bottom.xml (100%) rename {app => base}/src/main/res/anim/slide_in_left.xml (100%) rename {app => base}/src/main/res/anim/slide_in_right.xml (100%) rename {app => base}/src/main/res/anim/slide_out_bottom.xml (100%) rename {app => base}/src/main/res/anim/slide_out_left.xml (100%) rename {app => base}/src/main/res/anim/slide_out_right.xml (100%) rename {app => base}/src/main/res/drawable/dnd_circle_off_outline.xml (100%) rename {app => base}/src/main/res/drawable/dnd_circle_outline.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_add_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_announcement_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_arrow_back_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_arrow_downward_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_arrow_forward_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_battery_charging_full_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_call_end_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_check_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_clear_all_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_content_copy_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_cross_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_delete_outline_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_devices_other_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_devices_other_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_done_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_drag_handle_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_error_outline_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_expand_less_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_fingerprint_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_help_outline_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_menu_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_mobile_off_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_refresh_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_ring_volume_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_select_all_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_baseline_warning_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_battery_70.xml (100%) rename {app => base}/src/main/res/drawable/ic_battery_std_white_64dp.xml (100%) rename {app => base}/src/main/res/drawable/ic_content_copy.xml (100%) rename {app => base}/src/main/res/drawable/ic_content_cut.xml (100%) rename {app => base}/src/main/res/drawable/ic_content_paste.xml (100%) rename {app => base}/src/main/res/drawable/ic_cursor.xml (100%) rename {app => base}/src/main/res/drawable/ic_disable_brightness_auto_24dp.xml (100%) rename {app => base}/src/main/res/drawable/ic_discord.xml (100%) rename {app => base}/src/main/res/drawable/ic_dock_white_64dp.xml (100%) rename {app => base}/src/main/res/drawable/ic_fdroid.xml (100%) rename {app => base}/src/main/res/drawable/ic_flashlight.xml (100%) rename {app => base}/src/main/res/drawable/ic_flashlight_off.xml (100%) rename {app => base}/src/main/res/drawable/ic_github.xml (100%) rename {app => base}/src/main/res/drawable/ic_google_play.xml (100%) rename {app => base}/src/main/res/drawable/ic_home_automation.xml (100%) rename {app => base}/src/main/res/drawable/ic_launcher_background.xml (100%) rename {app => base}/src/main/res/drawable/ic_launcher_foreground.xml (100%) rename {app => base}/src/main/res/drawable/ic_launcher_web.png (100%) rename {app => base}/src/main/res/drawable/ic_letter_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_nfc_off.xml (100%) rename {app => base}/src/main/res/drawable/ic_notification_error.xml (100%) rename {app => base}/src/main/res/drawable/ic_notification_fingerprint.xml (100%) rename {app => base}/src/main/res/drawable/ic_notification_keyboard.xml (100%) rename {app => base}/src/main/res/drawable/ic_notification_keyboard_hide.xml (100%) rename {app => base}/src/main/res/drawable/ic_notification_pause.xml (100%) rename {app => base}/src/main/res/drawable/ic_notification_play.xml (100%) rename {app => base}/src/main/res/drawable/ic_notification_settings.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_account.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_airplanemode_active_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_airplanemode_inactive_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_android_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_assistant_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_bluetooth_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_bluetooth_connected_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_bluetooth_disabled_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_brightness_auto_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_brightness_high_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_brightness_low_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_brightness_medium_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_bug_report_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_bug_report_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_call_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_call_end_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_camera_alt_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_check_circle_outline_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_clear_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_devices_other_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_dnd_circle_outline_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_edit_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_error_outline_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_expand_more_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_fast_forward_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_fast_rewind_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_feedback_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_feedback_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_file_copy_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_fullscreen_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_help_center_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_home_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_info_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_keyboard_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_keyboard_hide_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_link_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_lock_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_lock_open_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_more_vert_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_nfc_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_open_in_new_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_pause_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_pinch_app_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_play_arrow_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_power_settings_new_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_privacy_tip_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_refresh_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_save_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_screen_lock_rotation_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_screen_rotation_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_search_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_settings_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_settings_applications_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_share_64.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_short_text_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_signal_cellular_4_bar_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_signal_cellular_off_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_signal_wifi_statusbar_null_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_skip_next_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_skip_previous_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_star_border_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_star_rate_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_stay_current_landscape_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_stay_current_portrait_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_stop_circle_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_swipe_app_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_touch_app_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_translate_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_vibration_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_volume_down_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_volume_mute_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_volume_up_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_wifi_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_outline_wifi_off_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_permission_input_method.xml (100%) rename {app => base}/src/main/res/drawable/ic_play_pause_24dp.xml (100%) rename {app => base}/src/main/res/drawable/ic_q_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_script_text_outline.xml (100%) rename {app => base}/src/main/res/drawable/ic_search_black_24dp.xml (100%) rename {app => base}/src/main/res/drawable/ic_sort_24.xml (100%) rename {app => base}/src/main/res/drawable/ic_tile_error.xml (100%) rename {app => base}/src/main/res/drawable/ic_tile_keyboard.xml (100%) rename {app => base}/src/main/res/drawable/ic_tile_pause.xml (100%) rename {app => base}/src/main/res/drawable/ic_tile_resume.xml (100%) rename {app => base}/src/main/res/drawable/outline_bubble_chart_24.xml (100%) rename {app => base}/src/main/res/drawable/profile_pic_bydario.png (100%) rename {app => base}/src/main/res/drawable/profile_pic_jambl3r.jpg (100%) rename {app => base}/src/main/res/drawable/profile_pic_kekero.png (100%) rename {app => base}/src/main/res/drawable/profile_pic_sds100.jpeg (100%) rename {app => base}/src/main/res/drawable/round_folder_open_24.xml (100%) rename {app => base}/src/main/res/layout/fragment_choose_app.xml (98%) rename {app => base}/src/main/res/layout/fragment_config_intent.xml (99%) rename {app => base}/src/main/res/layout/list_item_intent_extra_bool.xml (100%) rename {app => base}/src/main/res/layout/list_item_intent_extra_generic.xml (100%) rename {app => system}/src/main/java/io/github/sds100/keymapper/system/apps/ActivityInfo.kt (100%) delete mode 100644 system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapterImpl.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt b/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt index e52c53b63b..ee0e876877 100644 --- a/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt +++ b/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt @@ -34,7 +34,6 @@ import io.github.sds100.keymapper.system.files.AndroidFileAdapter import io.github.sds100.keymapper.system.inputmethod.AndroidInputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.AutoSwitchImeController import io.github.sds100.keymapper.system.inputmethod.ShowHideInputMethodUseCaseImpl -import io.github.sds100.keymapper.system.intents.IntentAdapterImpl import io.github.sds100.keymapper.system.leanback.LeanbackAdapterImpl import io.github.sds100.keymapper.system.lock.AndroidLockScreenAdapter import io.github.sds100.keymapper.system.media.AndroidMediaAdapter diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionDelegate.kt b/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionDelegate.kt index edb1e9d384..e9065c1c02 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionDelegate.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionDelegate.kt @@ -12,7 +12,7 @@ import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.camera.CameraLensUtils import io.github.sds100.keymapper.system.display.Orientation import io.github.sds100.keymapper.system.display.OrientationUtils -import io.github.sds100.keymapper.system.intents.ConfigIntentResult +import io.github.sds100.keymapper.base.ui.intents.ConfigIntentResult import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.system.volume.DndMode import io.github.sds100.keymapper.system.volume.DndModeUtils diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt index b3fe23e561..60d0f85356 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -2,35 +2,29 @@ package io.github.sds100.keymapper.actions.keyevent import android.view.KeyEvent import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope -import io.github.sds100.keymapper.system.inputevents.InputEventUtils +import dagger.hilt.android.lifecycle.HiltViewModel +import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.util.filterByQuery import io.github.sds100.keymapper.util.ui.DefaultSimpleListItem +import io.github.sds100.keymapper.util.ui.PopupViewModel +import io.github.sds100.keymapper.util.ui.PopupViewModelImpl import io.github.sds100.keymapper.util.ui.SimpleListItemOld import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.showPopup -import kotlinx.coroutines.flow.StateFlow -import javax.inject.Inject @HiltViewModel -class ChooseKeyCodeViewModel : ViewModel(), +class ChooseKeyCodeViewModel : + ViewModel(), PopupViewModel by PopupViewModelImpl() { val searchQuery = MutableStateFlow(null) @@ -71,7 +65,7 @@ class ChooseKeyCodeViewModel : ViewModel(), fun onListItemClick(id: String) { viewModelScope.launch { - _returnResult.emit(ActionData.InputKeyEvent(keyCode = id.toInt(), description = null)) + _returnResult.emit(ActionData.InputKeyEvent(keyCode = id.toInt())) } } } diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementScreen.kt b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementScreen.kt index 23d9992f46..896be9371d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementScreen.kt @@ -72,7 +72,7 @@ import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette -import io.github.sds100.keymapper.system.apps.ChooseAppScreen +import io.github.sds100.keymapper.base.ui.apps.ChooseAppScreen import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.drawable import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavDestination.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavDestination.kt index 40a965e40f..24180a1fa5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavDestination.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavDestination.kt @@ -6,10 +6,9 @@ import io.github.sds100.keymapper.actions.swipescreen.SwipePickCoordinateResult import io.github.sds100.keymapper.actions.tapscreen.PickCoordinateResult import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.system.apps.ActivityInfo -import io.github.sds100.keymapper.system.apps.ChooseAppShortcutResult +import io.github.sds100.keymapper.base.ui.apps.ChooseAppShortcutResult import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.system.intents.ConfigIntentResult - +import io.github.sds100.keymapper.base.ui.intents.ConfigIntentResult sealed class NavDestination { abstract val id: String diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationViewModel.kt index 4d4c790e9d..cabd333342 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationViewModel.kt @@ -23,14 +23,14 @@ import io.github.sds100.keymapper.actions.uielement.InteractUiElementFragment import io.github.sds100.keymapper.constraints.ChooseConstraintFragment import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.system.apps.ActivityInfo -import io.github.sds100.keymapper.system.apps.ChooseActivityFragment -import io.github.sds100.keymapper.system.apps.ChooseAppFragment -import io.github.sds100.keymapper.system.apps.ChooseAppShortcutFragment -import io.github.sds100.keymapper.system.apps.ChooseAppShortcutResult +import io.github.sds100.keymapper.base.ui.apps.ChooseActivityFragment +import io.github.sds100.keymapper.base.ui.apps.ChooseAppFragment +import io.github.sds100.keymapper.base.ui.apps.ChooseAppShortcutFragment +import io.github.sds100.keymapper.base.ui.apps.ChooseAppShortcutResult import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.system.bluetooth.ChooseBluetoothDeviceFragment -import io.github.sds100.keymapper.system.intents.ConfigIntentFragment -import io.github.sds100.keymapper.system.intents.ConfigIntentResult +import io.github.sds100.keymapper.base.ui.bluetooth.ChooseBluetoothDeviceFragment +import io.github.sds100.keymapper.base.ui.intents.ConfigIntentFragment +import io.github.sds100.keymapper.base.ui.intents.ConfigIntentResult import io.github.sds100.keymapper.ui.utils.getJsonSerializable import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow diff --git a/app/src/main/res/navigation/nav_app.xml b/app/src/main/res/navigation/nav_app.xml index 61eb7309de..84f7697bca 100644 --- a/app/src/main/res/navigation/nav_app.xml +++ b/app/src/main/res/navigation/nav_app.xml @@ -116,7 +116,7 @@ + type="io.github.sds100.keymapper.base.ui.apps.ChooseAppViewModel" /> + type="io.github.sds100.keymapper.base.ui.intents.ConfigIntentViewModel" /> Date: Sat, 17 May 2025 14:27:35 +0200 Subject: [PATCH 11/71] #1711 set minifyenabled in more modules --- api/build.gradle.kts | 2 +- common/build.gradle.kts | 2 +- system/build.gradle.kts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 63decb9909..700dea3e38 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -15,7 +15,7 @@ android { buildTypes { release { - isMinifyEnabled = false + isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 65a65b2f9c..2d455c0252 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -15,7 +15,7 @@ android { buildTypes { release { - isMinifyEnabled = false + isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", diff --git a/system/build.gradle.kts b/system/build.gradle.kts index 9bca91265e..762e0497b4 100644 --- a/system/build.gradle.kts +++ b/system/build.gradle.kts @@ -19,7 +19,7 @@ android { buildTypes { release { - isMinifyEnabled = false + isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", From f6938233a7a6a104b4ae65d0e2319f305d4db433 Mon Sep 17 00:00:00 2001 From: sds100 Date: Sat, 17 May 2025 14:34:15 +0200 Subject: [PATCH 12/71] #1711 move files to base module --- .../keymapper/constraints/ConstraintMode.kt | 6 ------ .../github/sds100/keymapper/util/ui/ListItem.kt | 5 ----- .../util/ui/compose/icons/KeyMapperIcons.kt | 3 --- app/src/main/res/menu/menu_config_mapping.xml | 16 ---------------- .../keymapper/AppDatabaseMigrationTest.kt | 0 .../io/github/sds100/keymapper/JsonTestUtils.kt | 0 {app => base}/src/ci/ic_launcher-web.png | Bin .../ci/res/drawable/ic_launcher_foreground.xml | 0 .../ci/res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../res/mipmap-anydpi-v26/ic_launcher_round.xml | 0 .../src/ci/res/mipmap-hdpi/ic_launcher.png | Bin .../ci/res/mipmap-hdpi/ic_launcher_round.png | Bin .../src/ci/res/mipmap-mdpi/ic_launcher.png | Bin .../ci/res/mipmap-mdpi/ic_launcher_round.png | Bin .../src/ci/res/mipmap-xhdpi/ic_launcher.png | Bin .../ci/res/mipmap-xhdpi/ic_launcher_round.png | Bin .../src/ci/res/mipmap-xxhdpi/ic_launcher.png | Bin .../ci/res/mipmap-xxhdpi/ic_launcher_round.png | Bin .../src/ci/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../ci/res/mipmap-xxxhdpi/ic_launcher_round.png | Bin {app => base}/src/ci/res/values/strings.xml | 0 {app => base}/src/debug/ic_launcher-web.png | Bin .../res/drawable/ic_launcher_foreground.xml | 0 .../debug/res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../res/mipmap-anydpi-v26/ic_launcher_round.xml | 0 .../src/debug/res/mipmap-hdpi/ic_launcher.png | Bin .../debug/res/mipmap-hdpi/ic_launcher_round.png | Bin .../src/debug/res/mipmap-mdpi/ic_launcher.png | Bin .../debug/res/mipmap-mdpi/ic_launcher_round.png | Bin .../src/debug/res/mipmap-xhdpi/ic_launcher.png | Bin .../res/mipmap-xhdpi/ic_launcher_round.png | Bin .../src/debug/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin .../debug/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin {app => base}/src/debug/res/values/strings.xml | 0 .../io/github/sds100/keymapper/MainActivity.kt | 0 .../keymapper/floating/FloatingLayoutsScreen.kt | 0 .../floating/ListFloatingLayoutsUseCase.kt | 0 .../floating/ListFloatingLayoutsViewModel.kt | 0 .../keymapper/home/HomeFloatingLayoutsScreen.kt | 0 .../keymaps/detection/KeyMapController.kt | 0 .../purchasing/PurchasingManagerImpl.kt | 0 .../AccessibilityServiceController.kt | 0 .../trigger/AdvancedTriggersBottomSheet.kt | 0 .../trigger/AssistantTriggerSetupBottomSheet.kt | 0 .../keymapper/trigger/ConfigTriggerViewModel.kt | 0 .../android/content/pm/IPackageManager.aidl | 0 .../android/hardware/input/IInputManager.aidl | 0 {app => base}/src/main/assets/whats-new.txt | 0 .../keymapper/base}/about/AboutFragment.kt | 2 +- .../sds100/keymapper/base}/actions/Action.kt | 2 +- .../keymapper/base}/actions/ActionCategory.kt | 2 +- .../keymapper/base}/actions/ActionData.kt | 2 +- .../base}/actions/ActionDataEntityMapper.kt | 2 +- .../base}/actions/ActionErrorSnapshot.kt | 2 +- .../sds100/keymapper/base}/actions/ActionId.kt | 2 +- .../keymapper/base}/actions/ActionListItem.kt | 2 +- .../base}/actions/ActionOptionsBottomSheet.kt | 2 +- .../keymapper/base}/actions/ActionUiHelper.kt | 2 +- .../keymapper/base}/actions/ActionUtils.kt | 2 +- .../keymapper/base}/actions/ActionsScreen.kt | 2 +- .../base}/actions/ChooseActionFragment.kt | 2 +- .../base}/actions/ChooseActionScreen.kt | 2 +- .../base}/actions/ChooseActionViewModel.kt | 2 +- .../base}/actions/ConfigActionsViewModel.kt | 2 +- .../base}/actions/CreateActionDelegate.kt | 2 +- .../base}/actions/CreateActionUseCase.kt | 2 +- .../base}/actions/DisplayActionUseCase.kt | 2 +- .../actions/FlashlightActionBottomSheet.kt | 2 +- .../base}/actions/GetActionErrorUseCase.kt | 2 +- .../keymapper/base}/actions/HoldDownMode.kt | 2 +- .../base}/actions/HttpRequestBottomSheet.kt | 2 +- .../base}/actions/IsActionSupportedUseCase.kt | 2 +- .../base}/actions/PerformActionsUseCase.kt | 2 +- .../keymapper/base}/actions/RepeatMode.kt | 2 +- .../base}/actions/TestActionUseCase.kt | 2 +- .../actions/keyevent/ChooseKeyCodeFragment.kt | 9 +++++---- .../actions/keyevent/ChooseKeyCodeViewModel.kt | 2 +- .../keyevent/ConfigKeyEventActionFragment.kt | 2 +- .../keyevent/ConfigKeyEventActionViewModel.kt | 2 +- .../actions/keyevent/ConfigKeyEventUseCase.kt | 2 +- .../pinchscreen/PinchPickCoordinateResult.kt | 2 +- .../PinchPickDisplayCoordinateFragment.kt | 2 +- .../PinchPickDisplayCoordinateViewModel.kt | 2 +- .../actions/sound/ChooseSoundFileFragment.kt | 2 +- .../actions/sound/ChooseSoundFileUseCase.kt | 2 +- .../actions/sound/ChooseSoundFileViewModel.kt | 2 +- .../base}/actions/sound/SoundFileInfo.kt | 2 +- .../base}/actions/sound/SoundsManager.kt | 2 +- .../swipescreen/SwipePickCoordinateResult.kt | 2 +- .../SwipePickDisplayCoordinateFragment.kt | 2 +- .../SwipePickDisplayCoordinateViewModel.kt | 2 +- .../tapscreen/PickCoordinateImageView.kt | 2 +- .../actions/tapscreen/PickCoordinateResult.kt | 2 +- .../tapscreen/PickDisplayCoordinateFragment.kt | 2 +- .../tapscreen/PickDisplayCoordinateViewModel.kt | 2 +- .../actions/uielement/ChooseUiElementScreen.kt | 2 +- .../uielement/InteractUiElementFragment.kt | 2 +- .../uielement/InteractUiElementScreen.kt | 2 +- .../uielement/InteractUiElementUseCase.kt | 2 +- .../uielement/InteractUiElementViewModel.kt | 2 +- .../actions/uielement/NodeInteractionType.kt | 2 +- .../base}/api/LaunchKeyMapShortcutActivity.kt | 2 +- .../base}/api/PauseMappingsBroadcastReceiver.kt | 2 +- .../api/TriggerKeyMapsBroadcastReceiver.kt | 2 +- .../keymapper/base}/backup/BackupContent.kt | 2 +- .../keymapper/base}/backup/BackupManager.kt | 2 +- .../backup/BackupRestoreMappingsUseCase.kt | 2 +- .../keymapper/base}/backup/BackupUtils.kt | 2 +- .../keymapper/base}/backup/ImportExportState.kt | 2 +- .../base}/backup/RestoreKeyMapsActivity.kt | 2 +- .../base}/backup/RestoreKeyMapsViewModel.kt | 2 +- .../keymapper/base}/backup/RestoreType.kt | 2 +- .../keymapper/base}/compose/ComposeColors.kt | 2 +- .../base}/compose/ComposeCustomColors.kt | 2 +- .../keymapper/base}/compose/ComposeTheme.kt | 2 +- .../constraints/ChooseConstraintFragment.kt | 2 +- .../base}/constraints/ChooseConstraintScreen.kt | 2 +- .../constraints/ChooseConstraintViewModel.kt | 2 +- .../constraints/ConfigConstraintsViewModel.kt | 2 +- .../keymapper/base}/constraints/Constraint.kt | 2 +- .../base}/constraints/ConstraintDependency.kt | 2 +- .../constraints/ConstraintErrorSnapshot.kt | 2 +- .../keymapper/base}/constraints/ConstraintId.kt | 2 +- .../base}/constraints/ConstraintListItem.kt | 2 +- .../constraints/ConstraintListItemModel.kt | 2 +- .../base/constraints/ConstraintMode.kt | 6 ++++++ .../base}/constraints/ConstraintSnapshot.kt | 2 +- .../base}/constraints/ConstraintState.kt | 2 +- .../base}/constraints/ConstraintUiHelper.kt | 2 +- .../base}/constraints/ConstraintUtils.kt | 2 +- .../base}/constraints/ConstraintsScreen.kt | 2 +- .../constraints/CreateConstraintUseCase.kt | 2 +- .../constraints/DetectConstraintsUseCase.kt | 2 +- .../constraints/DisplayConstraintUseCase.kt | 2 +- .../constraints/GetConstraintErrorUseCase.kt | 2 +- .../constraints/TimeConstraintBottomSheet.kt | 2 +- .../github/sds100/keymapper/base}/data/Keys.kt | 2 +- .../keymapper/base}/data/PreferenceDefaults.kt | 2 +- .../keymapper/base}/data/db/AppDatabase.kt | 2 +- .../base}/data/db/dao/AccessibilityNodeDao.kt | 2 +- .../base}/data/db/dao/FingerprintMapDao.kt | 2 +- .../base}/data/db/dao/FloatingButtonDao.kt | 2 +- .../base}/data/db/dao/FloatingLayoutDao.kt | 2 +- .../keymapper/base}/data/db/dao/GroupDao.kt | 2 +- .../keymapper/base}/data/db/dao/KeyMapDao.kt | 2 +- .../keymapper/base}/data/db/dao/LogEntryDao.kt | 2 +- .../db/typeconverter/ActionListTypeConverter.kt | 2 +- .../db/typeconverter/ConstantTypeConverters.kt | 2 +- .../ConstraintListTypeConverter.kt | 2 +- .../db/typeconverter/ExtraListTypeConverter.kt | 2 +- .../NodeInteractionTypeSetTypeConverter.kt | 2 +- .../db/typeconverter/TriggerTypeConverter.kt | 2 +- .../data/entities/AccessibilityNodeEntity.kt | 2 +- .../base}/data/entities/ActionEntity.kt | 2 +- .../data/entities/AssistantTriggerKeyEntity.kt | 2 +- .../base}/data/entities/ConstraintEntity.kt | 2 +- .../base}/data/entities/EntityExtra.kt | 2 +- .../base}/data/entities/FingerprintMapEntity.kt | 2 +- .../entities/FingerprintTriggerKeyEntity.kt | 2 +- .../base}/data/entities/FloatingButtonEntity.kt | 2 +- .../entities/FloatingButtonEntityWithLayout.kt | 2 +- .../data/entities/FloatingButtonKeyEntity.kt | 2 +- .../base}/data/entities/FloatingLayoutEntity.kt | 2 +- .../entities/FloatingLayoutEntityWithButtons.kt | 2 +- .../base}/data/entities/GroupEntity.kt | 2 +- .../data/entities/GroupEntityWithChildren.kt | 2 +- .../data/entities/KeyCodeTriggerKeyEntity.kt | 2 +- .../data/entities/KeyMapEntitiesWithGroup.kt | 2 +- .../base}/data/entities/KeyMapEntity.kt | 2 +- .../base}/data/entities/LogEntryEntity.kt | 2 +- .../base}/data/entities/TriggerEntity.kt | 2 +- .../base}/data/entities/TriggerKeyEntity.kt | 2 +- .../base}/data/migration/AutoMigration14To15.kt | 2 +- .../base}/data/migration/AutoMigration15To16.kt | 2 +- .../base}/data/migration/AutoMigration16To17.kt | 2 +- .../base}/data/migration/AutoMigration18To19.kt | 2 +- .../base}/data/migration/AutoMigration19To20.kt | 2 +- .../base}/data/migration/JsonMigration.kt | 2 +- .../base}/data/migration/Migration10To11.kt | 2 +- .../base}/data/migration/Migration11To12.kt | 2 +- .../base}/data/migration/Migration13To14.kt | 2 +- .../base}/data/migration/Migration1To2.kt | 2 +- .../base}/data/migration/Migration2To3.kt | 2 +- .../base}/data/migration/Migration3To4.kt | 2 +- .../base}/data/migration/Migration4To5.kt | 2 +- .../base}/data/migration/Migration5To6.kt | 2 +- .../base}/data/migration/Migration6To7.kt | 2 +- .../base}/data/migration/Migration8To9.kt | 2 +- .../base}/data/migration/Migration9To10.kt | 2 +- .../base}/data/migration/MigrationUtils.kt | 2 +- .../FingerprintMapMigration0To1.kt | 2 +- .../FingerprintMapMigration1To2.kt | 2 +- .../FingerprintToKeyMapMigration.kt | 2 +- .../repositories/AccessibilityNodeRepository.kt | 2 +- .../repositories/FloatingButtonRepository.kt | 2 +- .../repositories/FloatingLayoutRepository.kt | 2 +- .../base}/data/repositories/GroupRepository.kt | 2 +- .../data/repositories/PreferenceRepository.kt | 2 +- .../base}/data/repositories/RepositoryUtils.kt | 2 +- .../data/repositories/RoomKeyMapRepository.kt | 2 +- .../data/repositories/RoomLogRepository.kt | 2 +- .../SettingsPreferenceRepository.kt | 2 +- .../base}/floating/FloatingButtonAppearance.kt | 2 +- .../base}/floating/FloatingButtonData.kt | 2 +- .../base}/floating/FloatingLayoutData.kt | 2 +- .../keymapper/base}/groups/DeleteGroupDialog.kt | 2 +- .../sds100/keymapper/base}/groups/Group.kt | 2 +- .../base}/groups/GroupBreadcrumbRow.kt | 2 +- .../base}/groups/GroupConstraintRow.kt | 2 +- .../keymapper/base}/groups/GroupFamily.kt | 2 +- .../base}/groups/GroupListItemModel.kt | 2 +- .../sds100/keymapper/base}/groups/GroupRow.kt | 2 +- .../keymapper/base}/home/DeleteKeyMapsDialog.kt | 2 +- .../keymapper/base}/home/HomeDestination.kt | 2 +- .../sds100/keymapper/base}/home/HomeFragment.kt | 2 +- .../base}/home/HomeKeyMapListScreen.kt | 2 +- .../sds100/keymapper/base}/home/HomeScreen.kt | 2 +- .../sds100/keymapper/base}/home/HomeTab.kt | 2 +- .../keymapper/base}/home/HomeViewModel.kt | 2 +- .../keymapper/base}/home/HomeWarningList.kt | 2 +- .../sds100/keymapper/base}/home/ImportDialog.kt | 2 +- .../keymapper/base}/home/KeyMapListAppBar.kt | 2 +- .../base}/home/SelectionBottomSheet.kt | 2 +- .../base}/home/ShowHomeScreenAlertsUseCase.kt | 2 +- .../sds100/keymapper/base}/keymaps/ClickType.kt | 2 +- .../base}/keymaps/ConfigKeyMapFragment.kt | 2 +- .../keymaps/ConfigKeyMapOptionsViewModel.kt | 2 +- .../base}/keymaps/ConfigKeyMapScreen.kt | 2 +- .../base}/keymaps/ConfigKeyMapUseCase.kt | 2 +- .../base}/keymaps/ConfigKeyMapViewModel.kt | 2 +- .../keymaps/CreateKeyMapShortcutActivity.kt | 2 +- .../base}/keymaps/CreateKeyMapShortcutScreen.kt | 2 +- .../keymaps/CreateKeyMapShortcutUseCase.kt | 2 +- .../keymaps/CreateKeyMapShortcutViewModel.kt | 2 +- .../base}/keymaps/DisplayKeyMapUseCase.kt | 2 +- .../base}/keymaps/FingerprintGestureType.kt | 2 +- .../FingerprintGesturesSupportedUseCase.kt | 2 +- .../keymaps/GetDefaultKeyMapOptionsUseCase.kt | 2 +- .../sds100/keymapper/base}/keymaps/KeyMap.kt | 2 +- .../base}/keymaps/KeyMapAppBarState.kt | 2 +- .../keymapper/base}/keymaps/KeyMapGroup.kt | 2 +- .../base}/keymaps/KeyMapListItemCreator.kt | 2 +- .../keymapper/base}/keymaps/KeyMapListScreen.kt | 2 +- .../keymapper/base}/keymaps/KeyMapListState.kt | 2 +- .../base}/keymaps/KeyMapListViewModel.kt | 2 +- .../base}/keymaps/KeyMapOptionsScreen.kt | 2 +- .../keymapper/base}/keymaps/KeyMapRepository.kt | 2 +- .../base}/keymaps/ListKeyMapsUseCase.kt | 2 +- .../base}/keymaps/PauseKeyMapsUseCase.kt | 2 +- .../keymapper/base}/keymaps/ShortcutModel.kt | 2 +- .../keymapper/base}/keymaps/ShortcutRow.kt | 2 +- .../base}/keymaps/SimpleMappingController.kt | 2 +- .../keymaps/detection/DetectKeyMapModel.kt | 2 +- .../keymaps/detection/DetectKeyMapsUseCase.kt | 2 +- .../DetectScreenOffKeyEventsController.kt | 2 +- .../keymaps/detection/DpadMotionEventTracker.kt | 2 +- .../detection/ParallelTriggerActionPerformer.kt | 2 +- .../detection/SequenceTriggerActionPerformer.kt | 2 +- .../TriggerKeyMapFromOtherAppsController.kt | 2 +- .../base}/logging/DisplayLogUseCase.kt | 2 +- .../base}/logging/KeyMapperLoggingTree.kt | 2 +- .../sds100/keymapper/base}/logging/LogEntry.kt | 2 +- .../base}/logging/LogEntryEntityMapper.kt | 2 +- .../keymapper/base}/logging/LogEntryListItem.kt | 2 +- .../keymapper/base}/logging/LogFragment.kt | 2 +- .../keymapper/base}/logging/LogRepository.kt | 2 +- .../keymapper/base}/logging/LogSeverity.kt | 2 +- .../sds100/keymapper/base}/logging/LogUtils.kt | 2 +- .../keymapper/base}/logging/LogViewModel.kt | 2 +- .../base}/onboarding/OnboardingTapTarget.kt | 2 +- .../base}/onboarding/OnboardingUseCase.kt | 2 +- .../keymapper/base}/purchasing/ProductId.kt | 2 +- .../base}/purchasing/PurchasingError.kt | 2 +- .../base}/purchasing/PurchasingManager.kt | 2 +- .../RerouteKeyEventsController.kt | 2 +- .../reroutekeyevents/RerouteKeyEventsUseCase.kt | 2 +- .../Android11BugWorkaroundSettingsFragment.kt | 2 +- .../settings/AutomaticallyChangeImeSettings.kt | 2 +- .../base}/settings/BaseSettingsFragment.kt | 2 +- .../base}/settings/ConfigSettingsUseCase.kt | 2 +- .../settings/DefaultOptionsSettingsFragment.kt | 2 +- .../base}/settings/ImePickerSettingsFragment.kt | 2 +- .../base}/settings/MainSettingsFragment.kt | 2 +- .../keymapper/base}/settings/SettingsUtils.kt | 2 +- .../base}/settings/SettingsViewModel.kt | 2 +- .../base}/settings/ShizukuSettingsFragment.kt | 2 +- .../keymapper/base}/settings/ThemeUtils.kt | 2 +- .../keymapper/base}/shizuku/ShizukuAdapter.kt | 2 +- .../base}/shizuku/ShizukuAdapterImpl.kt | 2 +- .../base}/shizuku/ShizukuInputEventInjector.kt | 2 +- .../keymapper/base}/shizuku/ShizukuUtils.kt | 2 +- .../base}/sorting/SortBottomSheetContent.kt | 2 +- .../sds100/keymapper/base}/sorting/SortField.kt | 2 +- .../keymapper/base}/sorting/SortFieldOrder.kt | 2 +- .../base}/sorting/SortKeyMapsUseCase.kt | 2 +- .../sds100/keymapper/base}/sorting/SortOrder.kt | 2 +- .../keymapper/base}/sorting/SortViewModel.kt | 2 +- .../comparators/KeyMapActionsComparator.kt | 2 +- .../comparators/KeyMapConstraintsComparator.kt | 2 +- .../comparators/KeyMapOptionsComparator.kt | 2 +- .../comparators/KeyMapTriggerComparator.kt | 2 +- .../base}/trigger/AssistantTriggerKey.kt | 2 +- .../base}/trigger/AssistantTriggerType.kt | 2 +- .../base}/trigger/BaseConfigTriggerViewModel.kt | 2 +- .../trigger/ChooseTriggerKeyDeviceModel.kt | 2 +- .../base}/trigger/FingerprintTriggerKey.kt | 2 +- .../base}/trigger/FloatingButtonKey.kt | 2 +- .../base}/trigger/KeyCodeTriggerKey.kt | 2 +- .../base}/trigger/KeyEventDetectionSource.kt | 2 +- .../base}/trigger/KeyMapListItemModel.kt | 2 +- .../base}/trigger/RecordTriggerButtonRow.kt | 2 +- .../base}/trigger/RecordTriggerState.kt | 2 +- .../base}/trigger/RecordTriggerUseCase.kt | 2 +- .../keymapper/base}/trigger/RecordedKey.kt | 2 +- .../trigger/SetupGuiKeyboardBottomSheet.kt | 2 +- .../base}/trigger/SetupGuiKeyboardState.kt | 2 +- .../base}/trigger/SetupGuiKeyboardUseCase.kt | 2 +- .../sds100/keymapper/base}/trigger/Trigger.kt | 2 +- .../keymapper/base}/trigger/TriggerError.kt | 2 +- .../base}/trigger/TriggerErrorSnapshot.kt | 2 +- .../keymapper/base}/trigger/TriggerKey.kt | 2 +- .../keymapper/base}/trigger/TriggerKeyDevice.kt | 2 +- .../base}/trigger/TriggerKeyListItem.kt | 2 +- .../trigger/TriggerKeyOptionsBottomSheet.kt | 2 +- .../base}/trigger/TriggerKeyShortcut.kt | 2 +- .../keymapper/base}/trigger/TriggerMode.kt | 2 +- .../keymapper/base}/trigger/TriggerScreen.kt | 2 +- .../sds100/keymapper/base}/util/BundleUtils.kt | 0 .../keymapper/base}/util/CoroutineUtils.kt | 2 +- .../keymapper/base}/util/DispatcherProvider.kt | 2 +- .../sds100/keymapper/base}/util/DisplayUtils.kt | 2 +- .../sds100/keymapper/base}/util/ErrorUtils.kt | 2 +- .../sds100/keymapper/base}/util/FilterUtils.kt | 2 +- .../keymapper/base}/util/InputEventType.kt | 2 +- .../sds100/keymapper/base}/util/ListUtils.kt | 2 +- .../sds100/keymapper/base}/util/LoggingUtils.kt | 2 +- .../sds100/keymapper/base}/util/MapUtils.kt | 2 +- .../sds100/keymapper/base}/util/MathUtils.kt | 2 +- .../keymapper/base}/util/PreferenceDelegate.kt | 2 +- .../sds100/keymapper/base}/util/ServiceEvent.kt | 2 +- .../sds100/keymapper/base}/util/ShareUtils.kt | 2 +- .../base}/util/SharedPrefsDataStoreWrapper.kt | 2 +- .../sds100/keymapper/base}/util/SizeKM.kt | 2 +- .../sds100/keymapper/base}/util/StringUtils.kt | 2 +- .../sds100/keymapper/base}/util/TimeUtils.kt | 2 +- .../sds100/keymapper/base}/util/TreeNode.kt | 2 +- .../keymapper/base}/util/UserHandleUtils.kt | 2 +- .../keymapper/base}/util/UuidGenerator.kt | 2 +- .../keymapper/base}/util/VersionHelper.kt | 2 +- .../keymapper/base}/util/ui/BindingAdapters.kt | 2 +- .../keymapper/base}/util/ui/CheckBoxListItem.kt | 2 +- .../base}/util/ui/ChooseAppStoreModel.kt | 2 +- .../base}/util/ui/DefaultSimpleListItem.kt | 2 +- .../keymapper/base}/util/ui/DialogUtils.kt | 2 +- .../util/ui/EpoxyRecyclerViewModelHelper.kt | 2 +- .../keymapper/base}/util/ui/ISearchable.kt | 2 +- .../sds100/keymapper/base}/util/ui/IconInfo.kt | 2 +- .../sds100/keymapper/base}/util/ui/LinkType.kt | 2 +- .../sds100/keymapper/base/util/ui/ListItem.kt | 5 +++++ .../keymapper/base}/util/ui/MultiChoiceItem.kt | 2 +- .../base}/util/ui/MultiSelectProvider.kt | 2 +- .../keymapper/base}/util/ui/NavDestination.kt | 2 +- .../sds100/keymapper/base}/util/ui/NavResult.kt | 2 +- .../keymapper/base}/util/ui/NavigateEvent.kt | 2 +- .../keymapper/base}/util/ui/NavigationUtils.kt | 2 +- .../base}/util/ui/NavigationViewModel.kt | 6 +++--- .../base}/util/ui/OnPopupResponseEvent.kt | 2 +- .../sds100/keymapper/base}/util/ui/PopupUi.kt | 2 +- .../keymapper/base}/util/ui/PopupViewModel.kt | 2 +- .../base}/util/ui/RadioButtonPairListItem.kt | 2 +- .../base}/util/ui/RadioButtonTripleListItem.kt | 2 +- .../base}/util/ui/RecyclerViewFragment.kt | 2 +- .../base}/util/ui/RecyclerViewUtils.kt | 2 +- .../keymapper/base}/util/ui/ResourceExt.kt | 0 .../keymapper/base}/util/ui/ResourceProvider.kt | 2 +- .../base}/util/ui/SectionHeaderListItem.kt | 2 +- .../keymapper/base}/util/ui/SelectionState.kt | 2 +- .../keymapper/base}/util/ui/ShowPopupEvent.kt | 2 +- .../base}/util/ui/SimpleRecyclerViewFragment.kt | 2 +- .../keymapper/base}/util/ui/SliderMaximums.kt | 2 +- .../keymapper/base}/util/ui/SliderMinimums.kt | 2 +- .../keymapper/base}/util/ui/SliderStepSizes.kt | 2 +- .../keymapper/base}/util/ui/SnackBarUtils.kt | 2 +- .../base}/util/ui/SquareImageButton.kt | 2 +- .../keymapper/base}/util/ui/TextListItem.kt | 2 +- .../sds100/keymapper/base}/util/ui/TintType.kt | 2 +- .../keymapper/base}/util/ui/ViewModelHelper.kt | 2 +- .../base}/util/ui/compose/CheckBoxText.kt | 2 +- .../compose/CollapsableFloatingActionButton.kt | 2 +- .../base}/util/ui/compose/CompactChip.kt | 2 +- .../base}/util/ui/compose/ComposeChipModel.kt | 2 +- .../base}/util/ui/compose/ComposeDialogs.kt | 2 +- .../base}/util/ui/compose/ComposeIconInfo.kt | 2 +- .../base}/util/ui/compose/DragDropState.kt | 2 +- .../base}/util/ui/compose/DraggableItem.kt | 2 +- .../util/ui/compose/KeyMapperDropdownMenu.kt | 2 +- .../util/ui/compose/KeyMapperSliderThumb.kt | 2 +- .../base}/util/ui/compose/KeyMapperTapTarget.kt | 2 +- .../base}/util/ui/compose/ListItemFixError.kt | 2 +- .../base}/util/ui/compose/OptionsHeaderRow.kt | 2 +- .../base}/util/ui/compose/RadioButtonText.kt | 2 +- .../util/ui/compose/SearchAppBarActions.kt | 2 +- .../base}/util/ui/compose/SimpleListItem.kt | 2 +- .../util/ui/compose/SimpleListItemModel.kt | 2 +- .../base}/util/ui/compose/SliderOptionText.kt | 2 +- .../base}/util/ui/compose/UriHandlerUtils.kt | 2 +- .../base}/util/ui/compose/WindowSizeClassExt.kt | 2 +- .../base}/util/ui/compose/icons/AdGroup.kt | 2 +- .../util/ui/compose/icons/HomeIotDevice.kt | 2 +- .../base}/util/ui/compose/icons/Import.kt | 2 +- .../base}/util/ui/compose/icons/InstantMix.kt | 2 +- .../util/ui/compose/icons/JumpToElement.kt | 2 +- .../util/ui/compose/icons/KeyMapperIcons.kt | 3 +++ .../base}/util/ui/compose/icons/MatchWord.kt | 2 +- .../base}/util/ui/compose/icons/NfcOff.kt | 2 +- .../util/ui/compose/icons/TextSelectEnd.kt | 2 +- .../icons/TextSelectMoveForwardCharacter.kt | 2 +- .../util/ui/compose/icons/TopPanelClose.kt | 2 +- .../base}/util/ui/compose/icons/TopPanelOpen.kt | 2 +- .../src/main/res/layout/activity_main.xml | 0 .../layout/app_bar_recyclerview_fragment.xml | 0 .../main/res/layout/dialog_choose_app_store.xml | 0 .../main/res/layout/dialog_edittext_number.xml | 0 .../main/res/layout/dialog_edittext_string.xml | 0 .../res/layout/dropdown_menu_popup_item.xml | 0 .../src/main/res/layout/fragment_about.xml | 0 .../res/layout/fragment_choose_sound_file.xml | 0 .../src/main/res/layout/fragment_compose.xml | 0 .../main/res/layout/fragment_compose_view.xml | 0 .../res/layout/fragment_config_key_event.xml | 0 .../res/layout/fragment_pick_coordinate.xml | 0 .../layout/fragment_pinch_pick_coordinates.xml | 0 .../layout/fragment_preferences_with_appbar.xml | 0 .../res/layout/fragment_select_input_method.xml | 0 .../res/layout/fragment_simple_recyclerview.xml | 0 .../layout/fragment_swipe_pick_coordinates.xml | 0 .../main/res/layout/list_item_about_item.xml | 0 .../src/main/res/layout/list_item_checkbox.xml | 0 .../src/main/res/layout/list_item_fix_error.xml | 0 .../src/main/res/layout/list_item_log_entry.xml | 0 .../res/layout/list_item_radio_button_pair.xml | 0 .../layout/list_item_radio_button_triple.xml | 0 .../src/main/res/layout/list_item_simple.xml | 0 {app => base}/src/main/res/menu/menu_log.xml | 0 .../res/menu/menu_recyclerview_fragment.xml | 0 .../src/main/res/menu/menu_settings.xml | 0 .../main/res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../res/mipmap-anydpi-v26/ic_launcher_round.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../main/res/mipmap-hdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../main/res/mipmap-mdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xhdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin .../src/main/res/navigation/nav_app.xml | 0 .../main/res/navigation/nav_config_keymap.xml | 0 .../src/main/res/navigation/nav_settings.xml | 0 {app => base}/src/main/res/raw/caps_camera.kcm | 0 .../main/{java => res}/values-ar/strings.xml | 0 .../main/{java => res}/values-cs/strings.xml | 0 .../main/{java => res}/values-de/strings.xml | 0 .../main/{java => res}/values-es/strings.xml | 0 .../main/{java => res}/values-fr/strings.xml | 0 .../main/{java => res}/values-hu/strings.xml | 0 .../main/{java => res}/values-id/strings.xml | 0 .../main/{java => res}/values-ka/strings.xml | 0 .../main/{java => res}/values-ko/strings.xml | 0 .../main/{java => res}/values-night/colors.xml | 0 .../main/{java => res}/values-pl/strings.xml | 0 .../main/{java => res}/values-pt/strings.xml | 0 .../main/{java => res}/values-ru/strings.xml | 0 .../main/{java => res}/values-sk/strings.xml | 0 .../main/{java => res}/values-tr/strings.xml | 0 .../main/{java => res}/values-uk/strings.xml | 0 .../main/{java => res}/values-vi/strings.xml | 0 .../{java => res}/values-zh-rCN/strings.xml | 0 .../{java => res}/values-zh-rTW/strings.xml | 0 base/src/main/{java => res}/values/anim.xml | 0 base/src/main/{java => res}/values/colors.xml | 0 base/src/main/{java => res}/values/dimens.xml | 0 base/src/main/{java => res}/values/prefs.xml | 0 base/src/main/{java => res}/values/strings.xml | 0 base/src/main/{java => res}/values/styles.xml | 0 base/src/main/{java => res}/values/themes.xml | 0 .../res/xml/config_accessibility_service.xml | 0 {app => base}/src/main/res/xml/device_admin.xml | 0 {app => base}/src/main/res/xml/input_method.xml | 0 .../src/main/res/xml/keyboard_layouts.xml | 0 .../src/main/res/xml/preferences_empty.xml | 0 .../src/main/res/xml/provider_paths.xml | 0 .../sds100/keymapper/BackupManagerTest.kt | 0 .../sds100/keymapper/ConfigKeyMapUseCaseTest.kt | 0 .../sds100/keymapper/KeyMapJsonMigrationTest.kt | 0 .../LegacyFingerprintMapMigrationTest.kt | 0 .../sds100/keymapper/TestDispatcherProvider.kt | 0 .../github/sds100/keymapper/TestLoggingTree.kt | 0 .../actions/GetActionFailedUseCaseTest.kt | 0 .../actions/PerformActionsUseCaseTest.kt | 0 .../ConfigKeyServiceEventActionViewModelTest.kt | 0 .../constraints/ConstraintSnapshotTest.kt | 0 .../repositories/FakePreferenceRepository.kt | 0 .../data/repositories/KeyMapRepositoryTest.kt | 0 .../keymaps/DpadMotionEventTrackerTest.kt | 0 .../keymapper/keymaps/KeyMapControllerTest.kt | 0 .../ProcessKeyMapGroupsForDetectionTest.kt | 0 .../TriggerKeyMapFromOtherAppsControllerTest.kt | 0 .../system/devices/FakeDevicesAdapter.kt | 0 .../keymapper/system/files/FakeFileAdapter.kt | 0 .../sds100/keymapper/system/files/JavaFile.kt | 0 .../system/intents/ConfigIntentViewModelTest.kt | 0 .../github/sds100/keymapper/util/FlowUtils.kt | 0 .../sds100/keymapper/util/JsonTestUtils.kt | 0 .../github/sds100/keymapper/util/KeyMapUtils.kt | 0 .../keymapper/util/TestConstraintSnapshot.kt | 0 .../keymapper/util/ui/FakeResourceProvider.kt | 0 .../resources/backup-manager-test/corrupt.json | 0 .../resources/backup-manager-test/empty.json | 0 .../legacy-backup-test-data.json | 0 ...-all-legacy-fingerprint-maps-no-version.json | 0 .../restore-all-legacy-fingerprint-maps.json | 0 .../restore-all.zip/data.json | 0 .../restore-all.zip/sounds/sound.ogg | 0 .../restore-app-version-too-big.zip/data.json | 0 .../restore-keymap-db-version-too-big.json | 0 .../restore-keymaps-no-db-version.json | 0 ...-legacy-fingerprint-map-version-too-big.json | 0 .../restore-legacy-single-fingerprint-map.json | 0 .../restore-many-keymaps.json | 0 .../restore-no-app-version.zip/data.json | 0 .../restore-no-sounds-folder.zip/data.json | 0 .../migration-10-11-expected-data.json | 0 .../migration-10-11-test-data.json | 0 .../migration-11-12-expected-data.json | 0 .../migration-11-12-test-data.json | 0 .../migration-9-11-expected-data.json | 0 .../migration-9-11-test-data.json | 0 542 files changed, 386 insertions(+), 401 deletions(-) delete mode 100644 app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintMode.kt delete mode 100644 app/src/main/java/io/github/sds100/keymapper/util/ui/ListItem.kt delete mode 100644 app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/KeyMapperIcons.kt delete mode 100644 app/src/main/res/menu/menu_config_mapping.xml rename {app => base}/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt (100%) rename {app => base}/src/androidTest/java/io/github/sds100/keymapper/JsonTestUtils.kt (100%) rename {app => base}/src/ci/ic_launcher-web.png (100%) rename {app => base}/src/ci/res/drawable/ic_launcher_foreground.xml (100%) rename {app => base}/src/ci/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename {app => base}/src/ci/res/mipmap-anydpi-v26/ic_launcher_round.xml (100%) rename {app => base}/src/ci/res/mipmap-hdpi/ic_launcher.png (100%) rename {app => base}/src/ci/res/mipmap-hdpi/ic_launcher_round.png (100%) rename {app => base}/src/ci/res/mipmap-mdpi/ic_launcher.png (100%) rename {app => base}/src/ci/res/mipmap-mdpi/ic_launcher_round.png (100%) rename {app => base}/src/ci/res/mipmap-xhdpi/ic_launcher.png (100%) rename {app => base}/src/ci/res/mipmap-xhdpi/ic_launcher_round.png (100%) rename {app => base}/src/ci/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {app => base}/src/ci/res/mipmap-xxhdpi/ic_launcher_round.png (100%) rename {app => base}/src/ci/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {app => base}/src/ci/res/mipmap-xxxhdpi/ic_launcher_round.png (100%) rename {app => base}/src/ci/res/values/strings.xml (100%) rename {app => base}/src/debug/ic_launcher-web.png (100%) rename {app => base}/src/debug/res/drawable/ic_launcher_foreground.xml (100%) rename {app => base}/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename {app => base}/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml (100%) rename {app => base}/src/debug/res/mipmap-hdpi/ic_launcher.png (100%) rename {app => base}/src/debug/res/mipmap-hdpi/ic_launcher_round.png (100%) rename {app => base}/src/debug/res/mipmap-mdpi/ic_launcher.png (100%) rename {app => base}/src/debug/res/mipmap-mdpi/ic_launcher_round.png (100%) rename {app => base}/src/debug/res/mipmap-xhdpi/ic_launcher.png (100%) rename {app => base}/src/debug/res/mipmap-xhdpi/ic_launcher_round.png (100%) rename {app => base}/src/debug/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {app => base}/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png (100%) rename {app => base}/src/debug/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {app => base}/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png (100%) rename {app => base}/src/debug/res/values/strings.xml (100%) rename {app => base}/src/free/java/io/github/sds100/keymapper/MainActivity.kt (100%) rename {app => base}/src/free/java/io/github/sds100/keymapper/floating/FloatingLayoutsScreen.kt (100%) rename {app => base}/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt (100%) rename {app => base}/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt (100%) rename {app => base}/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt (100%) rename {app => base}/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt (100%) rename {app => base}/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt (100%) rename {app => base}/src/free/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt (100%) rename {app => base}/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt (100%) rename {app => base}/src/free/java/io/github/sds100/keymapper/trigger/AssistantTriggerSetupBottomSheet.kt (100%) rename {app => base}/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt (100%) rename {app => base}/src/main/aidl/android/content/pm/IPackageManager.aidl (100%) rename {app => base}/src/main/aidl/android/hardware/input/IInputManager.aidl (100%) rename {app => base}/src/main/assets/whats-new.txt (100%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/about/AboutFragment.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/Action.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionCategory.kt (82%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionData.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionDataEntityMapper.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionErrorSnapshot.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionId.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionListItem.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionOptionsBottomSheet.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionUiHelper.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionUtils.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionsScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ChooseActionFragment.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ChooseActionScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ChooseActionViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/ConfigActionsViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/CreateActionDelegate.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/CreateActionUseCase.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/DisplayActionUseCase.kt (93%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/FlashlightActionBottomSheet.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/GetActionErrorUseCase.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/HoldDownMode.kt (61%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/HttpRequestBottomSheet.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/IsActionSupportedUseCase.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/PerformActionsUseCase.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/RepeatMode.kt (66%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/TestActionUseCase.kt (91%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/keyevent/ChooseKeyCodeFragment.kt (82%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/keyevent/ChooseKeyCodeViewModel.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/keyevent/ConfigKeyEventActionFragment.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/keyevent/ConfigKeyEventActionViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/keyevent/ConfigKeyEventUseCase.kt (94%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/pinchscreen/PinchPickCoordinateResult.kt (84%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/sound/ChooseSoundFileFragment.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/sound/ChooseSoundFileUseCase.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/sound/ChooseSoundFileViewModel.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/sound/SoundFileInfo.kt (53%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/sound/SoundsManager.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/swipescreen/SwipePickCoordinateResult.kt (81%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/tapscreen/PickCoordinateImageView.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/tapscreen/PickCoordinateResult.kt (70%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/tapscreen/PickDisplayCoordinateFragment.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/tapscreen/PickDisplayCoordinateViewModel.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/uielement/ChooseUiElementScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/uielement/InteractUiElementFragment.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/uielement/InteractUiElementScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/uielement/InteractUiElementUseCase.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/uielement/InteractUiElementViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/actions/uielement/NodeInteractionType.kt (89%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/api/LaunchKeyMapShortcutActivity.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/api/PauseMappingsBroadcastReceiver.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/api/TriggerKeyMapsBroadcastReceiver.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/backup/BackupContent.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/backup/BackupManager.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/backup/BackupRestoreMappingsUseCase.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/backup/BackupUtils.kt (86%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/backup/ImportExportState.kt (90%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/backup/RestoreKeyMapsActivity.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/backup/RestoreKeyMapsViewModel.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/backup/RestoreType.kt (53%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/compose/ComposeColors.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/compose/ComposeCustomColors.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/compose/ComposeTheme.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ChooseConstraintFragment.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ChooseConstraintScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ChooseConstraintViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConfigConstraintsViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/Constraint.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintDependency.kt (86%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintErrorSnapshot.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintId.kt (94%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintListItem.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintListItemModel.kt (87%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintMode.kt rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintSnapshot.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintState.kt (78%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintUiHelper.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintUtils.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintsScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/CreateConstraintUseCase.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/DetectConstraintsUseCase.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/DisplayConstraintUseCase.kt (89%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/GetConstraintErrorUseCase.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/constraints/TimeConstraintBottomSheet.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/Keys.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/PreferenceDefaults.kt (91%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/AppDatabase.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/dao/AccessibilityNodeDao.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/dao/FingerprintMapDao.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/dao/FloatingButtonDao.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/dao/FloatingLayoutDao.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/dao/GroupDao.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/dao/KeyMapDao.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/dao/LogEntryDao.kt (94%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/typeconverter/ActionListTypeConverter.kt (91%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/typeconverter/ConstantTypeConverters.kt (84%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/typeconverter/ConstraintListTypeConverter.kt (90%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/typeconverter/ExtraListTypeConverter.kt (87%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt (92%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/db/typeconverter/TriggerTypeConverter.kt (93%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/AccessibilityNodeEntity.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/ActionEntity.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/AssistantTriggerKeyEntity.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/ConstraintEntity.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/EntityExtra.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/FingerprintMapEntity.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/FingerprintTriggerKeyEntity.kt (93%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/FloatingButtonEntity.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/FloatingButtonEntityWithLayout.kt (90%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/FloatingButtonKeyEntity.kt (91%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/FloatingLayoutEntity.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/FloatingLayoutEntityWithButtons.kt (89%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/GroupEntity.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/GroupEntityWithChildren.kt (86%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/KeyCodeTriggerKeyEntity.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/KeyMapEntitiesWithGroup.kt (90%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/KeyMapEntity.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/LogEntryEntity.kt (92%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/TriggerEntity.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/entities/TriggerKeyEntity.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/AutoMigration14To15.kt (63%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/AutoMigration15To16.kt (75%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/AutoMigration16To17.kt (63%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/AutoMigration18To19.kt (63%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/AutoMigration19To20.kt (63%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/JsonMigration.kt (75%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/Migration10To11.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/Migration11To12.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/Migration13To14.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/Migration1To2.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/Migration2To3.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/Migration3To4.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/Migration4To5.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/Migration5To6.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/Migration6To7.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/Migration8To9.kt (94%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/Migration9To10.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/MigrationUtils.kt (92%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt (94%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/repositories/AccessibilityNodeRepository.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/repositories/FloatingButtonRepository.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/repositories/FloatingLayoutRepository.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/repositories/GroupRepository.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/repositories/PreferenceRepository.kt (84%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/repositories/RepositoryUtils.kt (92%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/repositories/RoomKeyMapRepository.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/repositories/RoomLogRepository.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/data/repositories/SettingsPreferenceRepository.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/floating/FloatingButtonAppearance.kt (91%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/floating/FloatingButtonData.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/floating/FloatingLayoutData.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/groups/DeleteGroupDialog.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/groups/Group.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/groups/GroupBreadcrumbRow.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/groups/GroupConstraintRow.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/groups/GroupFamily.kt (70%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/groups/GroupListItemModel.kt (78%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/groups/GroupRow.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/home/DeleteKeyMapsDialog.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/home/HomeDestination.kt (79%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/home/HomeFragment.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/home/HomeKeyMapListScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/home/HomeScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/home/HomeTab.kt (57%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/home/HomeViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/home/HomeWarningList.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/home/ImportDialog.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/home/KeyMapListAppBar.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/home/SelectionBottomSheet.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/home/ShowHomeScreenAlertsUseCase.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ClickType.kt (61%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ConfigKeyMapFragment.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ConfigKeyMapOptionsViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ConfigKeyMapScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ConfigKeyMapUseCase.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ConfigKeyMapViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/CreateKeyMapShortcutActivity.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/CreateKeyMapShortcutScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/CreateKeyMapShortcutUseCase.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/CreateKeyMapShortcutViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/DisplayKeyMapUseCase.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/FingerprintGestureType.kt (68%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/FingerprintGesturesSupportedUseCase.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/GetDefaultKeyMapOptionsUseCase.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMap.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapAppBarState.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapGroup.kt (83%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapListItemCreator.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapListScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapListState.kt (85%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapListViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapOptionsScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapRepository.kt (93%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ListKeyMapsUseCase.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/PauseKeyMapsUseCase.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ShortcutModel.kt (77%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ShortcutRow.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/SimpleMappingController.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/DetectKeyMapModel.kt (80%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/DetectKeyMapsUseCase.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/DetectScreenOffKeyEventsController.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/DpadMotionEventTracker.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/ParallelTriggerActionPerformer.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/SequenceTriggerActionPerformer.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/logging/DisplayLogUseCase.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/logging/KeyMapperLoggingTree.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/logging/LogEntry.kt (71%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/logging/LogEntryEntityMapper.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/logging/LogEntryListItem.kt (81%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/logging/LogFragment.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/logging/LogRepository.kt (87%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/logging/LogSeverity.kt (55%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/logging/LogUtils.kt (94%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/logging/LogViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/onboarding/OnboardingTapTarget.kt (94%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/onboarding/OnboardingUseCase.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/purchasing/ProductId.kt (79%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/purchasing/PurchasingError.kt (93%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/purchasing/PurchasingManager.kt (91%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/reroutekeyevents/RerouteKeyEventsController.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/reroutekeyevents/RerouteKeyEventsUseCase.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/settings/Android11BugWorkaroundSettingsFragment.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/settings/AutomaticallyChangeImeSettings.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/settings/BaseSettingsFragment.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/settings/ConfigSettingsUseCase.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/settings/DefaultOptionsSettingsFragment.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/settings/ImePickerSettingsFragment.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/settings/MainSettingsFragment.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/settings/SettingsUtils.kt (93%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/settings/SettingsViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/settings/ShizukuSettingsFragment.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/settings/ThemeUtils.kt (74%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/shizuku/ShizukuAdapter.kt (78%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/shizuku/ShizukuAdapterImpl.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/shizuku/ShizukuInputEventInjector.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/shizuku/ShizukuUtils.kt (91%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/sorting/SortBottomSheetContent.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/sorting/SortField.kt (74%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/sorting/SortFieldOrder.kt (76%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/sorting/SortKeyMapsUseCase.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/sorting/SortOrder.kt (86%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/sorting/SortViewModel.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/sorting/comparators/KeyMapActionsComparator.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/sorting/comparators/KeyMapConstraintsComparator.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/sorting/comparators/KeyMapOptionsComparator.kt (93%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/sorting/comparators/KeyMapTriggerComparator.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/AssistantTriggerKey.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/AssistantTriggerType.kt (92%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/BaseConfigTriggerViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/ChooseTriggerKeyDeviceModel.kt (70%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/FingerprintTriggerKey.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/FloatingButtonKey.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/KeyCodeTriggerKey.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/KeyEventDetectionSource.kt (63%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/KeyMapListItemModel.kt (93%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/RecordTriggerButtonRow.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/RecordTriggerState.kt (86%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/RecordTriggerUseCase.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/RecordedKey.kt (73%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/SetupGuiKeyboardBottomSheet.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/SetupGuiKeyboardState.kt (88%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/SetupGuiKeyboardUseCase.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/Trigger.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerError.kt (93%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerErrorSnapshot.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerKey.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerKeyDevice.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerKeyListItem.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerKeyOptionsBottomSheet.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerKeyShortcut.kt (66%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerMode.kt (94%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerScreen.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/BundleUtils.kt (100%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/CoroutineUtils.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/DispatcherProvider.kt (90%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/DisplayUtils.kt (94%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ErrorUtils.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/FilterUtils.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/InputEventType.kt (57%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ListUtils.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/LoggingUtils.kt (85%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/MapUtils.kt (74%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/MathUtils.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/PreferenceDelegate.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ServiceEvent.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ShareUtils.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/SharedPrefsDataStoreWrapper.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/SizeKM.kt (78%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/StringUtils.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/TimeUtils.kt (86%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/TreeNode.kt (89%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/UserHandleUtils.kt (82%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/UuidGenerator.kt (81%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/VersionHelper.kt (90%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/BindingAdapters.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/CheckBoxListItem.kt (71%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/ChooseAppStoreModel.kt (75%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/DefaultSimpleListItem.kt (92%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/DialogUtils.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/EpoxyRecyclerViewModelHelper.kt (94%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/ISearchable.kt (57%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/IconInfo.kt (72%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/LinkType.kt (54%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/util/ui/ListItem.kt rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/MultiChoiceItem.kt (67%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/MultiSelectProvider.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/NavDestination.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/NavResult.kt (54%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/NavigateEvent.kt (62%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/NavigationUtils.kt (94%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/NavigationViewModel.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/OnPopupResponseEvent.kt (59%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/PopupUi.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/PopupViewModel.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/RadioButtonPairListItem.kt (86%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/RadioButtonTripleListItem.kt (89%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/RecyclerViewFragment.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/RecyclerViewUtils.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/ResourceExt.kt (100%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/ResourceProvider.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/SectionHeaderListItem.kt (64%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/SelectionState.kt (76%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/ShowPopupEvent.kt (57%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/SimpleRecyclerViewFragment.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/SliderMaximums.kt (90%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/SliderMinimums.kt (89%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/SliderStepSizes.kt (90%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/SnackBarUtils.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/SquareImageButton.kt (89%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/TextListItem.kt (85%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/TintType.kt (83%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/ViewModelHelper.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/CheckBoxText.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/CollapsableFloatingActionButton.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/CompactChip.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/ComposeChipModel.kt (89%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/ComposeDialogs.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/ComposeIconInfo.kt (82%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/DragDropState.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/DraggableItem.kt (95%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/KeyMapperDropdownMenu.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/KeyMapperSliderThumb.kt (89%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/KeyMapperTapTarget.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/ListItemFixError.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/OptionsHeaderRow.kt (94%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/RadioButtonText.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/SearchAppBarActions.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/SimpleListItem.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/SimpleListItemModel.kt (84%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/SliderOptionText.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/UriHandlerUtils.kt (88%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/WindowSizeClassExt.kt (96%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/icons/AdGroup.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/icons/HomeIotDevice.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/icons/Import.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/icons/InstantMix.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/icons/JumpToElement.kt (98%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/KeyMapperIcons.kt rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/icons/MatchWord.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/icons/NfcOff.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/icons/TextSelectEnd.kt (98%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/icons/TextSelectMoveForwardCharacter.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/icons/TopPanelClose.kt (97%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/util/ui/compose/icons/TopPanelOpen.kt (97%) rename {app => base}/src/main/res/layout/activity_main.xml (100%) rename {app => base}/src/main/res/layout/app_bar_recyclerview_fragment.xml (100%) rename {app => base}/src/main/res/layout/dialog_choose_app_store.xml (100%) rename {app => base}/src/main/res/layout/dialog_edittext_number.xml (100%) rename {app => base}/src/main/res/layout/dialog_edittext_string.xml (100%) rename {app => base}/src/main/res/layout/dropdown_menu_popup_item.xml (100%) rename {app => base}/src/main/res/layout/fragment_about.xml (100%) rename {app => base}/src/main/res/layout/fragment_choose_sound_file.xml (100%) rename {app => base}/src/main/res/layout/fragment_compose.xml (100%) rename {app => base}/src/main/res/layout/fragment_compose_view.xml (100%) rename {app => base}/src/main/res/layout/fragment_config_key_event.xml (100%) rename {app => base}/src/main/res/layout/fragment_pick_coordinate.xml (100%) rename {app => base}/src/main/res/layout/fragment_pinch_pick_coordinates.xml (100%) rename {app => base}/src/main/res/layout/fragment_preferences_with_appbar.xml (100%) rename {app => base}/src/main/res/layout/fragment_select_input_method.xml (100%) rename {app => base}/src/main/res/layout/fragment_simple_recyclerview.xml (100%) rename {app => base}/src/main/res/layout/fragment_swipe_pick_coordinates.xml (100%) rename {app => base}/src/main/res/layout/list_item_about_item.xml (100%) rename {app => base}/src/main/res/layout/list_item_checkbox.xml (100%) rename {app => base}/src/main/res/layout/list_item_fix_error.xml (100%) rename {app => base}/src/main/res/layout/list_item_log_entry.xml (100%) rename {app => base}/src/main/res/layout/list_item_radio_button_pair.xml (100%) rename {app => base}/src/main/res/layout/list_item_radio_button_triple.xml (100%) rename {app => base}/src/main/res/layout/list_item_simple.xml (100%) rename {app => base}/src/main/res/menu/menu_log.xml (100%) rename {app => base}/src/main/res/menu/menu_recyclerview_fragment.xml (100%) rename {app => base}/src/main/res/menu/menu_settings.xml (100%) rename {app => base}/src/main/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename {app => base}/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml (100%) rename {app => base}/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {app => base}/src/main/res/mipmap-hdpi/ic_launcher_round.png (100%) rename {app => base}/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {app => base}/src/main/res/mipmap-mdpi/ic_launcher_round.png (100%) rename {app => base}/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {app => base}/src/main/res/mipmap-xhdpi/ic_launcher_round.png (100%) rename {app => base}/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {app => base}/src/main/res/mipmap-xxhdpi/ic_launcher_round.png (100%) rename {app => base}/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {app => base}/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png (100%) rename {app => base}/src/main/res/navigation/nav_app.xml (100%) rename {app => base}/src/main/res/navigation/nav_config_keymap.xml (100%) rename {app => base}/src/main/res/navigation/nav_settings.xml (100%) rename {app => base}/src/main/res/raw/caps_camera.kcm (100%) rename base/src/main/{java => res}/values-ar/strings.xml (100%) rename base/src/main/{java => res}/values-cs/strings.xml (100%) rename base/src/main/{java => res}/values-de/strings.xml (100%) rename base/src/main/{java => res}/values-es/strings.xml (100%) rename base/src/main/{java => res}/values-fr/strings.xml (100%) rename base/src/main/{java => res}/values-hu/strings.xml (100%) rename base/src/main/{java => res}/values-id/strings.xml (100%) rename base/src/main/{java => res}/values-ka/strings.xml (100%) rename base/src/main/{java => res}/values-ko/strings.xml (100%) rename base/src/main/{java => res}/values-night/colors.xml (100%) rename base/src/main/{java => res}/values-pl/strings.xml (100%) rename base/src/main/{java => res}/values-pt/strings.xml (100%) rename base/src/main/{java => res}/values-ru/strings.xml (100%) rename base/src/main/{java => res}/values-sk/strings.xml (100%) rename base/src/main/{java => res}/values-tr/strings.xml (100%) rename base/src/main/{java => res}/values-uk/strings.xml (100%) rename base/src/main/{java => res}/values-vi/strings.xml (100%) rename base/src/main/{java => res}/values-zh-rCN/strings.xml (100%) rename base/src/main/{java => res}/values-zh-rTW/strings.xml (100%) rename base/src/main/{java => res}/values/anim.xml (100%) rename base/src/main/{java => res}/values/colors.xml (100%) rename base/src/main/{java => res}/values/dimens.xml (100%) rename base/src/main/{java => res}/values/prefs.xml (100%) rename base/src/main/{java => res}/values/strings.xml (100%) rename base/src/main/{java => res}/values/styles.xml (100%) rename base/src/main/{java => res}/values/themes.xml (100%) rename {app => base}/src/main/res/xml/config_accessibility_service.xml (100%) rename {app => base}/src/main/res/xml/device_admin.xml (100%) rename {app => base}/src/main/res/xml/input_method.xml (100%) rename {app => base}/src/main/res/xml/keyboard_layouts.xml (100%) rename {app => base}/src/main/res/xml/preferences_empty.xml (100%) rename {app => base}/src/main/res/xml/provider_paths.xml (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/TestLoggingTree.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/constraints/ConstraintSnapshotTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/data/repositories/FakePreferenceRepository.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/data/repositories/KeyMapRepositoryTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/keymaps/ProcessKeyMapGroupsForDetectionTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/util/FlowUtils.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/util/TestConstraintSnapshot.kt (100%) rename {app => base}/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt (100%) rename {app => base}/src/test/resources/backup-manager-test/corrupt.json (100%) rename {app => base}/src/test/resources/backup-manager-test/empty.json (100%) rename {app => base}/src/test/resources/backup-manager-test/legacy-backup-test-data.json (100%) rename {app => base}/src/test/resources/backup-manager-test/restore-all-legacy-fingerprint-maps-no-version.json (100%) rename {app => base}/src/test/resources/backup-manager-test/restore-all-legacy-fingerprint-maps.json (100%) rename {app => base}/src/test/resources/backup-manager-test/restore-all.zip/data.json (100%) rename {app => base}/src/test/resources/backup-manager-test/restore-all.zip/sounds/sound.ogg (100%) rename {app => base}/src/test/resources/backup-manager-test/restore-app-version-too-big.zip/data.json (100%) rename {app => base}/src/test/resources/backup-manager-test/restore-keymap-db-version-too-big.json (100%) rename {app => base}/src/test/resources/backup-manager-test/restore-keymaps-no-db-version.json (100%) rename {app => base}/src/test/resources/backup-manager-test/restore-legacy-fingerprint-map-version-too-big.json (100%) rename {app => base}/src/test/resources/backup-manager-test/restore-legacy-single-fingerprint-map.json (100%) rename {app => base}/src/test/resources/backup-manager-test/restore-many-keymaps.json (100%) rename {app => base}/src/test/resources/backup-manager-test/restore-no-app-version.zip/data.json (100%) rename {app => base}/src/test/resources/backup-manager-test/restore-no-sounds-folder.zip/data.json (100%) rename {app => base}/src/test/resources/json-migration-test/migration-10-11-expected-data.json (100%) rename {app => base}/src/test/resources/json-migration-test/migration-10-11-test-data.json (100%) rename {app => base}/src/test/resources/json-migration-test/migration-11-12-expected-data.json (100%) rename {app => base}/src/test/resources/json-migration-test/migration-11-12-test-data.json (100%) rename {app => base}/src/test/resources/json-migration-test/migration-9-11-expected-data.json (100%) rename {app => base}/src/test/resources/json-migration-test/migration-9-11-test-data.json (100%) diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintMode.kt b/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintMode.kt deleted file mode 100644 index a0952ce62e..0000000000 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintMode.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.sds100.keymapper.constraints - -enum class ConstraintMode { - AND, - OR, -} diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ListItem.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/ListItem.kt deleted file mode 100644 index 25ba907c59..0000000000 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ListItem.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.github.sds100.keymapper.util.ui - -interface ListItem { - val id: String -} diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/KeyMapperIcons.kt b/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/KeyMapperIcons.kt deleted file mode 100644 index 343b292720..0000000000 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/KeyMapperIcons.kt +++ /dev/null @@ -1,3 +0,0 @@ -package io.github.sds100.keymapper.util.ui.compose.icons - -object KeyMapperIcons diff --git a/app/src/main/res/menu/menu_config_mapping.xml b/app/src/main/res/menu/menu_config_mapping.xml deleted file mode 100644 index f1dce6e2aa..0000000000 --- a/app/src/main/res/menu/menu_config_mapping.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt b/base/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt similarity index 100% rename from app/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt rename to base/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt diff --git a/app/src/androidTest/java/io/github/sds100/keymapper/JsonTestUtils.kt b/base/src/androidTest/java/io/github/sds100/keymapper/JsonTestUtils.kt similarity index 100% rename from app/src/androidTest/java/io/github/sds100/keymapper/JsonTestUtils.kt rename to base/src/androidTest/java/io/github/sds100/keymapper/JsonTestUtils.kt diff --git a/app/src/ci/ic_launcher-web.png b/base/src/ci/ic_launcher-web.png similarity index 100% rename from app/src/ci/ic_launcher-web.png rename to base/src/ci/ic_launcher-web.png diff --git a/app/src/ci/res/drawable/ic_launcher_foreground.xml b/base/src/ci/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from app/src/ci/res/drawable/ic_launcher_foreground.xml rename to base/src/ci/res/drawable/ic_launcher_foreground.xml diff --git a/app/src/ci/res/mipmap-anydpi-v26/ic_launcher.xml b/base/src/ci/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from app/src/ci/res/mipmap-anydpi-v26/ic_launcher.xml rename to base/src/ci/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/app/src/ci/res/mipmap-anydpi-v26/ic_launcher_round.xml b/base/src/ci/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from app/src/ci/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to base/src/ci/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/app/src/ci/res/mipmap-hdpi/ic_launcher.png b/base/src/ci/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from app/src/ci/res/mipmap-hdpi/ic_launcher.png rename to base/src/ci/res/mipmap-hdpi/ic_launcher.png diff --git a/app/src/ci/res/mipmap-hdpi/ic_launcher_round.png b/base/src/ci/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from app/src/ci/res/mipmap-hdpi/ic_launcher_round.png rename to base/src/ci/res/mipmap-hdpi/ic_launcher_round.png diff --git a/app/src/ci/res/mipmap-mdpi/ic_launcher.png b/base/src/ci/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from app/src/ci/res/mipmap-mdpi/ic_launcher.png rename to base/src/ci/res/mipmap-mdpi/ic_launcher.png diff --git a/app/src/ci/res/mipmap-mdpi/ic_launcher_round.png b/base/src/ci/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from app/src/ci/res/mipmap-mdpi/ic_launcher_round.png rename to base/src/ci/res/mipmap-mdpi/ic_launcher_round.png diff --git a/app/src/ci/res/mipmap-xhdpi/ic_launcher.png b/base/src/ci/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from app/src/ci/res/mipmap-xhdpi/ic_launcher.png rename to base/src/ci/res/mipmap-xhdpi/ic_launcher.png diff --git a/app/src/ci/res/mipmap-xhdpi/ic_launcher_round.png b/base/src/ci/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from app/src/ci/res/mipmap-xhdpi/ic_launcher_round.png rename to base/src/ci/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/app/src/ci/res/mipmap-xxhdpi/ic_launcher.png b/base/src/ci/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from app/src/ci/res/mipmap-xxhdpi/ic_launcher.png rename to base/src/ci/res/mipmap-xxhdpi/ic_launcher.png diff --git a/app/src/ci/res/mipmap-xxhdpi/ic_launcher_round.png b/base/src/ci/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from app/src/ci/res/mipmap-xxhdpi/ic_launcher_round.png rename to base/src/ci/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/app/src/ci/res/mipmap-xxxhdpi/ic_launcher.png b/base/src/ci/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from app/src/ci/res/mipmap-xxxhdpi/ic_launcher.png rename to base/src/ci/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/app/src/ci/res/mipmap-xxxhdpi/ic_launcher_round.png b/base/src/ci/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from app/src/ci/res/mipmap-xxxhdpi/ic_launcher_round.png rename to base/src/ci/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/app/src/ci/res/values/strings.xml b/base/src/ci/res/values/strings.xml similarity index 100% rename from app/src/ci/res/values/strings.xml rename to base/src/ci/res/values/strings.xml diff --git a/app/src/debug/ic_launcher-web.png b/base/src/debug/ic_launcher-web.png similarity index 100% rename from app/src/debug/ic_launcher-web.png rename to base/src/debug/ic_launcher-web.png diff --git a/app/src/debug/res/drawable/ic_launcher_foreground.xml b/base/src/debug/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from app/src/debug/res/drawable/ic_launcher_foreground.xml rename to base/src/debug/res/drawable/ic_launcher_foreground.xml diff --git a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml b/base/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml rename to base/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml b/base/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to base/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/app/src/debug/res/mipmap-hdpi/ic_launcher.png b/base/src/debug/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from app/src/debug/res/mipmap-hdpi/ic_launcher.png rename to base/src/debug/res/mipmap-hdpi/ic_launcher.png diff --git a/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png b/base/src/debug/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from app/src/debug/res/mipmap-hdpi/ic_launcher_round.png rename to base/src/debug/res/mipmap-hdpi/ic_launcher_round.png diff --git a/app/src/debug/res/mipmap-mdpi/ic_launcher.png b/base/src/debug/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from app/src/debug/res/mipmap-mdpi/ic_launcher.png rename to base/src/debug/res/mipmap-mdpi/ic_launcher.png diff --git a/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png b/base/src/debug/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from app/src/debug/res/mipmap-mdpi/ic_launcher_round.png rename to base/src/debug/res/mipmap-mdpi/ic_launcher_round.png diff --git a/app/src/debug/res/mipmap-xhdpi/ic_launcher.png b/base/src/debug/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from app/src/debug/res/mipmap-xhdpi/ic_launcher.png rename to base/src/debug/res/mipmap-xhdpi/ic_launcher.png diff --git a/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png b/base/src/debug/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png rename to base/src/debug/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png b/base/src/debug/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from app/src/debug/res/mipmap-xxhdpi/ic_launcher.png rename to base/src/debug/res/mipmap-xxhdpi/ic_launcher.png diff --git a/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png b/base/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png rename to base/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png b/base/src/debug/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png rename to base/src/debug/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png b/base/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png rename to base/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/app/src/debug/res/values/strings.xml b/base/src/debug/res/values/strings.xml similarity index 100% rename from app/src/debug/res/values/strings.xml rename to base/src/debug/res/values/strings.xml diff --git a/app/src/free/java/io/github/sds100/keymapper/MainActivity.kt b/base/src/free/java/io/github/sds100/keymapper/MainActivity.kt similarity index 100% rename from app/src/free/java/io/github/sds100/keymapper/MainActivity.kt rename to base/src/free/java/io/github/sds100/keymapper/MainActivity.kt diff --git a/app/src/free/java/io/github/sds100/keymapper/floating/FloatingLayoutsScreen.kt b/base/src/free/java/io/github/sds100/keymapper/floating/FloatingLayoutsScreen.kt similarity index 100% rename from app/src/free/java/io/github/sds100/keymapper/floating/FloatingLayoutsScreen.kt rename to base/src/free/java/io/github/sds100/keymapper/floating/FloatingLayoutsScreen.kt diff --git a/app/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt b/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt similarity index 100% rename from app/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt rename to base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt diff --git a/app/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt b/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt similarity index 100% rename from app/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt rename to base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt diff --git a/app/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt b/base/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt similarity index 100% rename from app/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt rename to base/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt diff --git a/app/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt b/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt similarity index 100% rename from app/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt rename to base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt diff --git a/app/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt b/base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt similarity index 100% rename from app/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt rename to base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt diff --git a/app/src/free/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt b/base/src/free/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt similarity index 100% rename from app/src/free/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt rename to base/src/free/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt diff --git a/app/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt b/base/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt similarity index 100% rename from app/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt rename to base/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt diff --git a/app/src/free/java/io/github/sds100/keymapper/trigger/AssistantTriggerSetupBottomSheet.kt b/base/src/free/java/io/github/sds100/keymapper/trigger/AssistantTriggerSetupBottomSheet.kt similarity index 100% rename from app/src/free/java/io/github/sds100/keymapper/trigger/AssistantTriggerSetupBottomSheet.kt rename to base/src/free/java/io/github/sds100/keymapper/trigger/AssistantTriggerSetupBottomSheet.kt diff --git a/app/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt b/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt similarity index 100% rename from app/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt rename to base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt diff --git a/app/src/main/aidl/android/content/pm/IPackageManager.aidl b/base/src/main/aidl/android/content/pm/IPackageManager.aidl similarity index 100% rename from app/src/main/aidl/android/content/pm/IPackageManager.aidl rename to base/src/main/aidl/android/content/pm/IPackageManager.aidl diff --git a/app/src/main/aidl/android/hardware/input/IInputManager.aidl b/base/src/main/aidl/android/hardware/input/IInputManager.aidl similarity index 100% rename from app/src/main/aidl/android/hardware/input/IInputManager.aidl rename to base/src/main/aidl/android/hardware/input/IInputManager.aidl diff --git a/app/src/main/assets/whats-new.txt b/base/src/main/assets/whats-new.txt similarity index 100% rename from app/src/main/assets/whats-new.txt rename to base/src/main/assets/whats-new.txt diff --git a/app/src/main/java/io/github/sds100/keymapper/about/AboutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/about/AboutFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt index de216c04c9..0e7d73e3d6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/about/AboutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.about +package io.github.sds100.keymapper.base.about import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/Action.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/Action.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt index 5b336d6e19..ca0e096529 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/Action.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.common.result.success import io.github.sds100.keymapper.common.result.then diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionCategory.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionCategory.kt similarity index 82% rename from app/src/main/java/io/github/sds100/keymapper/actions/ActionCategory.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionCategory.kt index fbca0aa770..55bf05e5d3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionCategory.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionCategory.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions enum class ActionCategory { APPS, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionData.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/ActionData.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt index 7889ee4f2a..a3fc582e50 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionData.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType import io.github.sds100.keymapper.actions.uielement.NodeInteractionType diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionDataEntityMapper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/ActionDataEntityMapper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt index 8e8068eaba..4b2365f4e5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionDataEntityMapper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import androidx.core.net.toUri import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/ActionErrorSnapshot.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt index 47f58bb1bf..97c1934444 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.actions.sound.SoundsManager import io.github.sds100.keymapper.common.result.Error diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionId.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionId.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/actions/ActionId.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionId.kt index 22301f792a..b8034aa84b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionId.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionId.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions enum class ActionId { APP, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/ActionListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt index 92276cfeb8..d44bb1b874 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.draggable diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionOptionsBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/ActionOptionsBottomSheet.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt index 4a8de35bf8..1637d6d94f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionOptionsBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/ActionUiHelper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt index f32fdc73cc..1f710b2fe2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import android.os.Build import android.view.KeyEvent diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/ActionUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt index 48fd9184a9..d59dd50b01 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import android.content.pm.PackageManager import android.os.Build diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ActionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/ActionsScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt index 59429a0548..0ed2b8f9ea 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ActionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt index 8bc9c8f483..7c29aabfee 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt index 2f805e9d5c..64518afcbb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index 89b6f55f2a..900c5be058 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index a87228759d..42fa18be5a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.Error diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/CreateActionDelegate.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index e9065c1c02..7851dbea02 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import android.text.InputType import androidx.compose.runtime.getValue diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/actions/CreateActionUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt index f0fa786a8d..68ca14ef15 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/CreateActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/DisplayActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt similarity index 93% rename from app/src/main/java/io/github/sds100/keymapper/actions/DisplayActionUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt index eb6cfcf23c..7c0ec05934 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/DisplayActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import android.graphics.drawable.Drawable import io.github.sds100.keymapper.common.result.Error diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/FlashlightActionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/FlashlightActionBottomSheet.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt index 1482dd5327..ef59aae8b2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/FlashlightActionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import android.os.Build import androidx.compose.animation.AnimatedContent diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/GetActionErrorUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/actions/GetActionErrorUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt index e9472e64d0..84f593311f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/GetActionErrorUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/HoldDownMode.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/HoldDownMode.kt similarity index 61% rename from app/src/main/java/io/github/sds100/keymapper/actions/HoldDownMode.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/HoldDownMode.kt index 886b5a2d68..cf10c89e7e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/HoldDownMode.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/HoldDownMode.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions enum class HoldDownMode { TRIGGER_RELEASED, diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/HttpRequestBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/HttpRequestBottomSheet.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt index 15d0063245..c23e5370e8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/HttpRequestBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/IsActionSupportedUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/actions/IsActionSupportedUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt index 64423d4de0..6d19e36cbd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/IsActionSupportedUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import android.content.pm.PackageManager import android.os.Build diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt index 21eebde48e..bcb37d8a38 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/PerformActionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import android.accessibilityservice.AccessibilityService import android.os.Build diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/RepeatMode.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt similarity index 66% rename from app/src/main/java/io/github/sds100/keymapper/actions/RepeatMode.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt index bcc75011bb..b8c373f86d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/RepeatMode.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions enum class RepeatMode { diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/TestActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt similarity index 91% rename from app/src/main/java/io/github/sds100/keymapper/actions/TestActionUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt index e6057409cd..c7c32ef11b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/TestActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.accessibility.ServiceAdapter diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt similarity index 82% rename from app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt index 5254eebb8d..159ff4f71d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.keyevent +package io.github.sds100.keymapper.base.actions.keyevent import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle @@ -21,10 +21,11 @@ class ChooseKeyCodeFragment : SimpleRecyclerViewFragment() { const val SEARCH_STATE_KEY = "key_keycode_search_state" } - override var searchStateKey: String? = SEARCH_STATE_KEY + override var searchStateKey: String? = + io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment.Companion.SEARCH_STATE_KEY private val args: ChooseKeyCodeFragmentArgs by navArgs() - private val viewModel: ChooseKeyCodeViewModel by viewModels { + private val viewModel: io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeViewModel by viewModels { Inject.chooseKeyCodeViewModel() } @@ -38,7 +39,7 @@ class ChooseKeyCodeFragment : SimpleRecyclerViewFragment() { viewLifecycleOwner.launchRepeatOnLifecycle(Lifecycle.State.RESUMED) { viewModel.returnResult.collectLatest { - returnResult(EXTRA_KEYCODE to it) + returnResult(io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment.Companion.EXTRA_KEYCODE to it) } } } diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt index 60d0f85356..949949797f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.keyevent +package io.github.sds100.keymapper.base.actions.keyevent import android.view.KeyEvent import androidx.lifecycle.ViewModel diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt index 8e90126e0d..135afd02ca 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.keyevent +package io.github.sds100.keymapper.base.actions.keyevent import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt index 327cdfa40f..e90d20a659 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.keyevent +package io.github.sds100.keymapper.base.actions.keyevent import android.annotation.SuppressLint import android.view.KeyEvent diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt index 5d72db5257..f2e4072094 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/keyevent/ConfigKeyEventUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.keyevent +package io.github.sds100.keymapper.base.actions.keyevent import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickCoordinateResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickCoordinateResult.kt similarity index 84% rename from app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickCoordinateResult.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickCoordinateResult.kt index b790c293b1..ee115d0fff 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickCoordinateResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickCoordinateResult.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.pinchscreen +package io.github.sds100.keymapper.base.actions.pinchscreen import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt index 654619d14b..085a0a8eff 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.pinchscreen +package io.github.sds100.keymapper.base.actions.pinchscreen import android.annotation.SuppressLint import android.graphics.Bitmap diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt index f627a315c4..77db5b8c2b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.pinchscreen +package io.github.sds100.keymapper.base.actions.pinchscreen import android.accessibilityservice.GestureDescription import android.graphics.Bitmap diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt index 4c4a717cab..316f0069b4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.sound +package io.github.sds100.keymapper.base.actions.sound import android.app.Activity import android.content.Intent diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt index bc88a16020..78bbe1f52f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.sound +package io.github.sds100.keymapper.base.actions.sound import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.common.result.Result diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt index 750a251bad..9325a22fc4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/ChooseSoundFileViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.sound +package io.github.sds100.keymapper.base.actions.sound import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundFileInfo.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundFileInfo.kt similarity index 53% rename from app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundFileInfo.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundFileInfo.kt index f8c74ef74d..213015128c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundFileInfo.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundFileInfo.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.sound +package io.github.sds100.keymapper.base.actions.sound data class SoundFileInfo(val uid: String, val name: String) diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundsManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundsManager.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt index c4c67e35d7..e2bfa08547 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/sound/SoundsManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.sound +package io.github.sds100.keymapper.base.actions.sound import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.common.result.Result diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickCoordinateResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickCoordinateResult.kt similarity index 81% rename from app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickCoordinateResult.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickCoordinateResult.kt index 0efe4ec64e..7f084200d0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickCoordinateResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickCoordinateResult.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.swipescreen +package io.github.sds100.keymapper.base.actions.swipescreen import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt index cfebafa3a9..4f95f841ae 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.swipescreen +package io.github.sds100.keymapper.base.actions.swipescreen import android.annotation.SuppressLint import android.graphics.Bitmap diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt index fa77f1054e..089cde77ec 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.swipescreen +package io.github.sds100.keymapper.base.actions.swipescreen import android.accessibilityservice.GestureDescription import android.graphics.Bitmap diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateImageView.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateImageView.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt index 016453a3c2..4edcd9f31e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateImageView.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.tapscreen +package io.github.sds100.keymapper.base.actions.tapscreen import android.content.Context import android.graphics.Canvas diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateResult.kt similarity index 70% rename from app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateResult.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateResult.kt index f448c3fad5..0fa0cc6bda 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickCoordinateResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateResult.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.tapscreen +package io.github.sds100.keymapper.base.actions.tapscreen import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt index 4963bf4208..6548538c51 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.tapscreen +package io.github.sds100.keymapper.base.actions.tapscreen import android.annotation.SuppressLint import android.graphics.Bitmap diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt index b836943ea9..b2c1c6bd95 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/tapscreen/PickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.tapscreen +package io.github.sds100.keymapper.base.actions.tapscreen import android.graphics.Bitmap import android.graphics.Point diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/ChooseUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/uielement/ChooseUiElementScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt index beaac9f2f9..b1e1aa2b82 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/ChooseUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.uielement +package io.github.sds100.keymapper.base.actions.uielement import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt index c8f0f24c10..070db311c9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.uielement +package io.github.sds100.keymapper.base.actions.uielement import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt index 896be9371d..350663b7ac 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.uielement +package io.github.sds100.keymapper.base.actions.uielement import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedContentTransitionScope diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt index bcfa964984..7a8b3f588f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.uielement +package io.github.sds100.keymapper.base.actions.uielement import android.graphics.drawable.Drawable import io.github.sds100.keymapper.common.result.Result diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt index b3623f3a75..d50a094b7b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/InteractUiElementViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.uielement +package io.github.sds100.keymapper.base.actions.uielement import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Android diff --git a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/NodeInteractionType.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/NodeInteractionType.kt similarity index 89% rename from app/src/main/java/io/github/sds100/keymapper/actions/uielement/NodeInteractionType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/NodeInteractionType.kt index 8d02874b45..54af5aa671 100644 --- a/app/src/main/java/io/github/sds100/keymapper/actions/uielement/NodeInteractionType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/NodeInteractionType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.actions.uielement +package io.github.sds100.keymapper.base.actions.uielement import android.view.accessibility.AccessibilityNodeInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/api/LaunchKeyMapShortcutActivity.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/api/LaunchKeyMapShortcutActivity.kt index f4b3390e80..23db46a3c5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/api/LaunchKeyMapShortcutActivity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.api +package io.github.sds100.keymapper.base.api import android.app.Activity import android.content.Intent diff --git a/app/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt b/base/src/main/java/io/github/sds100/keymapper/base/api/PauseMappingsBroadcastReceiver.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt rename to base/src/main/java/io/github/sds100/keymapper/base/api/PauseMappingsBroadcastReceiver.kt index 809abbfc2a..34088636ef 100644 --- a/app/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/api/PauseMappingsBroadcastReceiver.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.api +package io.github.sds100.keymapper.base.api import android.content.BroadcastReceiver import android.content.Context diff --git a/app/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt b/base/src/main/java/io/github/sds100/keymapper/base/api/TriggerKeyMapsBroadcastReceiver.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt rename to base/src/main/java/io/github/sds100/keymapper/base/api/TriggerKeyMapsBroadcastReceiver.kt index ffb5e42468..dd6c194441 100644 --- a/app/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/api/TriggerKeyMapsBroadcastReceiver.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.api +package io.github.sds100.keymapper.base.api import android.content.BroadcastReceiver import android.content.Context diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/BackupContent.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupContent.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/backup/BackupContent.kt rename to base/src/main/java/io/github/sds100/keymapper/base/backup/BackupContent.kt index 07a71956d1..da11d2b829 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/BackupContent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupContent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.backup +package io.github.sds100.keymapper.base.backup import com.google.gson.annotations.SerializedName import io.github.sds100.keymapper.data.entities.FloatingButtonEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt rename to base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt index 8d79c8f80d..f4b412d47a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/BackupManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.backup +package io.github.sds100.keymapper.base.backup import com.github.salomonbrys.kotson.byInt import com.github.salomonbrys.kotson.byNullableArray diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/BackupRestoreMappingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/backup/BackupRestoreMappingsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt index 5c22bc6937..87e9f49390 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/BackupRestoreMappingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.backup +package io.github.sds100.keymapper.base.backup import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.Success diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/BackupUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupUtils.kt similarity index 86% rename from app/src/main/java/io/github/sds100/keymapper/backup/BackupUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/backup/BackupUtils.kt index 528c12f228..439f672b95 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/BackupUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.backup +package io.github.sds100.keymapper.base.backup import io.github.sds100.keymapper.system.files.FileUtils diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/ImportExportState.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/ImportExportState.kt similarity index 90% rename from app/src/main/java/io/github/sds100/keymapper/backup/ImportExportState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/backup/ImportExportState.kt index 248d22ed4c..a570129d85 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/ImportExportState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/ImportExportState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.backup +package io.github.sds100.keymapper.base.backup sealed class ImportExportState { data object Idle : ImportExportState() diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsActivity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt index ffc0c32ee1..63734edf51 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.backup +package io.github.sds100.keymapper.base.backup import android.content.Intent import android.os.Bundle diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt index 3fcbe8bf1b..156135595c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/RestoreKeyMapsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.backup +package io.github.sds100.keymapper.base.backup import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/app/src/main/java/io/github/sds100/keymapper/backup/RestoreType.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreType.kt similarity index 53% rename from app/src/main/java/io/github/sds100/keymapper/backup/RestoreType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreType.kt index cc74fcccde..f19fdfb04f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/backup/RestoreType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.backup +package io.github.sds100.keymapper.base.backup enum class RestoreType { APPEND, diff --git a/app/src/main/java/io/github/sds100/keymapper/compose/ComposeColors.kt b/base/src/main/java/io/github/sds100/keymapper/base/compose/ComposeColors.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/compose/ComposeColors.kt rename to base/src/main/java/io/github/sds100/keymapper/base/compose/ComposeColors.kt index 6d677359e4..7746f70135 100644 --- a/app/src/main/java/io/github/sds100/keymapper/compose/ComposeColors.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/compose/ComposeColors.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.compose +package io.github.sds100.keymapper.base.compose import androidx.compose.ui.graphics.Color diff --git a/app/src/main/java/io/github/sds100/keymapper/compose/ComposeCustomColors.kt b/base/src/main/java/io/github/sds100/keymapper/base/compose/ComposeCustomColors.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/compose/ComposeCustomColors.kt rename to base/src/main/java/io/github/sds100/keymapper/base/compose/ComposeCustomColors.kt index 2c1000f6bf..49d7638df8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/compose/ComposeCustomColors.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/compose/ComposeCustomColors.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.compose +package io.github.sds100.keymapper.base.compose import androidx.compose.runtime.Immutable import androidx.compose.ui.graphics.Color diff --git a/app/src/main/java/io/github/sds100/keymapper/compose/ComposeTheme.kt b/base/src/main/java/io/github/sds100/keymapper/base/compose/ComposeTheme.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/compose/ComposeTheme.kt rename to base/src/main/java/io/github/sds100/keymapper/base/compose/ComposeTheme.kt index cfd8d6b41d..b289192ec1 100755 --- a/app/src/main/java/io/github/sds100/keymapper/compose/ComposeTheme.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/compose/ComposeTheme.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.compose +package io.github.sds100.keymapper.base.compose import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.MaterialTheme diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt index 727bd91534..86e50a3944 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt index 9582fc5b64..97a2ea1afc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt index 6e61f99532..4c6f3cb8cd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ChooseConstraintViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index c7113efc08..16ee7971a5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/Constraint.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/constraints/Constraint.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt index 37fd9b808d..631a014eaf 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/Constraint.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.data.entities.ConstraintEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintDependency.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintDependency.kt similarity index 86% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintDependency.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintDependency.kt index 98c879b38d..916eec0ae6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintDependency.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintDependency.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints enum class ConstraintDependency { FOREGROUND_APP, diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintErrorSnapshot.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt index 3565797943..d64760f219 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import android.content.pm.PackageManager import android.os.Build diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintId.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintId.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintId.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintId.kt index b015752aca..6ff99f2b54 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintId.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintId.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt index e59fe299e3..e4373fdae4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.IntrinsicSize diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt similarity index 87% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintListItemModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt index e5e2ccbd09..d06bcf1ab4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintMode.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintMode.kt new file mode 100644 index 0000000000..985191d18d --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintMode.kt @@ -0,0 +1,6 @@ +package io.github.sds100.keymapper.base.constraints + +enum class ConstraintMode { + AND, + OR, +} diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintSnapshot.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt index 09fb515a1b..d0f588aea3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import android.media.AudioManager import android.os.Build diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintState.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintState.kt similarity index 78% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintState.kt index 29283dbe11..ad284ccdb2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUiHelper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt index b39261e787..adb6315289 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Android diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt index db5e3421e9..d5cf1690be 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Battery2Bar diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintsScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt index 85804a55f8..ab2015b89f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/CreateConstraintUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/constraints/CreateConstraintUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt index 6f04970552..bc342fb8f4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/CreateConstraintUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import android.content.pm.PackageManager import android.os.Build diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/DetectConstraintsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/constraints/DetectConstraintsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt index 904e70eb14..00ad2bc4e1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/DetectConstraintsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import android.os.Build import io.github.sds100.keymapper.system.accessibility.IAccessibilityService diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/DisplayConstraintUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt similarity index 89% rename from app/src/main/java/io/github/sds100/keymapper/constraints/DisplayConstraintUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt index 50624f8562..48aa33a450 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/DisplayConstraintUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import android.graphics.drawable.Drawable import io.github.sds100.keymapper.common.result.Error diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/GetConstraintErrorUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/constraints/GetConstraintErrorUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt index 4365574b8c..ec48afea54 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/GetConstraintErrorUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/constraints/TimeConstraintBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/constraints/TimeConstraintBottomSheet.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt index f59740fddd..9edb889e21 100644 --- a/app/src/main/java/io/github/sds100/keymapper/constraints/TimeConstraintBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column diff --git a/app/src/main/java/io/github/sds100/keymapper/data/Keys.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/Keys.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/data/Keys.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/Keys.kt index 681c7eaba9..79d21a828b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/Keys.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/Keys.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data +package io.github.sds100.keymapper.base.data import androidx.datastore.preferences.core.booleanPreferencesKey import androidx.datastore.preferences.core.intPreferencesKey diff --git a/app/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/PreferenceDefaults.kt similarity index 91% rename from app/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/PreferenceDefaults.kt index 27d36319cc..d26ef086f4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/PreferenceDefaults.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data +package io.github.sds100.keymapper.base.data diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/AppDatabase.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/AppDatabase.kt index cd64a24ece..687337995c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/AppDatabase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db +package io.github.sds100.keymapper.base.data.db import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/AccessibilityNodeDao.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/AccessibilityNodeDao.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/data/db/dao/AccessibilityNodeDao.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/AccessibilityNodeDao.kt index 1aa13584a5..bbe98b02f6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/AccessibilityNodeDao.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/AccessibilityNodeDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.dao +package io.github.sds100.keymapper.base.data.db.dao import androidx.room.Dao import androidx.room.Insert diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/FingerprintMapDao.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FingerprintMapDao.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/data/db/dao/FingerprintMapDao.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FingerprintMapDao.kt index 3f14042f03..30025a1a7d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/FingerprintMapDao.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FingerprintMapDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.dao +package io.github.sds100.keymapper.base.data.db.dao import androidx.room.Dao import androidx.room.Insert diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/FloatingButtonDao.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FloatingButtonDao.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/db/dao/FloatingButtonDao.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FloatingButtonDao.kt index a1449f92ba..5c2baee613 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/FloatingButtonDao.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FloatingButtonDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.dao +package io.github.sds100.keymapper.base.data.db.dao import androidx.room.Dao import androidx.room.Insert diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/FloatingLayoutDao.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FloatingLayoutDao.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/db/dao/FloatingLayoutDao.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FloatingLayoutDao.kt index f3a7521f5b..d6fa121228 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/FloatingLayoutDao.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FloatingLayoutDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.dao +package io.github.sds100.keymapper.base.data.db.dao import androidx.room.Dao import androidx.room.Delete diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/GroupDao.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/GroupDao.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/db/dao/GroupDao.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/GroupDao.kt index b463a63f37..8579e439a8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/GroupDao.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/GroupDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.dao +package io.github.sds100.keymapper.base.data.db.dao import androidx.room.Dao import androidx.room.Delete diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/KeyMapDao.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/KeyMapDao.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/db/dao/KeyMapDao.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/KeyMapDao.kt index 12db4e7752..fa0d81c976 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/KeyMapDao.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/KeyMapDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.dao +package io.github.sds100.keymapper.base.data.db.dao import androidx.room.Dao import androidx.room.Delete diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/LogEntryDao.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/LogEntryDao.kt index 005ae4f489..70ae7ed79b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/LogEntryDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.dao +package io.github.sds100.keymapper.base.data.db.dao import androidx.room.Dao import androidx.room.Insert diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ActionListTypeConverter.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ActionListTypeConverter.kt similarity index 91% rename from app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ActionListTypeConverter.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ActionListTypeConverter.kt index 993a25a63a..fac927d4fa 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ActionListTypeConverter.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ActionListTypeConverter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.typeconverter +package io.github.sds100.keymapper.base.data.db.typeconverter import androidx.room.TypeConverter import com.github.salomonbrys.kotson.fromJson diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstantTypeConverters.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ConstantTypeConverters.kt similarity index 84% rename from app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstantTypeConverters.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ConstantTypeConverters.kt index d4aa216be7..07c4e155f2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstantTypeConverters.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ConstantTypeConverters.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.typeconverter +package io.github.sds100.keymapper.base.data.db.typeconverter import io.github.sds100.keymapper.system.display.Orientation diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstraintListTypeConverter.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ConstraintListTypeConverter.kt similarity index 90% rename from app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstraintListTypeConverter.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ConstraintListTypeConverter.kt index da676515d9..8629cae373 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstraintListTypeConverter.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ConstraintListTypeConverter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.typeconverter +package io.github.sds100.keymapper.base.data.db.typeconverter import androidx.room.TypeConverter import com.github.salomonbrys.kotson.fromJson diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ExtraListTypeConverter.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ExtraListTypeConverter.kt similarity index 87% rename from app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ExtraListTypeConverter.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ExtraListTypeConverter.kt index 4bccde0fab..cc94759804 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ExtraListTypeConverter.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ExtraListTypeConverter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.typeconverter +package io.github.sds100.keymapper.base.data.db.typeconverter import androidx.room.TypeConverter import com.github.salomonbrys.kotson.fromJson diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt similarity index 92% rename from app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt index e5f0704f5e..e165ce3436 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.typeconverter +package io.github.sds100.keymapper.base.data.db.typeconverter import androidx.room.TypeConverter import io.github.sds100.keymapper.actions.uielement.NodeInteractionType diff --git a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/TriggerTypeConverter.kt similarity index 93% rename from app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/TriggerTypeConverter.kt index f625c7b6be..f27bdaae1c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/TriggerTypeConverter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.db.typeconverter +package io.github.sds100.keymapper.base.data.db.typeconverter import androidx.room.TypeConverter import com.github.salomonbrys.kotson.fromJson diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/AccessibilityNodeEntity.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/AccessibilityNodeEntity.kt index f84769395c..ff6228a3be 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/AccessibilityNodeEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import androidx.room.ColumnInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/ActionEntity.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/ActionEntity.kt index ad42ed3012..f70fd52939 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/ActionEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import com.github.salomonbrys.kotson.byArray diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/AssistantTriggerKeyEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/AssistantTriggerKeyEntity.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/AssistantTriggerKeyEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/AssistantTriggerKeyEntity.kt index 6c55705467..114806b7b9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/AssistantTriggerKeyEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/AssistantTriggerKeyEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/ConstraintEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/ConstraintEntity.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/ConstraintEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/ConstraintEntity.kt index 6690875809..79ea003ab0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/ConstraintEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/ConstraintEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import com.github.salomonbrys.kotson.byArray diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/EntityExtra.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/EntityExtra.kt index b3ac9e3c06..010299ae25 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/EntityExtra.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import com.github.salomonbrys.kotson.byString diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintMapEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FingerprintMapEntity.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintMapEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/FingerprintMapEntity.kt index b5c824f97b..8df440e113 100755 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintMapEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FingerprintMapEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintTriggerKeyEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FingerprintTriggerKeyEntity.kt similarity index 93% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintTriggerKeyEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/FingerprintTriggerKeyEntity.kt index 968ae087b5..24abbebcfa 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintTriggerKeyEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FingerprintTriggerKeyEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonEntity.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonEntity.kt index 1c1589053e..67f7bafd1c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import androidx.room.ColumnInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonEntityWithLayout.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonEntityWithLayout.kt similarity index 90% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonEntityWithLayout.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonEntityWithLayout.kt index 3337ec7a81..c8a036b916 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonEntityWithLayout.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonEntityWithLayout.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import androidx.room.Embedded diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonKeyEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonKeyEntity.kt similarity index 91% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonKeyEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonKeyEntity.kt index c2761acfb9..dea20061c9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonKeyEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonKeyEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingLayoutEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingLayoutEntity.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingLayoutEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingLayoutEntity.kt index 67072a34dc..d1b7cd4eca 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingLayoutEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingLayoutEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import androidx.room.ColumnInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingLayoutEntityWithButtons.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingLayoutEntityWithButtons.kt similarity index 89% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingLayoutEntityWithButtons.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingLayoutEntityWithButtons.kt index 6d50cb3ca8..382b216046 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/FloatingLayoutEntityWithButtons.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingLayoutEntityWithButtons.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import androidx.room.Embedded import androidx.room.Relation diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/GroupEntity.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/GroupEntity.kt index 18e97c7f66..9852ab2feb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/GroupEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import androidx.room.ColumnInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntityWithChildren.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/GroupEntityWithChildren.kt similarity index 86% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntityWithChildren.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/GroupEntityWithChildren.kt index ecedbaa99b..7ff11a99d8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntityWithChildren.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/GroupEntityWithChildren.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import androidx.room.Embedded import androidx.room.Relation diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/KeyCodeTriggerKeyEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyCodeTriggerKeyEntity.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/KeyCodeTriggerKeyEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyCodeTriggerKeyEntity.kt index e26132c25a..f59ca97072 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/KeyCodeTriggerKeyEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyCodeTriggerKeyEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntitiesWithGroup.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyMapEntitiesWithGroup.kt similarity index 90% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntitiesWithGroup.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyMapEntitiesWithGroup.kt index 7c6a12a082..2c3e7109d7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntitiesWithGroup.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyMapEntitiesWithGroup.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import androidx.room.Embedded diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyMapEntity.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyMapEntity.kt index 5b5e94ba04..75ec803ca5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyMapEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import androidx.room.ColumnInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/LogEntryEntity.kt similarity index 92% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/LogEntryEntity.kt index ca4065cb34..e98c9356ed 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/LogEntryEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/TriggerEntity.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/TriggerEntity.kt index 1337126eb0..3ee50d69f6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/TriggerEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import androidx.annotation.IntDef diff --git a/app/src/main/java/io/github/sds100/keymapper/data/entities/TriggerKeyEntity.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/TriggerKeyEntity.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/data/entities/TriggerKeyEntity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/entities/TriggerKeyEntity.kt index ce98690420..94e99e0e33 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/entities/TriggerKeyEntity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/entities/TriggerKeyEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.entities +package io.github.sds100.keymapper.base.data.entities import android.os.Parcelable import com.github.salomonbrys.kotson.byInt diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration14To15.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration14To15.kt similarity index 63% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration14To15.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration14To15.kt index b823941134..96842ea51c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration14To15.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration14To15.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.room.migration.AutoMigrationSpec diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration15To16.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration15To16.kt similarity index 75% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration15To16.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration15To16.kt index f8d172419a..809b6244e4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration15To16.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration15To16.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.room.DeleteColumn import androidx.room.migration.AutoMigrationSpec diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration16To17.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration16To17.kt similarity index 63% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration16To17.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration16To17.kt index ce92b9a3a9..41d2290f1a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration16To17.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration16To17.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.room.migration.AutoMigrationSpec diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration18To19.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration18To19.kt similarity index 63% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration18To19.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration18To19.kt index 6ee2b50840..392f4369ec 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration18To19.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration18To19.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.room.migration.AutoMigrationSpec diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration19To20.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration19To20.kt similarity index 63% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration19To20.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration19To20.kt index edec936175..ae99702dc2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration19To20.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration19To20.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.room.migration.AutoMigrationSpec diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/JsonMigration.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/JsonMigration.kt similarity index 75% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/JsonMigration.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/JsonMigration.kt index 146de584db..a953edfbe3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/JsonMigration.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/JsonMigration.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import com.google.gson.JsonObject diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration10To11.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration10To11.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/Migration10To11.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration10To11.kt index e610bfd4aa..53137f65da 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration10To11.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration10To11.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration11To12.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration11To12.kt index eca08ec637..33888d1bb9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration11To12.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration13To14.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration13To14.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/Migration13To14.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration13To14.kt index 3e448dd338..138cbd4e50 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration13To14.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration13To14.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration1To2.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration1To2.kt index fb0fae2439..40665886d0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration1To2.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.core.database.getStringOrNull import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration2To3.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration2To3.kt index 59b3cfcafa..120dac3c7e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration2To3.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration3To4.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration3To4.kt index a61b6d4224..2ac288148c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration3To4.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration4To5.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration4To5.kt index 10c4541487..5ee769b44e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration4To5.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration5To6.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration5To6.kt index 02a203fd9d..126086aa07 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration5To6.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration6To7.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration6To7.kt index 4e0d96dd9e..cc9e76bcea 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration6To7.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration8To9.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration8To9.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/Migration8To9.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration8To9.kt index 2240986b73..9ee1e7c8da 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration8To9.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration8To9.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration9To10.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration9To10.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/Migration9To10.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration9To10.kt index 1d5b846cce..f345973a41 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/Migration9To10.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration9To10.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/MigrationUtils.kt similarity index 92% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/MigrationUtils.kt index ccbfb187ed..4c896e5f18 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/MigrationUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.migration +package io.github.sds100.keymapper.base.data.migration import com.google.gson.JsonObject diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt index 541790302b..c0ae9a7ba9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.migration.fingerprintmaps +package io.github.sds100.keymapper.base.data.migration.fingerprintmaps import com.github.salomonbrys.kotson.byArray import com.github.salomonbrys.kotson.byInt diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt index b75dcb120c..4b4a1493f2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.data.migration.fingerprintmaps +package io.github.sds100.keymapper.base.data.migration.fingerprintmaps import com.github.salomonbrys.kotson.byArray import com.github.salomonbrys.kotson.byString diff --git a/app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt index 735dbab356..abb6d1e84f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.migration.fingerprintmaps +package io.github.sds100.keymapper.base.data.migration.fingerprintmaps import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.FingerprintMapEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/AccessibilityNodeRepository.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/repositories/AccessibilityNodeRepository.kt index 8cd11a4c83..1e3ce0a5de 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/AccessibilityNodeRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.repositories +package io.github.sds100.keymapper.base.data.repositories import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/FloatingButtonRepository.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/repositories/FloatingButtonRepository.kt index 0d28fd0cb0..fc8fb27e98 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/FloatingButtonRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.repositories +package io.github.sds100.keymapper.base.data.repositories import io.github.sds100.keymapper.data.db.dao.FloatingButtonDao import io.github.sds100.keymapper.data.entities.FloatingButtonEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/FloatingLayoutRepository.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/repositories/FloatingLayoutRepository.kt index e4160377fb..fcda41c753 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/FloatingLayoutRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.repositories +package io.github.sds100.keymapper.base.data.repositories import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.data.db.dao.FloatingLayoutDao diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/GroupRepository.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/repositories/GroupRepository.kt index 23423e11b8..99f1413b01 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/GroupRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.repositories +package io.github.sds100.keymapper.base.data.repositories import io.github.sds100.keymapper.data.db.dao.GroupDao import io.github.sds100.keymapper.data.entities.GroupEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/PreferenceRepository.kt similarity index 84% rename from app/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/repositories/PreferenceRepository.kt index fad61ec232..12f7cece30 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/PreferenceRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.repositories +package io.github.sds100.keymapper.base.data.repositories import androidx.datastore.preferences.core.Preferences import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/RepositoryUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RepositoryUtils.kt similarity index 92% rename from app/src/main/java/io/github/sds100/keymapper/data/repositories/RepositoryUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RepositoryUtils.kt index 50ad468cc5..0b493cb09e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/RepositoryUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RepositoryUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.repositories +package io.github.sds100.keymapper.base.data.repositories object RepositoryUtils { suspend fun saveUniqueName( diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RoomKeyMapRepository.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RoomKeyMapRepository.kt index 7246d8de53..d3dd48108d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RoomKeyMapRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.repositories +package io.github.sds100.keymapper.base.data.repositories import io.github.sds100.keymapper.data.db.dao.FingerprintMapDao import io.github.sds100.keymapper.data.db.dao.KeyMapDao diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RoomLogRepository.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RoomLogRepository.kt index 27f409150c..bbb1af7e2b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RoomLogRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.repositories +package io.github.sds100.keymapper.base.data.repositories import io.github.sds100.keymapper.data.db.dao.LogEntryDao import io.github.sds100.keymapper.data.entities.LogEntryEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/data/repositories/SettingsPreferenceRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/SettingsPreferenceRepository.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/data/repositories/SettingsPreferenceRepository.kt rename to base/src/main/java/io/github/sds100/keymapper/base/data/repositories/SettingsPreferenceRepository.kt index b4fba3ba06..9495c101ff 100644 --- a/app/src/main/java/io/github/sds100/keymapper/data/repositories/SettingsPreferenceRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/SettingsPreferenceRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.data.repositories +package io.github.sds100.keymapper.base.data.repositories import android.content.Context import androidx.datastore.preferences.core.Preferences diff --git a/app/src/main/java/io/github/sds100/keymapper/floating/FloatingButtonAppearance.kt b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonAppearance.kt similarity index 91% rename from app/src/main/java/io/github/sds100/keymapper/floating/FloatingButtonAppearance.kt rename to base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonAppearance.kt index 973025ca96..39031918a4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/floating/FloatingButtonAppearance.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonAppearance.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.floating +package io.github.sds100.keymapper.base.floating import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/floating/FloatingButtonData.kt b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/floating/FloatingButtonData.kt rename to base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt index f8a19fe376..830c43feb6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/floating/FloatingButtonData.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.floating +package io.github.sds100.keymapper.base.floating import io.github.sds100.keymapper.data.db.typeconverter.ConstantTypeConverters import io.github.sds100.keymapper.data.entities.FloatingButtonEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/floating/FloatingLayoutData.kt b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingLayoutData.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/floating/FloatingLayoutData.kt rename to base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingLayoutData.kt index 150536bfc4..675d207917 100644 --- a/app/src/main/java/io/github/sds100/keymapper/floating/FloatingLayoutData.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingLayoutData.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.floating +package io.github.sds100.keymapper.base.floating import io.github.sds100.keymapper.data.entities.FloatingLayoutEntity import io.github.sds100.keymapper.data.entities.FloatingLayoutEntityWithButtons diff --git a/app/src/main/java/io/github/sds100/keymapper/groups/DeleteGroupDialog.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/DeleteGroupDialog.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/groups/DeleteGroupDialog.kt rename to base/src/main/java/io/github/sds100/keymapper/base/groups/DeleteGroupDialog.kt index 29155760f1..df73d79ef0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/groups/DeleteGroupDialog.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/DeleteGroupDialog.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.groups +package io.github.sds100.keymapper.base.groups import androidx.compose.material3.AlertDialog import androidx.compose.material3.MaterialTheme diff --git a/app/src/main/java/io/github/sds100/keymapper/groups/Group.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/Group.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/groups/Group.kt rename to base/src/main/java/io/github/sds100/keymapper/base/groups/Group.kt index 6633399388..5dbc731aa7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/groups/Group.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/Group.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.groups +package io.github.sds100.keymapper.base.groups import io.github.sds100.keymapper.constraints.ConstraintEntityMapper import io.github.sds100.keymapper.constraints.ConstraintModeEntityMapper diff --git a/app/src/main/java/io/github/sds100/keymapper/groups/GroupBreadcrumbRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupBreadcrumbRow.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/groups/GroupBreadcrumbRow.kt rename to base/src/main/java/io/github/sds100/keymapper/base/groups/GroupBreadcrumbRow.kt index 70ff333357..550e83e861 100644 --- a/app/src/main/java/io/github/sds100/keymapper/groups/GroupBreadcrumbRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupBreadcrumbRow.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.groups +package io.github.sds100.keymapper.base.groups import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.BoxWithConstraints diff --git a/app/src/main/java/io/github/sds100/keymapper/groups/GroupConstraintRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/groups/GroupConstraintRow.kt rename to base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt index 7f051f138a..3147436fc6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/groups/GroupConstraintRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.groups +package io.github.sds100.keymapper.base.groups import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.Arrangement diff --git a/app/src/main/java/io/github/sds100/keymapper/groups/GroupFamily.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupFamily.kt similarity index 70% rename from app/src/main/java/io/github/sds100/keymapper/groups/GroupFamily.kt rename to base/src/main/java/io/github/sds100/keymapper/base/groups/GroupFamily.kt index e6e7a790e4..afd78e9231 100644 --- a/app/src/main/java/io/github/sds100/keymapper/groups/GroupFamily.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupFamily.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.groups +package io.github.sds100.keymapper.base.groups data class GroupFamily( val group: Group?, diff --git a/app/src/main/java/io/github/sds100/keymapper/groups/GroupListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupListItemModel.kt similarity index 78% rename from app/src/main/java/io/github/sds100/keymapper/groups/GroupListItemModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/groups/GroupListItemModel.kt index 9f53a1da74..db204beb18 100644 --- a/app/src/main/java/io/github/sds100/keymapper/groups/GroupListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupListItemModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.groups +package io.github.sds100.keymapper.base.groups import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/groups/GroupRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/groups/GroupRow.kt rename to base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt index 49f36f5762..3c44077e1d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/groups/GroupRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.groups +package io.github.sds100.keymapper.base.groups import androidx.compose.animation.AnimatedContent import androidx.compose.animation.animateContentSize diff --git a/app/src/main/java/io/github/sds100/keymapper/home/DeleteKeyMapsDialog.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/DeleteKeyMapsDialog.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/home/DeleteKeyMapsDialog.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/DeleteKeyMapsDialog.kt index 70d7772c34..2f0288a87d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/DeleteKeyMapsDialog.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/DeleteKeyMapsDialog.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper.base.home import androidx.compose.material3.AlertDialog import androidx.compose.material3.MaterialTheme diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeDestination.kt similarity index 79% rename from app/src/main/java/io/github/sds100/keymapper/home/HomeDestination.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/HomeDestination.kt index 33d985c64f..8759428317 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeDestination.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper.base.home sealed class HomeDestination(val route: String) { data object KeyMaps : HomeDestination("key_maps") diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt index 5ba4a8c508..0f78269ed3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper.base.home import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeKeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/home/HomeKeyMapListScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt index f8e6fd3ece..6f2e787a51 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeKeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper.base.home import androidx.activity.compose.LocalActivity import androidx.activity.compose.rememberLauncherForActivityResult diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt index b8ffce2f7a..992ed4d202 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper.base.home import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.EnterTransition diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeTab.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeTab.kt similarity index 57% rename from app/src/main/java/io/github/sds100/keymapper/home/HomeTab.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/HomeTab.kt index d08527941c..22e8c6cb54 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeTab.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeTab.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper.base.home enum class HomeTab { KEY_EVENTS, diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt index 8d72c024bc..ae3ecf5795 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper.base.home import android.os.Build import androidx.compose.material.icons.Icons diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeWarningList.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeWarningList.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/home/HomeWarningList.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/HomeWarningList.kt index 28007d2deb..f48a6ca314 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeWarningList.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeWarningList.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper.base.home import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.Arrangement diff --git a/app/src/main/java/io/github/sds100/keymapper/home/ImportDialog.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/ImportDialog.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/home/ImportDialog.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/ImportDialog.kt index 0a0ba913b6..f342572a20 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/ImportDialog.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/ImportDialog.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper.base.home import androidx.compose.material3.AlertDialog import androidx.compose.material3.MaterialTheme diff --git a/app/src/main/java/io/github/sds100/keymapper/home/KeyMapListAppBar.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/home/KeyMapListAppBar.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt index 762ca72e0c..d83e6b0080 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/KeyMapListAppBar.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper.base.home import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedContent diff --git a/app/src/main/java/io/github/sds100/keymapper/home/SelectionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/home/SelectionBottomSheet.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt index 9add3884a7..2f642ba933 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/SelectionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper.base.home import androidx.compose.foundation.clickable import androidx.compose.foundation.horizontalScroll diff --git a/app/src/main/java/io/github/sds100/keymapper/home/ShowHomeScreenAlertsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/home/ShowHomeScreenAlertsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt index 92fe824878..f863c47748 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/ShowHomeScreenAlertsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper.base.home import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ClickType.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ClickType.kt similarity index 61% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/ClickType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ClickType.kt index 02e6e04709..260acb2d0e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ClickType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ClickType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps enum class ClickType { SHORT_PRESS, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt index 20e9fc683e..429da15400 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapOptionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapOptionsViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt index 4694619ceb..25575e3d15 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapOptionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.graphics.Color import android.graphics.drawable.Drawable diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt index f70a0998e8..cbe522f02f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import androidx.activity.compose.BackHandler import androidx.compose.foundation.layout.Arrangement diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt index 369fe854c8..d8a7184c27 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.actions.Action diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt index 5ef907d9f0..0d9714c548 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.os.Bundle import androidx.lifecycle.ViewModel diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutActivity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt index 57424b5aac..769d36ed2f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.os.Bundle import androidx.activity.SystemBarStyle diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt index 3c082d8cd2..b1dd3777db 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedContent diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt index 4360a79270..daf244f9b6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.content.Intent import android.graphics.drawable.Drawable diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt index 3555749abf..6598ff973d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/CreateKeyMapShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.content.Intent import android.graphics.Color diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index c35acaee87..edfb76b633 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.content.Context import android.graphics.drawable.Drawable diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGestureType.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGestureType.kt similarity index 68% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGestureType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGestureType.kt index b0d65cc8a5..ce46fe7def 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGestureType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGestureType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps enum class FingerprintGestureType { SWIPE_DOWN, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGesturesSupportedUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGesturesSupportedUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt index f5502dc17e..cce662add6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/FingerprintGesturesSupportedUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.content.Context import android.os.Build diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/GetDefaultKeyMapOptionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/GetDefaultKeyMapOptionsUseCase.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/GetDefaultKeyMapOptionsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/GetDefaultKeyMapOptionsUseCase.kt index db17acfe03..11e3b89199 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/GetDefaultKeyMapOptionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/GetDefaultKeyMapOptionsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMap.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMap.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt index b4838eda6b..970fc3dbd8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMap.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.view.KeyEvent import io.github.sds100.keymapper.actions.Action diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapAppBarState.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapAppBarState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt index 1a7dd98598..5e87a76ca1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapAppBarState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.groups.GroupListItemModel diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapGroup.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt similarity index 83% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapGroup.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt index 70fbec0d95..427b64b067 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapGroup.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.groups.Group import io.github.sds100.keymapper.common.state.State diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListItemCreator.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListItemCreator.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt index 52fc86150b..7bc235c120 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListItemCreator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.outlined.ArrowForward diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt index ca35423b1a..1c24e962a5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Arrangement diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListState.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt similarity index 85% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt index 2b23d03397..4bf69be721 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.common.state.State diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index 2bc077aaf5..750e976df5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapOptionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapOptionsScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt index f2b102ce13..51b64cb582 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapOptionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.content.ClipData import androidx.compose.animation.AnimatedVisibility diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapRepository.kt similarity index 93% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapRepository.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapRepository.kt index 7e91734c07..f4b6356812 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/KeyMapRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.common.state.State diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt index 238860ccca..34a09a3df1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ListKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.R diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/PauseKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/PauseKeyMapsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt index 3f802f85cd..e48b12f372 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/PauseKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ShortcutModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt similarity index 77% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/ShortcutModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt index b55b82446d..e81bc4b370 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ShortcutModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ShortcutRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/ShortcutRow.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt index 6653732dcd..7ead793fab 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ShortcutRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.Arrangement diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/SimpleMappingController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/SimpleMappingController.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt index 7ea2439531..2e36b9f33f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/SimpleMappingController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.PerformActionsUseCase diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt similarity index 80% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt index 7023705558..2e52b19f7f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.constraints.ConstraintState import io.github.sds100.keymapper.keymaps.KeyMap diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt index b9477628fa..d01c30fbe5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import android.accessibilityservice.AccessibilityService import android.os.SystemClock diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt index 4da498759e..b13fe1e08d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DetectScreenOffKeyEventsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import android.view.InputDevice import android.view.KeyEvent diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DpadMotionEventTracker.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DpadMotionEventTracker.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt index adc5cc98a3..df0b59f33d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/DpadMotionEventTracker.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import android.view.InputDevice import android.view.KeyEvent diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/ParallelTriggerActionPerformer.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/detection/ParallelTriggerActionPerformer.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt index 4652988592..43da4593ce 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/ParallelTriggerActionPerformer.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.ActionData diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/SequenceTriggerActionPerformer.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/detection/SequenceTriggerActionPerformer.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt index 1a0d8f6c9d..15d5540e4b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/SequenceTriggerActionPerformer.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.PerformActionsUseCase diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt index 1acae21635..256ff28034 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.actions.PerformActionsUseCase import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/DisplayLogUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/logging/DisplayLogUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt index 76b89b216c..8eab7cdd9a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/DisplayLogUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.logging +package io.github.sds100.keymapper.base.logging import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.clipboard.ClipboardAdapter diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/KeyMapperLoggingTree.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/logging/KeyMapperLoggingTree.kt rename to base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt index df7a5faaff..bcc9851916 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/KeyMapperLoggingTree.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.logging +package io.github.sds100.keymapper.base.logging import android.util.Log import io.github.sds100.keymapper.data.Keys diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogEntry.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntry.kt similarity index 71% rename from app/src/main/java/io/github/sds100/keymapper/logging/LogEntry.kt rename to base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntry.kt index 261a190787..63daba0386 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogEntry.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntry.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.logging +package io.github.sds100.keymapper.base.logging data class LogEntry( diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogEntryEntityMapper.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryEntityMapper.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/logging/LogEntryEntityMapper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryEntityMapper.kt index 18d8dd6826..76ac306c34 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogEntryEntityMapper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryEntityMapper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.logging +package io.github.sds100.keymapper.base.logging import io.github.sds100.keymapper.data.entities.LogEntryEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogEntryListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt similarity index 81% rename from app/src/main/java/io/github/sds100/keymapper/logging/LogEntryListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt index 7f06ca55bc..fc2b13a859 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogEntryListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.logging +package io.github.sds100.keymapper.base.logging import io.github.sds100.keymapper.util.ui.TintType diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/logging/LogFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt index 30b8198880..c704a7a2b4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.logging +package io.github.sds100.keymapper.base.logging import android.content.Intent import android.os.Bundle diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt similarity index 87% rename from app/src/main/java/io/github/sds100/keymapper/logging/LogRepository.kt rename to base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt index 4ee9a218db..562f0b8b50 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.logging +package io.github.sds100.keymapper.base.logging import io.github.sds100.keymapper.data.entities.LogEntryEntity import io.github.sds100.keymapper.common.state.State diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogSeverity.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogSeverity.kt similarity index 55% rename from app/src/main/java/io/github/sds100/keymapper/logging/LogSeverity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/logging/LogSeverity.kt index a412d116af..440b3978f9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogSeverity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogSeverity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.logging +package io.github.sds100.keymapper.base.logging enum class LogSeverity { diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogUtils.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/logging/LogUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/logging/LogUtils.kt index b5e341aae1..b90655fa12 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.logging +package io.github.sds100.keymapper.base.logging import io.github.sds100.keymapper.data.entities.LogEntryEntity import io.github.sds100.keymapper.system.files.FileUtils diff --git a/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt index 835f2e95db..315de51d69 100644 --- a/app/src/main/java/io/github/sds100/keymapper/logging/LogViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.logging +package io.github.sds100.keymapper.base.logging import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingTapTarget.kt b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingTapTarget.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingTapTarget.kt rename to base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingTapTarget.kt index b24f1b41db..3f2f2db2ed 100644 --- a/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingTapTarget.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingTapTarget.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.onboarding +package io.github.sds100.keymapper.base.onboarding import androidx.annotation.StringRes import io.github.sds100.keymapper.R diff --git a/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt index 3998becd1b..e5cf0609e0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/onboarding/OnboardingUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.onboarding +package io.github.sds100.keymapper.base.onboarding import android.content.Context import androidx.datastore.preferences.core.Preferences diff --git a/app/src/main/java/io/github/sds100/keymapper/purchasing/ProductId.kt b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/ProductId.kt similarity index 79% rename from app/src/main/java/io/github/sds100/keymapper/purchasing/ProductId.kt rename to base/src/main/java/io/github/sds100/keymapper/base/purchasing/ProductId.kt index ca745fe7bc..e5fe69ec36 100644 --- a/app/src/main/java/io/github/sds100/keymapper/purchasing/ProductId.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/ProductId.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.purchasing +package io.github.sds100.keymapper.base.purchasing enum class ProductId(val packageId: String, val entitlementId: String) { ASSISTANT_TRIGGER("assistant_trigger", "assistant_trigger"), diff --git a/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingError.kt b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt similarity index 93% rename from app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingError.kt rename to base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt index 84e804e748..4d20674641 100644 --- a/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingError.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.purchasing +package io.github.sds100.keymapper.base.purchasing import io.github.sds100.keymapper.common.result.Error diff --git a/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt similarity index 91% rename from app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManager.kt rename to base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt index b072f27dd7..289f03a58e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.purchasing +package io.github.sds100.keymapper.base.purchasing import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.state.State diff --git a/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsController.kt rename to base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt index 0d27aa95bd..b7e9ec838e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.reroutekeyevents +package io.github.sds100.keymapper.base.reroutekeyevents import android.view.KeyEvent import io.github.sds100.keymapper.system.devices.InputDeviceInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt index f78f79c506..817df82a26 100644 --- a/app/src/main/java/io/github/sds100/keymapper/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.reroutekeyevents +package io.github.sds100.keymapper.base.reroutekeyevents import android.content.Context import android.os.Build diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/Android11BugWorkaroundSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/settings/Android11BugWorkaroundSettingsFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt index 63e0bb680f..37be5f5f1e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/Android11BugWorkaroundSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.settings +package io.github.sds100.keymapper.base.settings import android.os.Bundle import android.view.View diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/AutomaticallyChangeImeSettings.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/settings/AutomaticallyChangeImeSettings.kt rename to base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt index fc29e7cbb1..22c9470ce0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/AutomaticallyChangeImeSettings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.settings +package io.github.sds100.keymapper.base.settings import android.os.Build import android.os.Bundle diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/BaseSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/settings/BaseSettingsFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt index 2083167bc0..0dd5b966bc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/BaseSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.settings +package io.github.sds100.keymapper.base.settings import android.os.Bundle import android.view.View diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt index 541b14d365..d25502c550 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/ConfigSettingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.settings +package io.github.sds100.keymapper.base.settings import androidx.datastore.preferences.core.Preferences import io.github.sds100.keymapper.actions.sound.SoundFileInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/DefaultOptionsSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/settings/DefaultOptionsSettingsFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt index 1fc06d45c7..044a44bb49 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/DefaultOptionsSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.settings +package io.github.sds100.keymapper.base.settings import android.os.Bundle import android.view.View diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/ImePickerSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/settings/ImePickerSettingsFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt index b3ff501e59..cbbbdb90d4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/ImePickerSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.settings +package io.github.sds100.keymapper.base.settings import android.os.Build import android.os.Bundle diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/MainSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/settings/MainSettingsFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt index 9fd92a0f2c..06909ad48b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/MainSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.settings +package io.github.sds100.keymapper.base.settings import android.annotation.SuppressLint import android.content.ActivityNotFoundException diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsUtils.kt similarity index 93% rename from app/src/main/java/io/github/sds100/keymapper/settings/SettingsUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsUtils.kt index 78f443825d..2e849b24d5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.settings +package io.github.sds100.keymapper.base.settings import android.content.Context import androidx.annotation.StringRes diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt index a164ba5fe5..d802d569c2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/SettingsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.settings +package io.github.sds100.keymapper.base.settings import androidx.datastore.preferences.core.Preferences import androidx.lifecycle.ViewModel diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/ShizukuSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/settings/ShizukuSettingsFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt index 7f28b4f3b8..950eacbdcf 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/ShizukuSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.settings +package io.github.sds100.keymapper.base.settings import android.os.Bundle import android.view.View diff --git a/app/src/main/java/io/github/sds100/keymapper/settings/ThemeUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ThemeUtils.kt similarity index 74% rename from app/src/main/java/io/github/sds100/keymapper/settings/ThemeUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/settings/ThemeUtils.kt index 1b3e43f8d4..f8bbd41009 100644 --- a/app/src/main/java/io/github/sds100/keymapper/settings/ThemeUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ThemeUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.settings +package io.github.sds100.keymapper.base.settings diff --git a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapter.kt b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuAdapter.kt similarity index 78% rename from app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapter.kt rename to base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuAdapter.kt index 2c93111963..744c5e1ddb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapter.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuAdapter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.shizuku +package io.github.sds100.keymapper.base.shizuku import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapterImpl.kt b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuAdapterImpl.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapterImpl.kt rename to base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuAdapterImpl.kt index 529332dbbf..9f0b7b2f3f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuAdapterImpl.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuAdapterImpl.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.shizuku +package io.github.sds100.keymapper.base.shizuku import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.apps.isAppInstalledFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuInputEventInjector.kt b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuInputEventInjector.kt rename to base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt index 2b812d21c0..6031cd4600 100644 --- a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuInputEventInjector.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.shizuku +package io.github.sds100.keymapper.base.shizuku import android.annotation.SuppressLint import android.content.Context diff --git a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuUtils.kt similarity index 91% rename from app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuUtils.kt index 36231c1d33..226d827bfe 100644 --- a/app/src/main/java/io/github/sds100/keymapper/shizuku/ShizukuUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.shizuku +package io.github.sds100.keymapper.base.shizuku import android.os.Build diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/SortBottomSheetContent.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/sorting/SortBottomSheetContent.kt rename to base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt index fbfedd964e..266b3ea817 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/SortBottomSheetContent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.sorting +package io.github.sds100.keymapper.base.sorting import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedVisibility diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/SortField.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortField.kt similarity index 74% rename from app/src/main/java/io/github/sds100/keymapper/sorting/SortField.kt rename to base/src/main/java/io/github/sds100/keymapper/base/sorting/SortField.kt index f7831ad790..aac5250d86 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/SortField.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortField.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.sorting +package io.github.sds100.keymapper.base.sorting import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/SortFieldOrder.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortFieldOrder.kt similarity index 76% rename from app/src/main/java/io/github/sds100/keymapper/sorting/SortFieldOrder.kt rename to base/src/main/java/io/github/sds100/keymapper/base/sorting/SortFieldOrder.kt index d006a8b385..503f8136e8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/SortFieldOrder.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortFieldOrder.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.sorting +package io.github.sds100.keymapper.base.sorting import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/SortKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/sorting/SortKeyMapsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt index fb4dac1ec6..4132156275 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/SortKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.sorting +package io.github.sds100.keymapper.base.sorting import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/SortOrder.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortOrder.kt similarity index 86% rename from app/src/main/java/io/github/sds100/keymapper/sorting/SortOrder.kt rename to base/src/main/java/io/github/sds100/keymapper/base/sorting/SortOrder.kt index 60130d549d..6f52942675 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/SortOrder.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortOrder.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.sorting +package io.github.sds100.keymapper.base.sorting import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/SortViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortViewModel.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/sorting/SortViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/sorting/SortViewModel.kt index 70cdbb1181..fd7ab6ed4a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/SortViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.sorting +package io.github.sds100.keymapper.base.sorting import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapActionsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapActionsComparator.kt rename to base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt index e8330c09dd..624f49cce9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapActionsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.sorting.comparators +package io.github.sds100.keymapper.base.sorting.comparators import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.DisplayActionUseCase diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapConstraintsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapConstraintsComparator.kt rename to base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt index 3814c1cf42..edeec8888a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapConstraintsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.sorting.comparators +package io.github.sds100.keymapper.base.sorting.comparators import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.Success diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapOptionsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapOptionsComparator.kt similarity index 93% rename from app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapOptionsComparator.kt rename to base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapOptionsComparator.kt index 27cf6c9ed4..d68241a13c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapOptionsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapOptionsComparator.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.sorting.comparators +package io.github.sds100.keymapper.base.sorting.comparators import io.github.sds100.keymapper.keymaps.KeyMap diff --git a/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapTriggerComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapTriggerComparator.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapTriggerComparator.kt rename to base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapTriggerComparator.kt index 47ef0131aa..9b46256914 100644 --- a/app/src/main/java/io/github/sds100/keymapper/sorting/comparators/KeyMapTriggerComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapTriggerComparator.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.sorting.comparators +package io.github.sds100.keymapper.base.sorting.comparators import io.github.sds100.keymapper.keymaps.KeyMap diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/AssistantTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/trigger/AssistantTriggerKey.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt index 1be79413e4..a68f512e3a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/AssistantTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.data.entities.AssistantTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/AssistantTriggerType.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerType.kt similarity index 92% rename from app/src/main/java/io/github/sds100/keymapper/trigger/AssistantTriggerType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerType.kt index 57a5b82736..c7ec0a2b9e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/AssistantTriggerType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger /** * The type of assistant that triggers an assistant trigger key. The voice assistant diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index 2a04b6fa70..ee5ed34012 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import android.view.KeyEvent import androidx.compose.material.icons.Icons diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/ChooseTriggerKeyDeviceModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/ChooseTriggerKeyDeviceModel.kt similarity index 70% rename from app/src/main/java/io/github/sds100/keymapper/trigger/ChooseTriggerKeyDeviceModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/ChooseTriggerKeyDeviceModel.kt index 37ede588b9..efc216cd3f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/ChooseTriggerKeyDeviceModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/ChooseTriggerKeyDeviceModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger data class ChooseTriggerKeyDeviceModel( val triggerKeyUid: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/FingerprintTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/trigger/FingerprintTriggerKey.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt index a5240ff1da..1712b8d358 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/FingerprintTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.data.entities.FingerprintTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/FloatingButtonKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/trigger/FloatingButtonKey.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt index a316f326fa..c310941f4d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/FloatingButtonKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout import io.github.sds100.keymapper.data.entities.FloatingButtonKeyEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/KeyCodeTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/trigger/KeyCodeTriggerKey.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt index 91d5096ac2..36e8bc21d1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/KeyCodeTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/KeyEventDetectionSource.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyEventDetectionSource.kt similarity index 63% rename from app/src/main/java/io/github/sds100/keymapper/trigger/KeyEventDetectionSource.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyEventDetectionSource.kt index 66f147dfc8..c231beff8a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/KeyEventDetectionSource.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyEventDetectionSource.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger enum class KeyEventDetectionSource { ACCESSIBILITY_SERVICE, diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/KeyMapListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt similarity index 93% rename from app/src/main/java/io/github/sds100/keymapper/trigger/KeyMapListItemModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt index accb6bf73b..a3039eb25e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/KeyMapListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import androidx.compose.ui.graphics.vector.ImageVector import io.github.sds100.keymapper.constraints.ConstraintMode diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerButtonRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerButtonRow.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt index eead8308f3..4a00ddaf69 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerButtonRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerState.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt similarity index 86% rename from app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt index 3aab46eb4a..dcab40a81d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger sealed class RecordTriggerState { diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt index 6080c1b075..8e4387fa1e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordTriggerUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import android.view.KeyEvent import io.github.sds100.keymapper.common.result.Result diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordedKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt similarity index 73% rename from app/src/main/java/io/github/sds100/keymapper/trigger/RecordedKey.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt index a5dd97f3b8..cfc961f291 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/RecordedKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger data class RecordedKey( diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardBottomSheet.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt index b6582cbee3..4cc1e68246 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardState.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardState.kt similarity index 88% rename from app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardState.kt index c21861f62c..4870c06627 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger data class SetupGuiKeyboardState( val isKeyboardInstalled: Boolean, diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt index 5d5a4482fb..d1d258f8cb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/SetupGuiKeyboardUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.system.apps.PackageInfo diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/Trigger.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/trigger/Trigger.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt index 0a46afc803..255be60286 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/Trigger.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.data.entities.AssistantTriggerKeyEntity diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerError.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt similarity index 93% rename from app/src/main/java/io/github/sds100/keymapper/trigger/TriggerError.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt index 4b4704dddc..8f20573b74 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerError.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger enum class TriggerError(val isFixable: Boolean) { diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/trigger/TriggerErrorSnapshot.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt index 7966e10d32..2923ce138c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import android.os.Build import android.view.KeyEvent diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKey.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt index 0f6c89a17d..9fb3636830 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.keymaps.ClickType import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyDevice.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyDevice.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt index 29281fc73b..e99b96af69 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyDevice.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.system.devices.InputDeviceInfo import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt index 2bc355370a..8616773bd5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.draggable diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyOptionsBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyOptionsBottomSheet.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt index 5de6ed7cbc..1247f9664e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyOptionsBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyShortcut.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyShortcut.kt similarity index 66% rename from app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyShortcut.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyShortcut.kt index 26c90c031c..c94755cbeb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerKeyShortcut.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyShortcut.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger enum class TriggerKeyShortcut { ASSISTANT, diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerMode.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/trigger/TriggerMode.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt index 60c573a855..250b8adfc5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerMode.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.keymaps.ClickType import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt index b2c88cf3b8..ba49091ee7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.trigger +package io.github.sds100.keymapper.base.trigger import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/io/github/sds100/keymapper/util/BundleUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/BundleUtils.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/util/BundleUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/BundleUtils.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/util/CoroutineUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/CoroutineUtils.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/util/CoroutineUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/CoroutineUtils.kt index e5aa30d7f7..e9324727c9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/CoroutineUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/CoroutineUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import androidx.fragment.app.Fragment import androidx.lifecycle.Lifecycle diff --git a/app/src/main/java/io/github/sds100/keymapper/util/DispatcherProvider.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/DispatcherProvider.kt similarity index 90% rename from app/src/main/java/io/github/sds100/keymapper/util/DispatcherProvider.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/DispatcherProvider.kt index 6418847f1b..dc0fe47a93 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/DispatcherProvider.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/DispatcherProvider.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/io/github/sds100/keymapper/util/DisplayUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/DisplayUtils.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/util/DisplayUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/DisplayUtils.kt index b5e625cd98..cfe2a5829f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/DisplayUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/DisplayUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import android.content.Context import android.graphics.Point diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ErrorUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/util/ErrorUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt index 624204e37e..e0995c7970 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ErrorUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import android.content.pm.PackageManager import io.github.sds100.keymapper.R diff --git a/app/src/main/java/io/github/sds100/keymapper/util/FilterUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/util/FilterUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt index 99466ff20e..7392bb37f4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/FilterUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.util.ui.ISearchable diff --git a/app/src/main/java/io/github/sds100/keymapper/util/InputEventType.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/InputEventType.kt similarity index 57% rename from app/src/main/java/io/github/sds100/keymapper/util/InputEventType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/InputEventType.kt index dea8669bf9..0e2083e662 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/InputEventType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/InputEventType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util enum class InputEventType { DOWN_UP, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ListUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ListUtils.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/util/ListUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ListUtils.kt index 621a55cbeb..f22dbe77a2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ListUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ListUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import java.util.Collections diff --git a/app/src/main/java/io/github/sds100/keymapper/util/LoggingUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/LoggingUtils.kt similarity index 85% rename from app/src/main/java/io/github/sds100/keymapper/util/LoggingUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/LoggingUtils.kt index 594e73f4fc..0485b2502c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/LoggingUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/LoggingUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import timber.log.Timber import kotlin.system.measureTimeMillis diff --git a/app/src/main/java/io/github/sds100/keymapper/util/MapUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/MapUtils.kt similarity index 74% rename from app/src/main/java/io/github/sds100/keymapper/util/MapUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/MapUtils.kt index 33786ad426..c0d124018c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/MapUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/MapUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util diff --git a/app/src/main/java/io/github/sds100/keymapper/util/MathUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/MathUtils.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/MathUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/MathUtils.kt index 8b2037c7d6..a77c7986d9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/MathUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/MathUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import android.graphics.Point import kotlin.math.atan2 diff --git a/app/src/main/java/io/github/sds100/keymapper/util/PreferenceDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/PreferenceDelegate.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/util/PreferenceDelegate.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/PreferenceDelegate.kt index 7c8c9988a5..cf2e1245dc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/PreferenceDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/PreferenceDelegate.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import androidx.datastore.preferences.core.Preferences import io.github.sds100.keymapper.data.repositories.PreferenceRepository diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ServiceEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ServiceEvent.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/ServiceEvent.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ServiceEvent.kt index 2cbc56b280..4d08bb3de1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ServiceEvent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ServiceEvent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import android.os.Parcelable import io.github.sds100.keymapper.actions.ActionData diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ShareUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ShareUtils.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/ShareUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ShareUtils.kt index 8b305ed2d0..5051b20b55 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ShareUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ShareUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import android.app.PendingIntent import android.content.ActivityNotFoundException diff --git a/app/src/main/java/io/github/sds100/keymapper/util/SharedPrefsDataStoreWrapper.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/SharedPrefsDataStoreWrapper.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/SharedPrefsDataStoreWrapper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/SharedPrefsDataStoreWrapper.kt index b3b484b3ec..fc6b45997a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/SharedPrefsDataStoreWrapper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/SharedPrefsDataStoreWrapper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import androidx.datastore.preferences.core.booleanPreferencesKey import androidx.datastore.preferences.core.doublePreferencesKey diff --git a/app/src/main/java/io/github/sds100/keymapper/util/SizeKM.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/SizeKM.kt similarity index 78% rename from app/src/main/java/io/github/sds100/keymapper/util/SizeKM.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/SizeKM.kt index db92edb679..7656e5ac05 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/SizeKM.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/SizeKM.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import kotlinx.serialization.Serializable diff --git a/app/src/main/java/io/github/sds100/keymapper/util/StringUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/StringUtils.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/util/StringUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/StringUtils.kt index d1e6ca1f60..8e7d048ef9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/StringUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/StringUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import androidx.annotation.IntRange import kotlin.math.roundToInt diff --git a/app/src/main/java/io/github/sds100/keymapper/util/TimeUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/TimeUtils.kt similarity index 86% rename from app/src/main/java/io/github/sds100/keymapper/util/TimeUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/TimeUtils.kt index 633e084da4..a018df00f4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/TimeUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/TimeUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import java.time.format.DateTimeFormatter import java.time.format.FormatStyle diff --git a/app/src/main/java/io/github/sds100/keymapper/util/TreeNode.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/TreeNode.kt similarity index 89% rename from app/src/main/java/io/github/sds100/keymapper/util/TreeNode.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/TreeNode.kt index 52e63d0e30..7da92fbbbf 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/TreeNode.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/TreeNode.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util data class TreeNode(val value: T, val children: MutableList> = mutableListOf()) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/UserHandleUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/UserHandleUtils.kt similarity index 82% rename from app/src/main/java/io/github/sds100/keymapper/util/UserHandleUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/UserHandleUtils.kt index 280bf34ddc..96f7974de5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/UserHandleUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/UserHandleUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import android.os.UserHandle diff --git a/app/src/main/java/io/github/sds100/keymapper/util/UuidGenerator.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/UuidGenerator.kt similarity index 81% rename from app/src/main/java/io/github/sds100/keymapper/util/UuidGenerator.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/UuidGenerator.kt index 56e737dc74..740f076459 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/UuidGenerator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/UuidGenerator.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util import java.util.UUID diff --git a/app/src/main/java/io/github/sds100/keymapper/util/VersionHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/VersionHelper.kt similarity index 90% rename from app/src/main/java/io/github/sds100/keymapper/util/VersionHelper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/VersionHelper.kt index 55f7f0238c..5938197517 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/VersionHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/VersionHelper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.util object VersionHelper { diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/BindingAdapters.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/BindingAdapters.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/BindingAdapters.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/BindingAdapters.kt index 53aaa33b60..fa9a2e047a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/BindingAdapters.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/BindingAdapters.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import android.content.Context import android.content.res.ColorStateList diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/CheckBoxListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/CheckBoxListItem.kt similarity index 71% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/CheckBoxListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/CheckBoxListItem.kt index 1c1f8a04ae..ca6419d2d6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/CheckBoxListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/CheckBoxListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui data class CheckBoxListItem( override val id: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ChooseAppStoreModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ChooseAppStoreModel.kt similarity index 75% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/ChooseAppStoreModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/ChooseAppStoreModel.kt index 95dac989c3..051b7cb1a6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ChooseAppStoreModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ChooseAppStoreModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui data class ChooseAppStoreModel( val playStoreLink: String? = null, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/DefaultSimpleListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/DefaultSimpleListItem.kt similarity index 92% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/DefaultSimpleListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/DefaultSimpleListItem.kt index 43915aabf0..325da15f71 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/DefaultSimpleListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/DefaultSimpleListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui data class DefaultSimpleListItem( override val id: String, diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/DialogUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/DialogUtils.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/DialogUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/DialogUtils.kt index 17a8c261eb..84fd86daf6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/DialogUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/DialogUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import android.app.Dialog import android.content.Context diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/EpoxyRecyclerViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/EpoxyRecyclerViewModelHelper.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/EpoxyRecyclerViewModelHelper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/EpoxyRecyclerViewModelHelper.kt index 1bdcd6444b..145673c30b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/EpoxyRecyclerViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/EpoxyRecyclerViewModelHelper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import com.airbnb.epoxy.EpoxyController import io.github.sds100.keymapper.checkbox diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ISearchable.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ISearchable.kt similarity index 57% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/ISearchable.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/ISearchable.kt index 4cd641e07a..90bcae0997 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ISearchable.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ISearchable.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui interface ISearchable { fun getSearchableString(): String diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/IconInfo.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/IconInfo.kt similarity index 72% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/IconInfo.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/IconInfo.kt index b13459c8fa..c6e56da5a6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/IconInfo.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/IconInfo.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import android.graphics.drawable.Drawable diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/LinkType.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/LinkType.kt similarity index 54% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/LinkType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/LinkType.kt index b5034e3f55..4b262c611a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/LinkType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/LinkType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui enum class LinkType { HIDDEN, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ListItem.kt new file mode 100644 index 0000000000..cbd3fb8838 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ListItem.kt @@ -0,0 +1,5 @@ +package io.github.sds100.keymapper.base.util.ui + +interface ListItem { + val id: String +} diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/MultiChoiceItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/MultiChoiceItem.kt similarity index 67% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/MultiChoiceItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/MultiChoiceItem.kt index 6b7f722d5b..089460eb5a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/MultiChoiceItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/MultiChoiceItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui data class MultiChoiceItem(val id: ID, val label: String, val isChecked: Boolean = false) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/MultiSelectProvider.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/MultiSelectProvider.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/MultiSelectProvider.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/MultiSelectProvider.kt index 5d57e1e3b9..812451d9a2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/MultiSelectProvider.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/MultiSelectProvider.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavDestination.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/NavDestination.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavDestination.kt index 24180a1fa5..143b4126b5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavDestination.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.pinchscreen.PinchPickCoordinateResult diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavResult.kt similarity index 54% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/NavResult.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavResult.kt index a250e75864..51f39cc9ee 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavResult.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui data class NavResult(val key: String, val result: Any?) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigateEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigateEvent.kt similarity index 62% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/NavigateEvent.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigateEvent.kt index de01143425..faaf73c1fc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigateEvent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigateEvent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui data class NavigateEvent(val key: String, val destination: NavDestination<*>) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigationUtils.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigationUtils.kt index 5faf2bd997..c70477c09a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigationUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import androidx.lifecycle.LifecycleOwner import androidx.navigation.NavBackStackEntry diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigationViewModel.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigationViewModel.kt index cabd333342..fcef386351 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigationViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import android.os.Bundle import androidx.core.os.bundleOf @@ -10,7 +10,7 @@ import androidx.navigation.fragment.findNavController import io.github.sds100.keymapper.NavAppDirections import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.ChooseActionFragment -import io.github.sds100.keymapper.actions.keyevent.ChooseKeyCodeFragment +import io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment import io.github.sds100.keymapper.actions.keyevent.ConfigKeyEventActionFragment import io.github.sds100.keymapper.actions.pinchscreen.PinchPickCoordinateResult import io.github.sds100.keymapper.actions.pinchscreen.PinchPickDisplayCoordinateFragment @@ -254,7 +254,7 @@ fun NavigationViewModel.sendNavResultFromBundle( } NavDestination.ID_KEY_CODE -> { - val keyCode = bundle.getInt(ChooseKeyCodeFragment.EXTRA_KEYCODE) + val keyCode = bundle.getInt(io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment.EXTRA_KEYCODE) onNavResult(NavResult(requestKey, keyCode)) } diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/OnPopupResponseEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/OnPopupResponseEvent.kt similarity index 59% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/OnPopupResponseEvent.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/OnPopupResponseEvent.kt index f1fbf713ec..02e79de124 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/OnPopupResponseEvent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/OnPopupResponseEvent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui data class OnPopupResponseEvent(val key: String, val response: Any?) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/PopupUi.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupUi.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/PopupUi.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupUi.kt index 1e821cd10d..dc056f7d6c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/PopupUi.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupUi.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/PopupViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/PopupViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt index 4fd2d30e4f..a3c8ac8545 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/PopupViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import android.content.Context import android.view.LayoutInflater diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonPairListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RadioButtonPairListItem.kt similarity index 86% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonPairListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/RadioButtonPairListItem.kt index a389a88150..c8e98e9f55 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonPairListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RadioButtonPairListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui data class RadioButtonPairListItem( diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonTripleListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RadioButtonTripleListItem.kt similarity index 89% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonTripleListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/RadioButtonTripleListItem.kt index 2797ceb619..5c1e83a5c0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/RadioButtonTripleListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RadioButtonTripleListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui data class RadioButtonTripleListItem( diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt index a56a89fdcb..ae36ed6006 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewUtils.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewUtils.kt index b45df33630..7a72a1a081 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/RecyclerViewUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import android.graphics.Rect import android.view.View diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceExt.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceExt.kt similarity index 100% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceExt.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceExt.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceProvider.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceProvider.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceProvider.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceProvider.kt index 83f6025d0b..ae954b5fd3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ResourceProvider.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceProvider.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import android.content.Context import android.graphics.drawable.Drawable diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SectionHeaderListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SectionHeaderListItem.kt similarity index 64% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/SectionHeaderListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/SectionHeaderListItem.kt index bd58117232..95ea851042 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SectionHeaderListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SectionHeaderListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui data class SectionHeaderListItem(override val id: String, val text: String) : ListItem diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SelectionState.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SelectionState.kt similarity index 76% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/SelectionState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/SelectionState.kt index e96cd1fb42..8f2290ad5e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SelectionState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SelectionState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui sealed class SelectionState { diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ShowPopupEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ShowPopupEvent.kt similarity index 57% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/ShowPopupEvent.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/ShowPopupEvent.kt index 0d97c59f52..f55a8df7fa 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ShowPopupEvent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ShowPopupEvent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui data class ShowPopupEvent(val key: String, val ui: PopupUi<*>) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SimpleRecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SimpleRecyclerViewFragment.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/SimpleRecyclerViewFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/SimpleRecyclerViewFragment.kt index e8ec640beb..9db67f1f56 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SimpleRecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SimpleRecyclerViewFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import android.view.LayoutInflater import android.view.ViewGroup diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMaximums.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderMaximums.kt similarity index 90% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMaximums.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderMaximums.kt index a8d814ba22..be8e537f49 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMaximums.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderMaximums.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui object SliderMaximums { diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMinimums.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderMinimums.kt similarity index 89% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMinimums.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderMinimums.kt index 0040a92cea..78d4d499a8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderMinimums.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderMinimums.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui object SliderMinimums { diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderStepSizes.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderStepSizes.kt similarity index 90% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/SliderStepSizes.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderStepSizes.kt index 5446d07de2..2a20ae7323 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SliderStepSizes.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderStepSizes.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui object SliderStepSizes { diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SnackBarUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SnackBarUtils.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/SnackBarUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/SnackBarUtils.kt index a39b2555b1..9e293fd3fa 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SnackBarUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SnackBarUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import androidx.coordinatorlayout.widget.CoordinatorLayout import io.github.sds100.keymapper.R diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/SquareImageButton.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SquareImageButton.kt similarity index 89% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/SquareImageButton.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/SquareImageButton.kt index b181e7b5fa..f01bea95e6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/SquareImageButton.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SquareImageButton.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import android.content.Context import android.util.AttributeSet diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/TextListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/TextListItem.kt similarity index 85% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/TextListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/TextListItem.kt index c05cfa8104..f063307908 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/TextListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/TextListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/TintType.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/TintType.kt similarity index 83% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/TintType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/TintType.kt index 2eaa3754ef..f159fc702c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/TintType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/TintType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import androidx.annotation.ColorInt diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/ViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/ViewModelHelper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt index 0040b48e76..9349a7d8dc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/ViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.Error diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/CheckBoxText.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CheckBoxText.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/CheckBoxText.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CheckBoxText.kt index b476a04113..bde306be9c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/CheckBoxText.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CheckBoxText.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/CollapsableFloatingActionButton.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CollapsableFloatingActionButton.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/CollapsableFloatingActionButton.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CollapsableFloatingActionButton.kt index 0da7372e08..df2dcf2b59 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/CollapsableFloatingActionButton.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CollapsableFloatingActionButton.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedVisibility diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/CompactChip.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CompactChip.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/CompactChip.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CompactChip.kt index e669f1733d..9b4c6fb1af 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/CompactChip.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CompactChip.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeChipModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeChipModel.kt similarity index 89% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeChipModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeChipModel.kt index fdbec776bb..93dc747a61 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeChipModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeChipModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose sealed class ComposeChipModel { abstract val id: String diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeDialogs.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeDialogs.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeDialogs.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeDialogs.kt index 067329b505..7a874392d6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeDialogs.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeDialogs.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeIconInfo.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeIconInfo.kt similarity index 82% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeIconInfo.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeIconInfo.kt index 9b5b28468e..81466178e1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ComposeIconInfo.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeIconInfo.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.ui.graphics.vector.ImageVector diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/DragDropState.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/DragDropState.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/DragDropState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/DragDropState.kt index 2dfb597db2..b32e4b2bd8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/DragDropState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/DragDropState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.Spring diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/DraggableItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/DraggableItem.kt similarity index 95% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/DraggableItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/DraggableItem.kt index b0653c9fb4..c902fef004 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/DraggableItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/DraggableItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/KeyMapperDropdownMenu.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperDropdownMenu.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/KeyMapperDropdownMenu.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperDropdownMenu.kt index eafba75c5d..d2246f9cbe 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/KeyMapperDropdownMenu.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperDropdownMenu.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/KeyMapperSliderThumb.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperSliderThumb.kt similarity index 89% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/KeyMapperSliderThumb.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperSliderThumb.kt index 2ac4d27e3d..450f33a0f3 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/KeyMapperSliderThumb.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperSliderThumb.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.material3.SliderDefaults diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/KeyMapperTapTarget.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperTapTarget.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/KeyMapperTapTarget.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperTapTarget.kt index 71313f5f0b..87d7dce0be 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/KeyMapperTapTarget.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperTapTarget.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.Column diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ListItemFixError.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ListItemFixError.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ListItemFixError.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ListItemFixError.kt index bf4f4d48ea..6ca23d3f0c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/ListItemFixError.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ListItemFixError.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/OptionsHeaderRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/OptionsHeaderRow.kt similarity index 94% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/OptionsHeaderRow.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/OptionsHeaderRow.kt index af867d2133..5c5b6bde74 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/OptionsHeaderRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/OptionsHeaderRow.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/RadioButtonText.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/RadioButtonText.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/RadioButtonText.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/RadioButtonText.kt index 84f4b07702..bd9d77c4c1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/RadioButtonText.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/RadioButtonText.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/SearchAppBarActions.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SearchAppBarActions.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/SearchAppBarActions.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SearchAppBarActions.kt index 5ee078990d..e9b66c8e26 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/SearchAppBarActions.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SearchAppBarActions.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.foundation.layout.RowScope import androidx.compose.material.icons.Icons diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/SimpleListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItem.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/SimpleListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItem.kt index 0c758c99e7..2082a6e257 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/SimpleListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/SimpleListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItemModel.kt similarity index 84% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/SimpleListItemModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItemModel.kt index a233865011..6a7bb41dfc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/SimpleListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItemModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose data class SimpleListItemGroup(val header: String, val items: List) diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/SliderOptionText.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SliderOptionText.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/SliderOptionText.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SliderOptionText.kt index 5cf9059ee7..e5dd02633d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/SliderOptionText.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SliderOptionText.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.interaction.MutableInteractionSource diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/UriHandlerUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/UriHandlerUtils.kt similarity index 88% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/UriHandlerUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/UriHandlerUtils.kt index 59b70ff257..919cc15b31 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/UriHandlerUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/UriHandlerUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import android.content.Context import android.widget.Toast diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/WindowSizeClassExt.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/WindowSizeClassExt.kt similarity index 96% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/WindowSizeClassExt.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/WindowSizeClassExt.kt index aa727713e5..32ff963cd1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/WindowSizeClassExt.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/WindowSizeClassExt.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose +package io.github.sds100.keymapper.base.util.ui.compose import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/AdGroup.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/AdGroup.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/AdGroup.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/AdGroup.kt index 05f0f4db8b..1129508801 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/AdGroup.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/AdGroup.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose.icons +package io.github.sds100.keymapper.base.util.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/HomeIotDevice.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/HomeIotDevice.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/HomeIotDevice.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/HomeIotDevice.kt index 2767867d43..61fb9c4fb4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/HomeIotDevice.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/HomeIotDevice.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose.icons +package io.github.sds100.keymapper.base.util.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/Import.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/Import.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/Import.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/Import.kt index 378e634e9e..6f7af442e8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/Import.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/Import.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose.icons +package io.github.sds100.keymapper.base.util.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/InstantMix.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/InstantMix.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/InstantMix.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/InstantMix.kt index 18be2e6859..89c502d388 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/InstantMix.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/InstantMix.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose.icons +package io.github.sds100.keymapper.base.util.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/JumpToElement.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/JumpToElement.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/JumpToElement.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/JumpToElement.kt index 498d3bc295..730a1d0600 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/JumpToElement.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/JumpToElement.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose.icons +package io.github.sds100.keymapper.base.util.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/KeyMapperIcons.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/KeyMapperIcons.kt new file mode 100644 index 0000000000..d5430290b0 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/KeyMapperIcons.kt @@ -0,0 +1,3 @@ +package io.github.sds100.keymapper.base.util.ui.compose.icons + +object KeyMapperIcons diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/MatchWord.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/MatchWord.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/MatchWord.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/MatchWord.kt index 41ed511db2..13da6b97d8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/MatchWord.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/MatchWord.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose.icons +package io.github.sds100.keymapper.base.util.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/NfcOff.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/NfcOff.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/NfcOff.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/NfcOff.kt index 9080fee645..97eacfdc47 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/NfcOff.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/NfcOff.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose.icons +package io.github.sds100.keymapper.base.util.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/TextSelectEnd.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TextSelectEnd.kt similarity index 98% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/TextSelectEnd.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TextSelectEnd.kt index 8edb9a2642..586470746e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/TextSelectEnd.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TextSelectEnd.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose.icons +package io.github.sds100.keymapper.base.util.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/TextSelectMoveForwardCharacter.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TextSelectMoveForwardCharacter.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/TextSelectMoveForwardCharacter.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TextSelectMoveForwardCharacter.kt index d7967f8586..54f601a195 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/TextSelectMoveForwardCharacter.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TextSelectMoveForwardCharacter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose.icons +package io.github.sds100.keymapper.base.util.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/TopPanelClose.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TopPanelClose.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/TopPanelClose.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TopPanelClose.kt index b1ea2034b8..3aa34a4207 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/TopPanelClose.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TopPanelClose.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose.icons +package io.github.sds100.keymapper.base.util.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/TopPanelOpen.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TopPanelOpen.kt similarity index 97% rename from app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/TopPanelOpen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TopPanelOpen.kt index 821435c66f..b5c0fda72b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/TopPanelOpen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TopPanelOpen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui.compose.icons +package io.github.sds100.keymapper.base.util.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/app/src/main/res/layout/activity_main.xml b/base/src/main/res/layout/activity_main.xml similarity index 100% rename from app/src/main/res/layout/activity_main.xml rename to base/src/main/res/layout/activity_main.xml diff --git a/app/src/main/res/layout/app_bar_recyclerview_fragment.xml b/base/src/main/res/layout/app_bar_recyclerview_fragment.xml similarity index 100% rename from app/src/main/res/layout/app_bar_recyclerview_fragment.xml rename to base/src/main/res/layout/app_bar_recyclerview_fragment.xml diff --git a/app/src/main/res/layout/dialog_choose_app_store.xml b/base/src/main/res/layout/dialog_choose_app_store.xml similarity index 100% rename from app/src/main/res/layout/dialog_choose_app_store.xml rename to base/src/main/res/layout/dialog_choose_app_store.xml diff --git a/app/src/main/res/layout/dialog_edittext_number.xml b/base/src/main/res/layout/dialog_edittext_number.xml similarity index 100% rename from app/src/main/res/layout/dialog_edittext_number.xml rename to base/src/main/res/layout/dialog_edittext_number.xml diff --git a/app/src/main/res/layout/dialog_edittext_string.xml b/base/src/main/res/layout/dialog_edittext_string.xml similarity index 100% rename from app/src/main/res/layout/dialog_edittext_string.xml rename to base/src/main/res/layout/dialog_edittext_string.xml diff --git a/app/src/main/res/layout/dropdown_menu_popup_item.xml b/base/src/main/res/layout/dropdown_menu_popup_item.xml similarity index 100% rename from app/src/main/res/layout/dropdown_menu_popup_item.xml rename to base/src/main/res/layout/dropdown_menu_popup_item.xml diff --git a/app/src/main/res/layout/fragment_about.xml b/base/src/main/res/layout/fragment_about.xml similarity index 100% rename from app/src/main/res/layout/fragment_about.xml rename to base/src/main/res/layout/fragment_about.xml diff --git a/app/src/main/res/layout/fragment_choose_sound_file.xml b/base/src/main/res/layout/fragment_choose_sound_file.xml similarity index 100% rename from app/src/main/res/layout/fragment_choose_sound_file.xml rename to base/src/main/res/layout/fragment_choose_sound_file.xml diff --git a/app/src/main/res/layout/fragment_compose.xml b/base/src/main/res/layout/fragment_compose.xml similarity index 100% rename from app/src/main/res/layout/fragment_compose.xml rename to base/src/main/res/layout/fragment_compose.xml diff --git a/app/src/main/res/layout/fragment_compose_view.xml b/base/src/main/res/layout/fragment_compose_view.xml similarity index 100% rename from app/src/main/res/layout/fragment_compose_view.xml rename to base/src/main/res/layout/fragment_compose_view.xml diff --git a/app/src/main/res/layout/fragment_config_key_event.xml b/base/src/main/res/layout/fragment_config_key_event.xml similarity index 100% rename from app/src/main/res/layout/fragment_config_key_event.xml rename to base/src/main/res/layout/fragment_config_key_event.xml diff --git a/app/src/main/res/layout/fragment_pick_coordinate.xml b/base/src/main/res/layout/fragment_pick_coordinate.xml similarity index 100% rename from app/src/main/res/layout/fragment_pick_coordinate.xml rename to base/src/main/res/layout/fragment_pick_coordinate.xml diff --git a/app/src/main/res/layout/fragment_pinch_pick_coordinates.xml b/base/src/main/res/layout/fragment_pinch_pick_coordinates.xml similarity index 100% rename from app/src/main/res/layout/fragment_pinch_pick_coordinates.xml rename to base/src/main/res/layout/fragment_pinch_pick_coordinates.xml diff --git a/app/src/main/res/layout/fragment_preferences_with_appbar.xml b/base/src/main/res/layout/fragment_preferences_with_appbar.xml similarity index 100% rename from app/src/main/res/layout/fragment_preferences_with_appbar.xml rename to base/src/main/res/layout/fragment_preferences_with_appbar.xml diff --git a/app/src/main/res/layout/fragment_select_input_method.xml b/base/src/main/res/layout/fragment_select_input_method.xml similarity index 100% rename from app/src/main/res/layout/fragment_select_input_method.xml rename to base/src/main/res/layout/fragment_select_input_method.xml diff --git a/app/src/main/res/layout/fragment_simple_recyclerview.xml b/base/src/main/res/layout/fragment_simple_recyclerview.xml similarity index 100% rename from app/src/main/res/layout/fragment_simple_recyclerview.xml rename to base/src/main/res/layout/fragment_simple_recyclerview.xml diff --git a/app/src/main/res/layout/fragment_swipe_pick_coordinates.xml b/base/src/main/res/layout/fragment_swipe_pick_coordinates.xml similarity index 100% rename from app/src/main/res/layout/fragment_swipe_pick_coordinates.xml rename to base/src/main/res/layout/fragment_swipe_pick_coordinates.xml diff --git a/app/src/main/res/layout/list_item_about_item.xml b/base/src/main/res/layout/list_item_about_item.xml similarity index 100% rename from app/src/main/res/layout/list_item_about_item.xml rename to base/src/main/res/layout/list_item_about_item.xml diff --git a/app/src/main/res/layout/list_item_checkbox.xml b/base/src/main/res/layout/list_item_checkbox.xml similarity index 100% rename from app/src/main/res/layout/list_item_checkbox.xml rename to base/src/main/res/layout/list_item_checkbox.xml diff --git a/app/src/main/res/layout/list_item_fix_error.xml b/base/src/main/res/layout/list_item_fix_error.xml similarity index 100% rename from app/src/main/res/layout/list_item_fix_error.xml rename to base/src/main/res/layout/list_item_fix_error.xml diff --git a/app/src/main/res/layout/list_item_log_entry.xml b/base/src/main/res/layout/list_item_log_entry.xml similarity index 100% rename from app/src/main/res/layout/list_item_log_entry.xml rename to base/src/main/res/layout/list_item_log_entry.xml diff --git a/app/src/main/res/layout/list_item_radio_button_pair.xml b/base/src/main/res/layout/list_item_radio_button_pair.xml similarity index 100% rename from app/src/main/res/layout/list_item_radio_button_pair.xml rename to base/src/main/res/layout/list_item_radio_button_pair.xml diff --git a/app/src/main/res/layout/list_item_radio_button_triple.xml b/base/src/main/res/layout/list_item_radio_button_triple.xml similarity index 100% rename from app/src/main/res/layout/list_item_radio_button_triple.xml rename to base/src/main/res/layout/list_item_radio_button_triple.xml diff --git a/app/src/main/res/layout/list_item_simple.xml b/base/src/main/res/layout/list_item_simple.xml similarity index 100% rename from app/src/main/res/layout/list_item_simple.xml rename to base/src/main/res/layout/list_item_simple.xml diff --git a/app/src/main/res/menu/menu_log.xml b/base/src/main/res/menu/menu_log.xml similarity index 100% rename from app/src/main/res/menu/menu_log.xml rename to base/src/main/res/menu/menu_log.xml diff --git a/app/src/main/res/menu/menu_recyclerview_fragment.xml b/base/src/main/res/menu/menu_recyclerview_fragment.xml similarity index 100% rename from app/src/main/res/menu/menu_recyclerview_fragment.xml rename to base/src/main/res/menu/menu_recyclerview_fragment.xml diff --git a/app/src/main/res/menu/menu_settings.xml b/base/src/main/res/menu/menu_settings.xml similarity index 100% rename from app/src/main/res/menu/menu_settings.xml rename to base/src/main/res/menu/menu_settings.xml diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/base/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to base/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/base/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to base/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/base/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-hdpi/ic_launcher.png rename to base/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/base/src/main/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from app/src/main/res/mipmap-hdpi/ic_launcher_round.png rename to base/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/base/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-mdpi/ic_launcher.png rename to base/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/base/src/main/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from app/src/main/res/mipmap-mdpi/ic_launcher_round.png rename to base/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/base/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to base/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/base/src/main/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from app/src/main/res/mipmap-xhdpi/ic_launcher_round.png rename to base/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/base/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to base/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/base/src/main/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png rename to base/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/base/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to base/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/base/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename to base/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/app/src/main/res/navigation/nav_app.xml b/base/src/main/res/navigation/nav_app.xml similarity index 100% rename from app/src/main/res/navigation/nav_app.xml rename to base/src/main/res/navigation/nav_app.xml diff --git a/app/src/main/res/navigation/nav_config_keymap.xml b/base/src/main/res/navigation/nav_config_keymap.xml similarity index 100% rename from app/src/main/res/navigation/nav_config_keymap.xml rename to base/src/main/res/navigation/nav_config_keymap.xml diff --git a/app/src/main/res/navigation/nav_settings.xml b/base/src/main/res/navigation/nav_settings.xml similarity index 100% rename from app/src/main/res/navigation/nav_settings.xml rename to base/src/main/res/navigation/nav_settings.xml diff --git a/app/src/main/res/raw/caps_camera.kcm b/base/src/main/res/raw/caps_camera.kcm similarity index 100% rename from app/src/main/res/raw/caps_camera.kcm rename to base/src/main/res/raw/caps_camera.kcm diff --git a/base/src/main/java/values-ar/strings.xml b/base/src/main/res/values-ar/strings.xml similarity index 100% rename from base/src/main/java/values-ar/strings.xml rename to base/src/main/res/values-ar/strings.xml diff --git a/base/src/main/java/values-cs/strings.xml b/base/src/main/res/values-cs/strings.xml similarity index 100% rename from base/src/main/java/values-cs/strings.xml rename to base/src/main/res/values-cs/strings.xml diff --git a/base/src/main/java/values-de/strings.xml b/base/src/main/res/values-de/strings.xml similarity index 100% rename from base/src/main/java/values-de/strings.xml rename to base/src/main/res/values-de/strings.xml diff --git a/base/src/main/java/values-es/strings.xml b/base/src/main/res/values-es/strings.xml similarity index 100% rename from base/src/main/java/values-es/strings.xml rename to base/src/main/res/values-es/strings.xml diff --git a/base/src/main/java/values-fr/strings.xml b/base/src/main/res/values-fr/strings.xml similarity index 100% rename from base/src/main/java/values-fr/strings.xml rename to base/src/main/res/values-fr/strings.xml diff --git a/base/src/main/java/values-hu/strings.xml b/base/src/main/res/values-hu/strings.xml similarity index 100% rename from base/src/main/java/values-hu/strings.xml rename to base/src/main/res/values-hu/strings.xml diff --git a/base/src/main/java/values-id/strings.xml b/base/src/main/res/values-id/strings.xml similarity index 100% rename from base/src/main/java/values-id/strings.xml rename to base/src/main/res/values-id/strings.xml diff --git a/base/src/main/java/values-ka/strings.xml b/base/src/main/res/values-ka/strings.xml similarity index 100% rename from base/src/main/java/values-ka/strings.xml rename to base/src/main/res/values-ka/strings.xml diff --git a/base/src/main/java/values-ko/strings.xml b/base/src/main/res/values-ko/strings.xml similarity index 100% rename from base/src/main/java/values-ko/strings.xml rename to base/src/main/res/values-ko/strings.xml diff --git a/base/src/main/java/values-night/colors.xml b/base/src/main/res/values-night/colors.xml similarity index 100% rename from base/src/main/java/values-night/colors.xml rename to base/src/main/res/values-night/colors.xml diff --git a/base/src/main/java/values-pl/strings.xml b/base/src/main/res/values-pl/strings.xml similarity index 100% rename from base/src/main/java/values-pl/strings.xml rename to base/src/main/res/values-pl/strings.xml diff --git a/base/src/main/java/values-pt/strings.xml b/base/src/main/res/values-pt/strings.xml similarity index 100% rename from base/src/main/java/values-pt/strings.xml rename to base/src/main/res/values-pt/strings.xml diff --git a/base/src/main/java/values-ru/strings.xml b/base/src/main/res/values-ru/strings.xml similarity index 100% rename from base/src/main/java/values-ru/strings.xml rename to base/src/main/res/values-ru/strings.xml diff --git a/base/src/main/java/values-sk/strings.xml b/base/src/main/res/values-sk/strings.xml similarity index 100% rename from base/src/main/java/values-sk/strings.xml rename to base/src/main/res/values-sk/strings.xml diff --git a/base/src/main/java/values-tr/strings.xml b/base/src/main/res/values-tr/strings.xml similarity index 100% rename from base/src/main/java/values-tr/strings.xml rename to base/src/main/res/values-tr/strings.xml diff --git a/base/src/main/java/values-uk/strings.xml b/base/src/main/res/values-uk/strings.xml similarity index 100% rename from base/src/main/java/values-uk/strings.xml rename to base/src/main/res/values-uk/strings.xml diff --git a/base/src/main/java/values-vi/strings.xml b/base/src/main/res/values-vi/strings.xml similarity index 100% rename from base/src/main/java/values-vi/strings.xml rename to base/src/main/res/values-vi/strings.xml diff --git a/base/src/main/java/values-zh-rCN/strings.xml b/base/src/main/res/values-zh-rCN/strings.xml similarity index 100% rename from base/src/main/java/values-zh-rCN/strings.xml rename to base/src/main/res/values-zh-rCN/strings.xml diff --git a/base/src/main/java/values-zh-rTW/strings.xml b/base/src/main/res/values-zh-rTW/strings.xml similarity index 100% rename from base/src/main/java/values-zh-rTW/strings.xml rename to base/src/main/res/values-zh-rTW/strings.xml diff --git a/base/src/main/java/values/anim.xml b/base/src/main/res/values/anim.xml similarity index 100% rename from base/src/main/java/values/anim.xml rename to base/src/main/res/values/anim.xml diff --git a/base/src/main/java/values/colors.xml b/base/src/main/res/values/colors.xml similarity index 100% rename from base/src/main/java/values/colors.xml rename to base/src/main/res/values/colors.xml diff --git a/base/src/main/java/values/dimens.xml b/base/src/main/res/values/dimens.xml similarity index 100% rename from base/src/main/java/values/dimens.xml rename to base/src/main/res/values/dimens.xml diff --git a/base/src/main/java/values/prefs.xml b/base/src/main/res/values/prefs.xml similarity index 100% rename from base/src/main/java/values/prefs.xml rename to base/src/main/res/values/prefs.xml diff --git a/base/src/main/java/values/strings.xml b/base/src/main/res/values/strings.xml similarity index 100% rename from base/src/main/java/values/strings.xml rename to base/src/main/res/values/strings.xml diff --git a/base/src/main/java/values/styles.xml b/base/src/main/res/values/styles.xml similarity index 100% rename from base/src/main/java/values/styles.xml rename to base/src/main/res/values/styles.xml diff --git a/base/src/main/java/values/themes.xml b/base/src/main/res/values/themes.xml similarity index 100% rename from base/src/main/java/values/themes.xml rename to base/src/main/res/values/themes.xml diff --git a/app/src/main/res/xml/config_accessibility_service.xml b/base/src/main/res/xml/config_accessibility_service.xml similarity index 100% rename from app/src/main/res/xml/config_accessibility_service.xml rename to base/src/main/res/xml/config_accessibility_service.xml diff --git a/app/src/main/res/xml/device_admin.xml b/base/src/main/res/xml/device_admin.xml similarity index 100% rename from app/src/main/res/xml/device_admin.xml rename to base/src/main/res/xml/device_admin.xml diff --git a/app/src/main/res/xml/input_method.xml b/base/src/main/res/xml/input_method.xml similarity index 100% rename from app/src/main/res/xml/input_method.xml rename to base/src/main/res/xml/input_method.xml diff --git a/app/src/main/res/xml/keyboard_layouts.xml b/base/src/main/res/xml/keyboard_layouts.xml similarity index 100% rename from app/src/main/res/xml/keyboard_layouts.xml rename to base/src/main/res/xml/keyboard_layouts.xml diff --git a/app/src/main/res/xml/preferences_empty.xml b/base/src/main/res/xml/preferences_empty.xml similarity index 100% rename from app/src/main/res/xml/preferences_empty.xml rename to base/src/main/res/xml/preferences_empty.xml diff --git a/app/src/main/res/xml/provider_paths.xml b/base/src/main/res/xml/provider_paths.xml similarity index 100% rename from app/src/main/res/xml/provider_paths.xml rename to base/src/main/res/xml/provider_paths.xml diff --git a/app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt b/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt rename to base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt rename to base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt b/base/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt rename to base/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt b/base/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt rename to base/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt b/base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt rename to base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/TestLoggingTree.kt b/base/src/test/java/io/github/sds100/keymapper/TestLoggingTree.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/TestLoggingTree.kt rename to base/src/test/java/io/github/sds100/keymapper/TestLoggingTree.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt rename to base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt rename to base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt b/base/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt rename to base/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/constraints/ConstraintSnapshotTest.kt b/base/src/test/java/io/github/sds100/keymapper/constraints/ConstraintSnapshotTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/constraints/ConstraintSnapshotTest.kt rename to base/src/test/java/io/github/sds100/keymapper/constraints/ConstraintSnapshotTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/data/repositories/FakePreferenceRepository.kt b/base/src/test/java/io/github/sds100/keymapper/data/repositories/FakePreferenceRepository.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/data/repositories/FakePreferenceRepository.kt rename to base/src/test/java/io/github/sds100/keymapper/data/repositories/FakePreferenceRepository.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/data/repositories/KeyMapRepositoryTest.kt b/base/src/test/java/io/github/sds100/keymapper/data/repositories/KeyMapRepositoryTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/data/repositories/KeyMapRepositoryTest.kt rename to base/src/test/java/io/github/sds100/keymapper/data/repositories/KeyMapRepositoryTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt b/base/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt rename to base/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt rename to base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/keymaps/ProcessKeyMapGroupsForDetectionTest.kt b/base/src/test/java/io/github/sds100/keymapper/keymaps/ProcessKeyMapGroupsForDetectionTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/keymaps/ProcessKeyMapGroupsForDetectionTest.kt rename to base/src/test/java/io/github/sds100/keymapper/keymaps/ProcessKeyMapGroupsForDetectionTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt rename to base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt b/base/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt rename to base/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt b/base/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt rename to base/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt b/base/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt rename to base/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt b/base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt rename to base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/util/FlowUtils.kt b/base/src/test/java/io/github/sds100/keymapper/util/FlowUtils.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/util/FlowUtils.kt rename to base/src/test/java/io/github/sds100/keymapper/util/FlowUtils.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt b/base/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt rename to base/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt b/base/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt rename to base/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/util/TestConstraintSnapshot.kt b/base/src/test/java/io/github/sds100/keymapper/util/TestConstraintSnapshot.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/util/TestConstraintSnapshot.kt rename to base/src/test/java/io/github/sds100/keymapper/util/TestConstraintSnapshot.kt diff --git a/app/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt b/base/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt similarity index 100% rename from app/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt rename to base/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt diff --git a/app/src/test/resources/backup-manager-test/corrupt.json b/base/src/test/resources/backup-manager-test/corrupt.json similarity index 100% rename from app/src/test/resources/backup-manager-test/corrupt.json rename to base/src/test/resources/backup-manager-test/corrupt.json diff --git a/app/src/test/resources/backup-manager-test/empty.json b/base/src/test/resources/backup-manager-test/empty.json similarity index 100% rename from app/src/test/resources/backup-manager-test/empty.json rename to base/src/test/resources/backup-manager-test/empty.json diff --git a/app/src/test/resources/backup-manager-test/legacy-backup-test-data.json b/base/src/test/resources/backup-manager-test/legacy-backup-test-data.json similarity index 100% rename from app/src/test/resources/backup-manager-test/legacy-backup-test-data.json rename to base/src/test/resources/backup-manager-test/legacy-backup-test-data.json diff --git a/app/src/test/resources/backup-manager-test/restore-all-legacy-fingerprint-maps-no-version.json b/base/src/test/resources/backup-manager-test/restore-all-legacy-fingerprint-maps-no-version.json similarity index 100% rename from app/src/test/resources/backup-manager-test/restore-all-legacy-fingerprint-maps-no-version.json rename to base/src/test/resources/backup-manager-test/restore-all-legacy-fingerprint-maps-no-version.json diff --git a/app/src/test/resources/backup-manager-test/restore-all-legacy-fingerprint-maps.json b/base/src/test/resources/backup-manager-test/restore-all-legacy-fingerprint-maps.json similarity index 100% rename from app/src/test/resources/backup-manager-test/restore-all-legacy-fingerprint-maps.json rename to base/src/test/resources/backup-manager-test/restore-all-legacy-fingerprint-maps.json diff --git a/app/src/test/resources/backup-manager-test/restore-all.zip/data.json b/base/src/test/resources/backup-manager-test/restore-all.zip/data.json similarity index 100% rename from app/src/test/resources/backup-manager-test/restore-all.zip/data.json rename to base/src/test/resources/backup-manager-test/restore-all.zip/data.json diff --git a/app/src/test/resources/backup-manager-test/restore-all.zip/sounds/sound.ogg b/base/src/test/resources/backup-manager-test/restore-all.zip/sounds/sound.ogg similarity index 100% rename from app/src/test/resources/backup-manager-test/restore-all.zip/sounds/sound.ogg rename to base/src/test/resources/backup-manager-test/restore-all.zip/sounds/sound.ogg diff --git a/app/src/test/resources/backup-manager-test/restore-app-version-too-big.zip/data.json b/base/src/test/resources/backup-manager-test/restore-app-version-too-big.zip/data.json similarity index 100% rename from app/src/test/resources/backup-manager-test/restore-app-version-too-big.zip/data.json rename to base/src/test/resources/backup-manager-test/restore-app-version-too-big.zip/data.json diff --git a/app/src/test/resources/backup-manager-test/restore-keymap-db-version-too-big.json b/base/src/test/resources/backup-manager-test/restore-keymap-db-version-too-big.json similarity index 100% rename from app/src/test/resources/backup-manager-test/restore-keymap-db-version-too-big.json rename to base/src/test/resources/backup-manager-test/restore-keymap-db-version-too-big.json diff --git a/app/src/test/resources/backup-manager-test/restore-keymaps-no-db-version.json b/base/src/test/resources/backup-manager-test/restore-keymaps-no-db-version.json similarity index 100% rename from app/src/test/resources/backup-manager-test/restore-keymaps-no-db-version.json rename to base/src/test/resources/backup-manager-test/restore-keymaps-no-db-version.json diff --git a/app/src/test/resources/backup-manager-test/restore-legacy-fingerprint-map-version-too-big.json b/base/src/test/resources/backup-manager-test/restore-legacy-fingerprint-map-version-too-big.json similarity index 100% rename from app/src/test/resources/backup-manager-test/restore-legacy-fingerprint-map-version-too-big.json rename to base/src/test/resources/backup-manager-test/restore-legacy-fingerprint-map-version-too-big.json diff --git a/app/src/test/resources/backup-manager-test/restore-legacy-single-fingerprint-map.json b/base/src/test/resources/backup-manager-test/restore-legacy-single-fingerprint-map.json similarity index 100% rename from app/src/test/resources/backup-manager-test/restore-legacy-single-fingerprint-map.json rename to base/src/test/resources/backup-manager-test/restore-legacy-single-fingerprint-map.json diff --git a/app/src/test/resources/backup-manager-test/restore-many-keymaps.json b/base/src/test/resources/backup-manager-test/restore-many-keymaps.json similarity index 100% rename from app/src/test/resources/backup-manager-test/restore-many-keymaps.json rename to base/src/test/resources/backup-manager-test/restore-many-keymaps.json diff --git a/app/src/test/resources/backup-manager-test/restore-no-app-version.zip/data.json b/base/src/test/resources/backup-manager-test/restore-no-app-version.zip/data.json similarity index 100% rename from app/src/test/resources/backup-manager-test/restore-no-app-version.zip/data.json rename to base/src/test/resources/backup-manager-test/restore-no-app-version.zip/data.json diff --git a/app/src/test/resources/backup-manager-test/restore-no-sounds-folder.zip/data.json b/base/src/test/resources/backup-manager-test/restore-no-sounds-folder.zip/data.json similarity index 100% rename from app/src/test/resources/backup-manager-test/restore-no-sounds-folder.zip/data.json rename to base/src/test/resources/backup-manager-test/restore-no-sounds-folder.zip/data.json diff --git a/app/src/test/resources/json-migration-test/migration-10-11-expected-data.json b/base/src/test/resources/json-migration-test/migration-10-11-expected-data.json similarity index 100% rename from app/src/test/resources/json-migration-test/migration-10-11-expected-data.json rename to base/src/test/resources/json-migration-test/migration-10-11-expected-data.json diff --git a/app/src/test/resources/json-migration-test/migration-10-11-test-data.json b/base/src/test/resources/json-migration-test/migration-10-11-test-data.json similarity index 100% rename from app/src/test/resources/json-migration-test/migration-10-11-test-data.json rename to base/src/test/resources/json-migration-test/migration-10-11-test-data.json diff --git a/app/src/test/resources/json-migration-test/migration-11-12-expected-data.json b/base/src/test/resources/json-migration-test/migration-11-12-expected-data.json similarity index 100% rename from app/src/test/resources/json-migration-test/migration-11-12-expected-data.json rename to base/src/test/resources/json-migration-test/migration-11-12-expected-data.json diff --git a/app/src/test/resources/json-migration-test/migration-11-12-test-data.json b/base/src/test/resources/json-migration-test/migration-11-12-test-data.json similarity index 100% rename from app/src/test/resources/json-migration-test/migration-11-12-test-data.json rename to base/src/test/resources/json-migration-test/migration-11-12-test-data.json diff --git a/app/src/test/resources/json-migration-test/migration-9-11-expected-data.json b/base/src/test/resources/json-migration-test/migration-9-11-expected-data.json similarity index 100% rename from app/src/test/resources/json-migration-test/migration-9-11-expected-data.json rename to base/src/test/resources/json-migration-test/migration-9-11-expected-data.json diff --git a/app/src/test/resources/json-migration-test/migration-9-11-test-data.json b/base/src/test/resources/json-migration-test/migration-9-11-test-data.json similarity index 100% rename from app/src/test/resources/json-migration-test/migration-9-11-test-data.json rename to base/src/test/resources/json-migration-test/migration-9-11-test-data.json From 531635782bd42f048d46de96f7f0071f1d5f982e Mon Sep 17 00:00:00 2001 From: sds100 Date: Sat, 17 May 2025 14:35:32 +0200 Subject: [PATCH 13/71] #1711 use buildconfigprovider in other modules instead of Constants --- .../io/github/sds100/keymapper/Constants.kt | 5 ----- .../keymapper/base/about/AboutFragment.kt | 9 ++++++-- .../keymapper/base/actions/ActionUtils.kt | 1 - .../base/api/LaunchKeyMapShortcutActivity.kt | 8 ++++--- .../keymapper/base/backup/BackupManager.kt | 6 +++-- .../base/groups/GroupConstraintRow.kt | 3 +-- .../keymapper/base/home/HomeViewModel.kt | 4 +++- .../keymapper/base/home/KeyMapListAppBar.kt | 3 +-- .../keymaps/CreateKeyMapShortcutScreen.kt | 5 ++--- .../base/onboarding/OnboardingUseCase.kt | 11 ++++++---- .../sds100/keymapper/base/util/ShareUtils.kt | 6 ++--- .../notifications/NotificationController.kt | 22 +++++++++++-------- 12 files changed, 46 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/io/github/sds100/keymapper/Constants.kt b/app/src/main/java/io/github/sds100/keymapper/Constants.kt index e4598313a1..79b8b26d7a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/Constants.kt +++ b/app/src/main/java/io/github/sds100/keymapper/Constants.kt @@ -3,10 +3,5 @@ package io.github.sds100.keymapper import android.os.Build object Constants { - const val MIN_API = Build.VERSION_CODES.LOLLIPOP - const val MAX_API = 1000 const val PACKAGE_NAME = BuildConfig.APPLICATION_ID - const val VERSION = BuildConfig.VERSION_NAME - const val VERSION_CODE = BuildConfig.VERSION_CODE - const val MIN_API_FLOATING_BUTTONS = Build.VERSION_CODES.R } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt index 0e7d73e3d6..d26bdf3c94 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt @@ -10,11 +10,16 @@ import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController -import io.github.sds100.keymapper.Constants +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.databinding.FragmentAboutBinding +import javax.inject.Inject class AboutFragment : Fragment() { + @Inject + lateinit var buildConfigProvider: BuildConfigProvider + /** * Scoped to the lifecycle of the fragment's view (between onCreateView and onDestroyView) */ @@ -53,7 +58,7 @@ class AboutFragment : Fragment() { onBackPressed() } - version = "${Constants.VERSION} ${Constants.VERSION_CODE}" + version = "${buildConfigProvider.version} ${buildConfigProvider.versionCode}" } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt index d59dd50b01..9e62e4ea50 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt @@ -71,7 +71,6 @@ import androidx.compose.material.icons.rounded.ContentPaste import androidx.compose.material.icons.rounded.Wifi import androidx.compose.material.icons.rounded.WifiOff import androidx.compose.ui.graphics.vector.ImageVector -import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.util.ui.compose.icons.HomeIotDevice diff --git a/base/src/main/java/io/github/sds100/keymapper/base/api/LaunchKeyMapShortcutActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/api/LaunchKeyMapShortcutActivity.kt index 23db46a3c5..4a79a8218e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/api/LaunchKeyMapShortcutActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/api/LaunchKeyMapShortcutActivity.kt @@ -3,8 +3,7 @@ package io.github.sds100.keymapper.base.api import android.app.Activity import android.content.Intent import android.os.Bundle -import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.system.accessibility.ServiceState import splitties.toast.toast @@ -16,6 +15,9 @@ import splitties.toast.toast */ class LaunchKeyMapShortcutActivity : Activity() { + @Inject + lateinit var buildConfigProvider: BuildConfigProvider + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -25,7 +27,7 @@ class LaunchKeyMapShortcutActivity : Activity() { ServiceState.ENABLED -> if (intent.action == Api.ACTION_TRIGGER_KEYMAP_BY_UID) { Intent(Api.ACTION_TRIGGER_KEYMAP_BY_UID).apply { - setPackage(Constants.PACKAGE_NAME) + setPackage(buildConfigProvider.packageName) val uuid = intent.getStringExtra(Api.EXTRA_KEYMAP_UID) putExtra(Api.EXTRA_KEYMAP_UID, uuid) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt index f4b412d47a..edd79a207d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt @@ -74,6 +74,7 @@ import java.io.IOException import java.io.InputStream import java.util.LinkedList import java.util.UUID +import io.github.sds100.keymapper.common.BuildConfigProvider class BackupManagerImpl( private val coroutineScope: CoroutineScope, @@ -87,6 +88,7 @@ class BackupManagerImpl( private val throwExceptions: Boolean = false, private val dispatchers: DispatcherProvider = DefaultDispatcherProvider(), private val uuidGenerator: UuidGenerator = DefaultUuidGenerator(), + private val buildConfigProvider: BuildConfigProvider, ) : BackupManager { companion object { @@ -210,7 +212,7 @@ class BackupManagerImpl( val backupDbVersion = rootElement.get(BackupContent.NAME_DB_VERSION).nullInt ?: 9 val backupAppVersion = rootElement.get(BackupContent.NAME_APP_VERSION).nullInt - if (backupAppVersion != null && backupAppVersion > Constants.VERSION_CODE) { + if (backupAppVersion != null && backupAppVersion > buildConfigProvider.versionCode) { return@withContext Error.BackupVersionTooNew } @@ -803,7 +805,7 @@ class BackupManagerImpl( val backupContent = BackupContent( AppDatabase.DATABASE_VERSION, - Constants.VERSION_CODE, + buildConfigProvider.versionCode, keyMapList, defaultLongPressDelay = preferenceRepository diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt index 3147436fc6..8c941286a1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt @@ -38,7 +38,6 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter -import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme @@ -359,7 +358,7 @@ private fun PreviewMultipleItems() { ComposeChipModel.Error( id = "2", text = "Key Mapper not found", - error = Error.AppNotFound(Constants.PACKAGE_NAME), + error = Error.AppNotFound("io.github.sds100.keymapper"), ), ), mode = ConstraintMode.AND, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt index ae3ecf5795..03cdec467d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt @@ -35,6 +35,7 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import javax.inject.Inject +import io.github.sds100.keymapper.common.BuildConfigProvider @HiltViewModel class HomeViewModel @Inject constructor( @@ -48,6 +49,7 @@ class HomeViewModel @Inject constructor( private val sortKeyMaps: SortKeyMapsUseCase, private val listFloatingLayouts: ListFloatingLayoutsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, + private val buildConfigProvider: BuildConfigProvider, ) : ViewModel(), ResourceProvider by resourceProvider, PopupViewModel by PopupViewModelImpl(), @@ -121,7 +123,7 @@ class HomeViewModel @Inject constructor( ), ) - if (showFloatingLayouts && Build.VERSION.SDK_INT >= Constants.MIN_API_FLOATING_BUTTONS) { + if (showFloatingLayouts && Build.VERSION.SDK_INT >= buildConfigProvider.minApi) { items.add( HomeNavBarItem( HomeDestination.FloatingButtons, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt index d83e6b0080..8b246075e2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt @@ -90,7 +90,6 @@ import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme @@ -923,7 +922,7 @@ private fun constraintsSampleList(): List { ComposeChipModel.Error( id = "2", text = "Key Mapper not found", - error = Error.AppNotFound(Constants.PACKAGE_NAME), + error = Error.AppNotFound("io.github.sds100.keymapper"), ), ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt index b1dd3777db..a1881a3383 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt @@ -37,7 +37,6 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme @@ -310,7 +309,7 @@ private fun keyMapSampleList(): List { ComposeChipModel.Error( id = "1", "Key Mapper is playing media", - error = Error.AppNotFound(""), + error = Error.AppNotFound("io.github.sds100.keymapper"), ), ), options = listOf("Vibrate"), @@ -353,7 +352,7 @@ private fun constraintsSampleList(): List { ComposeChipModel.Error( id = "2", text = "Key Mapper not found", - error = Error.AppNotFound(Constants.PACKAGE_NAME), + error = Error.AppNotFound("io.github.sds100.keymapper"), ), ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt index e5cf0609e0..b0df034977 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt @@ -35,6 +35,7 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import javax.inject.Inject import javax.inject.Singleton +import io.github.sds100.keymapper.common.BuildConfigProvider @Singleton class OnboardingUseCaseImpl @Inject constructor( @@ -45,7 +46,9 @@ class OnboardingUseCaseImpl @Inject constructor( private val permissionAdapter: PermissionAdapter, private val packageManagerAdapter: PackageManagerAdapter, private val purchasingManager: PurchasingManager, - private val keyMapRepository: KeyMapRepository + private val keyMapRepository: KeyMapRepository, + private val keyMapRepository: KeyMapRepository, + private val buildConfigProvider: BuildConfigProvider ) : PreferenceRepository by settingsRepository, OnboardingUseCase { @@ -86,10 +89,10 @@ class OnboardingUseCaseImpl @Inject constructor( ) override val showWhatsNew = get(Keys.lastInstalledVersionCodeHomeScreen) - .map { (it ?: -1) < Constants.VERSION_CODE } + .map { (it ?: -1) < buildConfigProvider.versionCode } override fun showedWhatsNew() { - set(Keys.lastInstalledVersionCodeHomeScreen, Constants.VERSION_CODE) + set(Keys.lastInstalledVersionCodeHomeScreen, buildConfigProvider.versionCode) } override fun getWhatsNewText(): String = with(fileAdapter.openAsset("whats-new.txt").bufferedReader()) { @@ -113,7 +116,7 @@ class OnboardingUseCaseImpl @Inject constructor( } override fun showedFloatingButtonFeatureNotification() { - set(Keys.lastInstalledVersionCodeBackground, Constants.VERSION_CODE) + set(Keys.lastInstalledVersionCodeBackground, buildConfigProvider.versionCode) } override fun isTvDevice(): Boolean = leanbackAdapter.isTvDevice() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ShareUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ShareUtils.kt index 5051b20b55..90bf739491 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ShareUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ShareUtils.kt @@ -11,7 +11,7 @@ import android.service.chooser.ChooserAction import androidx.core.app.ShareCompat import androidx.core.net.toUri import io.github.sds100.keymapper.BaseMainActivity -import io.github.sds100.keymapper.Constants +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.R object ShareUtils { @@ -28,7 +28,7 @@ object ShareUtils { } } - fun shareFile(ctx: Context, file: Uri) { + fun shareFile(ctx: Context, file: Uri, buildConfigProvider: BuildConfigProvider) { try { val type = ctx.contentResolver.getType(file) @@ -39,7 +39,7 @@ object ShareUtils { .also { intent -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { val broadcast = Intent(BaseMainActivity.ACTION_SAVE_FILE).apply { - setPackage(Constants.PACKAGE_NAME) + setPackage(buildConfigProvider.packageName) putExtra(BaseMainActivity.EXTRA_FILE_URI, file) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt index 3b3dc9802c..c272b80daf 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt @@ -29,6 +29,9 @@ import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch +import javax.inject.Inject +import javax.inject.Singleton +import io.github.sds100.keymapper.common.BuildConfigProvider @@ -43,6 +46,7 @@ class NotificationController( private val onboardingUseCase: OnboardingUseCase, private val resourceProvider: ResourceProvider, private val dispatchers: DispatcherProvider = DefaultDispatcherProvider(), + private val buildConfigProvider: BuildConfigProvider, ) : ResourceProvider by resourceProvider { companion object { @@ -67,28 +71,28 @@ class NotificationController( private const val CHANNEL_ID_PERSISTENT = "channel_persistent" private const val ACTION_RESUME_MAPPINGS = - "${Constants.PACKAGE_NAME}.ACTION_RESUME_MAPPINGS" + "${buildConfigProvider.packageName}.ACTION_RESUME_MAPPINGS" - private const val ACTION_PAUSE_MAPPINGS = "${Constants.PACKAGE_NAME}.ACTION_PAUSE_MAPPINGS" + private const val ACTION_PAUSE_MAPPINGS = "${buildConfigProvider.packageName}.ACTION_PAUSE_MAPPINGS" private const val ACTION_START_SERVICE = - "${Constants.PACKAGE_NAME}.ACTION_START_ACCESSIBILITY_SERVICE" + "${buildConfigProvider.packageName}.ACTION_START_ACCESSIBILITY_SERVICE" private const val ACTION_RESTART_SERVICE = - "${Constants.PACKAGE_NAME}.ACTION_RESTART_ACCESSIBILITY_SERVICE" + "${buildConfigProvider.packageName}.ACTION_RESTART_ACCESSIBILITY_SERVICE" private const val ACTION_STOP_SERVICE = - "${Constants.PACKAGE_NAME}.ACTION_STOP_ACCESSIBILITY_SERVICE" + "${buildConfigProvider.packageName}.ACTION_STOP_ACCESSIBILITY_SERVICE" private const val ACTION_DISMISS_TOGGLE_MAPPINGS = - "${Constants.PACKAGE_NAME}.ACTION_DISMISS_TOGGLE_MAPPINGS" + "${buildConfigProvider.packageName}.ACTION_DISMISS_TOGGLE_MAPPINGS" private const val ACTION_SHOW_IME_PICKER = - "${Constants.PACKAGE_NAME}.ACTION_SHOW_IME_PICKER" - private const val ACTION_SHOW_KEYBOARD = "${Constants.PACKAGE_NAME}.ACTION_SHOW_KEYBOARD" + "${buildConfigProvider.packageName}.ACTION_SHOW_IME_PICKER" + private const val ACTION_SHOW_KEYBOARD = "${buildConfigProvider.packageName}.ACTION_SHOW_KEYBOARD" private const val ACTION_TOGGLE_KEYBOARD = - "${Constants.PACKAGE_NAME}.ACTION_TOGGLE_KEYBOARD" + "${buildConfigProvider.packageName}.ACTION_TOGGLE_KEYBOARD" } /** From a2a947f004c15abae4e331ecca47b395c2fdce75 Mon Sep 17 00:00:00 2001 From: sds100 Date: Sat, 17 May 2025 14:43:16 +0200 Subject: [PATCH 14/71] #1711 delete ServiceLocator --- app/src/main/AndroidManifest.xml | 211 ------------ .../github/sds100/keymapper/KeyMapperApp.kt | 152 ++------- .../github/sds100/keymapper/MainActivity.kt | 2 + .../github/sds100/keymapper/ServiceLocator.kt | 322 ------------------ base/src/main/AndroidManifest.xml | 213 ++++++++++++ .../keymapper/base}/ActivityViewModel.kt | 17 +- .../sds100/keymapper/base/AppHiltModule.kt | 23 ++ .../keymapper/base}/BaseMainActivity.kt | 2 +- .../base/logging/KeyMapperLoggingTree.kt | 10 +- .../sds100/keymapper/base}/package-info.java | 2 +- 10 files changed, 276 insertions(+), 678 deletions(-) rename {base/src/free => app/src/main}/java/io/github/sds100/keymapper/MainActivity.kt (57%) delete mode 100755 app/src/main/java/io/github/sds100/keymapper/ServiceLocator.kt rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/ActivityViewModel.kt (67%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/BaseMainActivity.kt (99%) rename {app/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/package-info.java (78%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1f8d932dfb..3b49d3eca3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -110,216 +110,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt b/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt index ee0e876877..f52254fc2c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt +++ b/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt @@ -13,50 +13,24 @@ import androidx.lifecycle.OnLifecycleEvent import androidx.lifecycle.ProcessLifecycleOwner import androidx.multidex.MultiDexApplication import dagger.hilt.android.HiltAndroidApp -import io.github.sds100.keymapper.actions.uielement.InteractUiElementController +import io.github.sds100.keymapper.base.data.entities.LogEntryEntity +import io.github.sds100.keymapper.base.logging.KeyMapperLoggingTree import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.entities.LogEntryEntity -import io.github.sds100.keymapper.logging.KeyMapperLoggingTree -import io.github.sds100.keymapper.purchasing.PurchasingManagerImpl import io.github.sds100.keymapper.settings.ThemeUtils -import io.github.sds100.keymapper.shizuku.ShizukuAdapterImpl -import io.github.sds100.keymapper.system.AndroidSystemFeatureAdapter import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter -import io.github.sds100.keymapper.system.airplanemode.AndroidAirplaneModeAdapter -import io.github.sds100.keymapper.system.apps.AndroidAppShortcutAdapter import io.github.sds100.keymapper.system.apps.AndroidPackageManagerAdapter -import io.github.sds100.keymapper.system.bluetooth.AndroidBluetoothAdapter -import io.github.sds100.keymapper.system.camera.AndroidCameraAdapter -import io.github.sds100.keymapper.system.clipboard.AndroidClipboardAdapter import io.github.sds100.keymapper.system.devices.AndroidDevicesAdapter -import io.github.sds100.keymapper.system.display.AndroidDisplayAdapter -import io.github.sds100.keymapper.system.files.AndroidFileAdapter -import io.github.sds100.keymapper.system.inputmethod.AndroidInputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.AutoSwitchImeController import io.github.sds100.keymapper.system.inputmethod.ShowHideInputMethodUseCaseImpl -import io.github.sds100.keymapper.system.leanback.LeanbackAdapterImpl -import io.github.sds100.keymapper.system.lock.AndroidLockScreenAdapter -import io.github.sds100.keymapper.system.media.AndroidMediaAdapter -import io.github.sds100.keymapper.system.network.AndroidNetworkAdapter -import io.github.sds100.keymapper.system.nfc.AndroidNfcAdapter import io.github.sds100.keymapper.system.notifications.AndroidNotificationAdapter import io.github.sds100.keymapper.system.notifications.ManageNotificationsUseCaseImpl import io.github.sds100.keymapper.system.notifications.NotificationController -import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapter import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter import io.github.sds100.keymapper.system.permissions.AutoGrantPermissionController import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.system.phone.AndroidPhoneAdapter -import io.github.sds100.keymapper.system.popup.AndroidToastAdapter -import io.github.sds100.keymapper.system.power.AndroidPowerAdapter -import io.github.sds100.keymapper.system.ringtones.AndroidRingtoneAdapter import io.github.sds100.keymapper.system.root.SuAdapterImpl -import io.github.sds100.keymapper.system.url.AndroidOpenUrlAdapter -import io.github.sds100.keymapper.system.vibrator.AndroidVibratorAdapter -import io.github.sds100.keymapper.system.volume.AndroidVolumeAdapter -import io.github.sds100.keymapper.trigger.RecordTriggerController -import io.github.sds100.keymapper.util.ui.ResourceProviderImpl -import kotlinx.coroutines.MainScope +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map @@ -66,124 +40,42 @@ import kotlinx.coroutines.runBlocking import splitties.toast.toast import timber.log.Timber import java.util.Calendar +import javax.inject.Inject @SuppressLint("LogNotTimber") @HiltAndroidApp class KeyMapperApp : MultiDexApplication() { private val tag = KeyMapperApp::class.simpleName - val appCoroutineScope = MainScope() + @Inject + private lateinit var appCoroutineScope: CoroutineScope - val notificationAdapter by lazy { AndroidNotificationAdapter(this, appCoroutineScope) } + @Inject + private lateinit var notificationAdapter: AndroidNotificationAdapter lateinit var notificationController: NotificationController lateinit var autoSwitchImeController: AutoSwitchImeController - val resourceProvider by lazy { ResourceProviderImpl(this, appCoroutineScope) } + @Inject + private lateinit var packageManagerAdapter: AndroidPackageManagerAdapter - val bluetoothMonitor by lazy { AndroidBluetoothAdapter(this, appCoroutineScope) } + @Inject + private lateinit var devicesAdapter: AndroidDevicesAdapter - val packageManagerAdapter by lazy { - AndroidPackageManagerAdapter( - this, - appCoroutineScope, - ) - } + @Inject + private lateinit var permissionAdapter: AndroidPermissionAdapter - val inputMethodAdapter by lazy { - AndroidInputMethodAdapter( - this, - appCoroutineScope, - accessibilityServiceAdapter, - permissionAdapter, - suAdapter, - ) - } - val devicesAdapter by lazy { - AndroidDevicesAdapter( - this, - bluetoothMonitor, - permissionAdapter, - appCoroutineScope, - ) - } - val cameraAdapter by lazy { AndroidCameraAdapter(this) } - val permissionAdapter by lazy { - AndroidPermissionAdapter( - this, - appCoroutineScope, - suAdapter, - notificationReceiverAdapter, - ServiceLocator.settingsRepository(this), - packageManagerAdapter, - ) - } + @Inject + private lateinit var accessibilityServiceAdapter: AccessibilityServiceAdapter - val systemFeatureAdapter by lazy { AndroidSystemFeatureAdapter(this) } - val accessibilityServiceAdapter by lazy { AccessibilityServiceAdapter(this, appCoroutineScope) } - val notificationReceiverAdapter by lazy { NotificationReceiverAdapter(this, appCoroutineScope) } - val appShortcutAdapter by lazy { AndroidAppShortcutAdapter(this) } - val fileAdapter by lazy { AndroidFileAdapter(this) } - val popupMessageAdapter by lazy { AndroidToastAdapter(this) } - val vibratorAdapter by lazy { AndroidVibratorAdapter(this) } - val displayAdapter by lazy { AndroidDisplayAdapter(this, coroutineScope = appCoroutineScope) } - val audioAdapter by lazy { AndroidVolumeAdapter(this) } - val suAdapter by lazy { - SuAdapterImpl( - appCoroutineScope, - ServiceLocator.settingsRepository(this), - ) - } - val phoneAdapter by lazy { AndroidPhoneAdapter(this, appCoroutineScope) } - val intentAdapter by lazy { IntentAdapterImpl(this) } - val mediaAdapter by lazy { AndroidMediaAdapter(this, appCoroutineScope) } - val lockScreenAdapter by lazy { AndroidLockScreenAdapter(this) } - val airplaneModeAdapter by lazy { AndroidAirplaneModeAdapter(this, suAdapter) } - val networkAdapter by lazy { AndroidNetworkAdapter(this, suAdapter) } - val nfcAdapter by lazy { AndroidNfcAdapter(this, suAdapter) } - val openUrlAdapter by lazy { AndroidOpenUrlAdapter(this) } - val clipboardAdapter by lazy { AndroidClipboardAdapter(this) } - val shizukuAdapter by lazy { ShizukuAdapterImpl(appCoroutineScope, packageManagerAdapter) } - val leanbackAdapter by lazy { LeanbackAdapterImpl(this) } - val powerAdapter by lazy { AndroidPowerAdapter(this) } - - val recordTriggerController by lazy { - RecordTriggerController(appCoroutineScope, accessibilityServiceAdapter) - } + @Inject + private lateinit var suAdapter: SuAdapterImpl - val interactUiElementController by lazy { - InteractUiElementController( - appCoroutineScope, - accessibilityServiceAdapter, - ServiceLocator.accessibilityNodeRepository(this), - packageManagerAdapter, - ) - } - - val autoGrantPermissionController by lazy { - AutoGrantPermissionController( - appCoroutineScope, - permissionAdapter, - popupMessageAdapter, - resourceProvider, - ) - } + @Inject + private lateinit var autoGrantPermissionController: AutoGrantPermissionController - val purchasingManager: PurchasingManagerImpl by lazy { - PurchasingManagerImpl(this.applicationContext, appCoroutineScope) - } - - val ringtoneManagerAdapter: AndroidRingtoneAdapter by lazy { - AndroidRingtoneAdapter(this) - } - - private val loggingTree by lazy { - KeyMapperLoggingTree( - appCoroutineScope, - ServiceLocator.settingsRepository(this), - ServiceLocator.logRepository(this), - ) - } + @Inject + private lateinit var loggingTree: KeyMapperLoggingTree private val processLifecycleOwner by lazy { ProcessLifecycleOwner.get() } diff --git a/base/src/free/java/io/github/sds100/keymapper/MainActivity.kt b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt similarity index 57% rename from base/src/free/java/io/github/sds100/keymapper/MainActivity.kt rename to app/src/main/java/io/github/sds100/keymapper/MainActivity.kt index 51dddd9b2e..174aea7919 100644 --- a/base/src/free/java/io/github/sds100/keymapper/MainActivity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt @@ -1,3 +1,5 @@ package io.github.sds100.keymapper +import io.github.sds100.keymapper.base.BaseMainActivity + class MainActivity : BaseMainActivity() diff --git a/app/src/main/java/io/github/sds100/keymapper/ServiceLocator.kt b/app/src/main/java/io/github/sds100/keymapper/ServiceLocator.kt deleted file mode 100755 index 1ea9043b63..0000000000 --- a/app/src/main/java/io/github/sds100/keymapper/ServiceLocator.kt +++ /dev/null @@ -1,322 +0,0 @@ -package io.github.sds100.keymapper - -import android.content.Context -import androidx.datastore.preferences.preferencesDataStore -import androidx.room.Room -import io.github.sds100.keymapper.actions.sound.SoundsManager -import io.github.sds100.keymapper.actions.sound.SoundsManagerImpl -import io.github.sds100.keymapper.backup.BackupManager -import io.github.sds100.keymapper.backup.BackupManagerImpl -import io.github.sds100.keymapper.data.db.AppDatabase -import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository -import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepositoryImpl -import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository -import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository -import io.github.sds100.keymapper.data.repositories.GroupRepository -import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.data.repositories.RoomFloatingButtonRepository -import io.github.sds100.keymapper.data.repositories.RoomFloatingLayoutRepository -import io.github.sds100.keymapper.data.repositories.RoomGroupRepository -import io.github.sds100.keymapper.data.repositories.RoomKeyMapRepository -import io.github.sds100.keymapper.data.repositories.RoomLogRepository -import io.github.sds100.keymapper.data.repositories.SettingsPreferenceRepository -import io.github.sds100.keymapper.keymaps.ConfigKeyMapUseCaseController -import io.github.sds100.keymapper.logging.LogRepository -import io.github.sds100.keymapper.purchasing.PurchasingManagerImpl -import io.github.sds100.keymapper.shizuku.ShizukuAdapter -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter -import io.github.sds100.keymapper.system.airplanemode.AirplaneModeAdapter -import io.github.sds100.keymapper.system.apps.AppShortcutAdapter -import io.github.sds100.keymapper.system.apps.PackageManagerAdapter -import io.github.sds100.keymapper.system.bluetooth.BluetoothAdapter -import io.github.sds100.keymapper.system.camera.CameraAdapter -import io.github.sds100.keymapper.system.clipboard.ClipboardAdapter -import io.github.sds100.keymapper.system.devices.DevicesAdapter -import io.github.sds100.keymapper.system.display.AndroidDisplayAdapter -import io.github.sds100.keymapper.system.files.FileAdapter -import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.system.intents.IntentAdapter -import io.github.sds100.keymapper.system.leanback.LeanbackAdapter -import io.github.sds100.keymapper.system.lock.LockScreenAdapter -import io.github.sds100.keymapper.system.media.AndroidMediaAdapter -import io.github.sds100.keymapper.system.network.NetworkAdapter -import io.github.sds100.keymapper.system.nfc.NfcAdapter -import io.github.sds100.keymapper.system.notifications.AndroidNotificationAdapter -import io.github.sds100.keymapper.system.notifications.NotificationController -import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapter -import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter -import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter -import io.github.sds100.keymapper.system.phone.PhoneAdapter -import io.github.sds100.keymapper.system.popup.PopupMessageAdapter -import io.github.sds100.keymapper.system.power.PowerAdapter -import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter -import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.system.url.OpenUrlAdapter -import io.github.sds100.keymapper.system.vibrator.VibratorAdapter -import io.github.sds100.keymapper.system.volume.VolumeAdapter -import io.github.sds100.keymapper.util.ui.ResourceProviderImpl -import kotlinx.coroutines.CoroutineScope - - -object ServiceLocator { - - private var database: AppDatabase? = null - - private fun database(context: Context): AppDatabase { - synchronized(this) { - return database ?: createDatabase(context.applicationContext).also { - this.database = it - } - } - } - - @Volatile - private var roomKeymapRepository: RoomKeyMapRepository? = null - - fun roomKeyMapRepository(context: Context): RoomKeyMapRepository { - synchronized(this) { - return roomKeymapRepository ?: RoomKeyMapRepository( - database(context).keyMapDao(), - database(context).fingerprintMapDao(), - (context.applicationContext as KeyMapperApp).appCoroutineScope, - ).also { - this.roomKeymapRepository = it - } - } - } - - @Volatile - private var settingsRepository: PreferenceRepository? = null - - fun settingsRepository(context: Context): PreferenceRepository { - synchronized(this) { - return settingsRepository ?: SettingsPreferenceRepository( - context.applicationContext, - (context.applicationContext as KeyMapperApp).appCoroutineScope, - ).also { - this.settingsRepository = it - } - } - } - - @Volatile - private var logRepository: LogRepository? = null - - fun logRepository(context: Context): LogRepository { - synchronized(this) { - return logRepository ?: RoomLogRepository( - (context.applicationContext as KeyMapperApp).appCoroutineScope, - database(context).logEntryDao(), - ).also { - this.logRepository = it - } - } - } - - @Volatile - private var floatingLayoutRepository: FloatingLayoutRepository? = null - - fun floatingLayoutRepository(context: Context): FloatingLayoutRepository { - synchronized(this) { - return floatingLayoutRepository ?: RoomFloatingLayoutRepository( - database(context).floatingLayoutDao(), - (context.applicationContext as KeyMapperApp).appCoroutineScope, - ).also { - this.floatingLayoutRepository = it - } - } - } - - @Volatile - private var floatingButtonRepository: FloatingButtonRepository? = null - - fun floatingButtonRepository(context: Context): FloatingButtonRepository { - synchronized(this) { - return floatingButtonRepository ?: RoomFloatingButtonRepository( - database(context).floatingButtonDao(), - (context.applicationContext as KeyMapperApp).appCoroutineScope, - ).also { - this.floatingButtonRepository = it - } - } - } - - @Volatile - private var groupRepository: GroupRepository? = null - - fun groupRepository(context: Context): GroupRepository { - synchronized(this) { - return groupRepository ?: RoomGroupRepository( - database(context).groupDao(), - (context.applicationContext as KeyMapperApp).appCoroutineScope, - ).also { - this.groupRepository = it - } - } - } - - @Volatile - private var backupManager: BackupManager? = null - - fun backupManager(context: Context): BackupManager { - synchronized(this) { - return backupManager ?: createBackupManager(context).also { - this.backupManager = it - } - } - } - - private fun createBackupManager(context: Context): BackupManager = backupManager ?: BackupManagerImpl( - (context.applicationContext as KeyMapperApp).appCoroutineScope, - fileAdapter(context), - roomKeyMapRepository(context), - settingsRepository(context), - floatingLayoutRepository(context), - floatingButtonRepository(context), - groupRepository(context), - soundsManager(context), - ) - - @Volatile - private var soundsManager: SoundsManager? = null - - fun soundsManager(context: Context): SoundsManager { - synchronized(this) { - return soundsManager ?: SoundsManagerImpl( - (context.applicationContext as KeyMapperApp).appCoroutineScope, - fileAdapter(context), - ).also { - this.soundsManager = it - } - } - } - - @Volatile - private var configKeyMapsController: ConfigKeyMapUseCaseController? = null - - fun configKeyMapsController(ctx: Context): ConfigKeyMapUseCaseController { - synchronized(this) { - return configKeyMapsController - ?: createConfigKeyMapsController(ctx).also { - configKeyMapsController = it - } - } - } - - private fun createConfigKeyMapsController(ctx: Context): ConfigKeyMapUseCaseController { - return ConfigKeyMapUseCaseController( - appCoroutineScope(ctx), - roomKeyMapRepository(ctx), - devicesAdapter(ctx), - settingsRepository(ctx), - floatingLayoutRepository(ctx), - floatingButtonRepository(ctx), - accessibilityServiceAdapter(ctx), - ) - } - - @Volatile - private var accessibilityNodeRepository: AccessibilityNodeRepository? = null - - fun accessibilityNodeRepository(context: Context): AccessibilityNodeRepository { - synchronized(this) { - return accessibilityNodeRepository ?: AccessibilityNodeRepositoryImpl( - (context.applicationContext as KeyMapperApp).appCoroutineScope, - database(context).accessibilityNodeDao(), - ).also { - this.accessibilityNodeRepository = it - } - } - } - - fun fileAdapter(context: Context): FileAdapter = (context.applicationContext as KeyMapperApp).fileAdapter - - fun inputMethodAdapter(context: Context): InputMethodAdapter = (context.applicationContext as KeyMapperApp).inputMethodAdapter - - fun devicesAdapter(context: Context): DevicesAdapter = (context.applicationContext as KeyMapperApp).devicesAdapter - - fun bluetoothAdapter(context: Context): BluetoothAdapter = (context.applicationContext as KeyMapperApp).bluetoothMonitor - - fun notificationController(context: Context): NotificationController = (context.applicationContext as KeyMapperApp).notificationController - - fun resourceProvider(context: Context): ResourceProviderImpl = (context.applicationContext as KeyMapperApp).resourceProvider - - fun packageManagerAdapter(context: Context): PackageManagerAdapter = (context.applicationContext as KeyMapperApp).packageManagerAdapter - - fun cameraAdapter(context: Context): CameraAdapter = (context.applicationContext as KeyMapperApp).cameraAdapter - - fun permissionAdapter(context: Context): AndroidPermissionAdapter = (context.applicationContext as KeyMapperApp).permissionAdapter - - fun systemFeatureAdapter(context: Context): SystemFeatureAdapter = (context.applicationContext as KeyMapperApp).systemFeatureAdapter - - fun accessibilityServiceAdapter(context: Context): AccessibilityServiceAdapter = (context.applicationContext as KeyMapperApp).accessibilityServiceAdapter - - fun notificationReceiverAdapter(context: Context): NotificationReceiverAdapter = (context.applicationContext as KeyMapperApp).notificationReceiverAdapter - - fun appShortcutAdapter(context: Context): AppShortcutAdapter = (context.applicationContext as KeyMapperApp).appShortcutAdapter - - fun notificationAdapter(context: Context): AndroidNotificationAdapter = (context.applicationContext as KeyMapperApp).notificationAdapter - - fun popupMessageAdapter(context: Context): PopupMessageAdapter = (context.applicationContext as KeyMapperApp).popupMessageAdapter - - fun vibratorAdapter(context: Context): VibratorAdapter = (context.applicationContext as KeyMapperApp).vibratorAdapter - - fun displayAdapter(context: Context): AndroidDisplayAdapter = (context.applicationContext as KeyMapperApp).displayAdapter - - fun audioAdapter(context: Context): VolumeAdapter = (context.applicationContext as KeyMapperApp).audioAdapter - - fun suAdapter(context: Context): SuAdapter = (context.applicationContext as KeyMapperApp).suAdapter - - fun intentAdapter(context: Context): IntentAdapter = (context.applicationContext as KeyMapperApp).intentAdapter - - fun phoneAdapter(context: Context): PhoneAdapter = (context.applicationContext as KeyMapperApp).phoneAdapter - - fun mediaAdapter(context: Context): AndroidMediaAdapter = (context.applicationContext as KeyMapperApp).mediaAdapter - - fun lockScreenAdapter(context: Context): LockScreenAdapter = (context.applicationContext as KeyMapperApp).lockScreenAdapter - - fun airplaneModeAdapter(context: Context): AirplaneModeAdapter = (context.applicationContext as KeyMapperApp).airplaneModeAdapter - - fun networkAdapter(context: Context): NetworkAdapter = (context.applicationContext as KeyMapperApp).networkAdapter - - fun nfcAdapter(context: Context): NfcAdapter = (context.applicationContext as KeyMapperApp).nfcAdapter - - fun openUrlAdapter(context: Context): OpenUrlAdapter = (context.applicationContext as KeyMapperApp).openUrlAdapter - - fun clipboardAdapter(context: Context): ClipboardAdapter = (context.applicationContext as KeyMapperApp).clipboardAdapter - - fun shizukuAdapter(context: Context): ShizukuAdapter = (context.applicationContext as KeyMapperApp).shizukuAdapter - - fun leanbackAdapter(context: Context): LeanbackAdapter = (context.applicationContext as KeyMapperApp).leanbackAdapter - - fun powerAdapter(context: Context): PowerAdapter = (context.applicationContext as KeyMapperApp).powerAdapter - - fun appCoroutineScope(context: Context): CoroutineScope = (context.applicationContext as KeyMapperApp).appCoroutineScope - - fun purchasingManager(context: Context): PurchasingManagerImpl = (context.applicationContext as KeyMapperApp).purchasingManager - - fun ringtoneAdapter(context: Context): RingtoneAdapter = (context.applicationContext as KeyMapperApp).ringtoneManagerAdapter - - private fun createDatabase(context: Context): AppDatabase = Room.databaseBuilder( - context.applicationContext, - AppDatabase::class.java, - AppDatabase.DATABASE_NAME, - ).addMigrations( - AppDatabase.MIGRATION_1_2, - AppDatabase.MIGRATION_2_3, - AppDatabase.MIGRATION_3_4, - AppDatabase.MIGRATION_4_5, - AppDatabase.MIGRATION_5_6, - AppDatabase.MIGRATION_6_7, - AppDatabase.MIGRATION_7_8, - AppDatabase.MIGRATION_8_9, - AppDatabase.MIGRATION_9_10, - AppDatabase.MIGRATION_10_11, - AppDatabase.RoomMigration11To12(context.applicationContext.legacyFingerprintMapDataStore), - AppDatabase.MIGRATION_12_13, - AppDatabase.MIGRATION_13_14, - AppDatabase.MIGRATION_17_18, - ).build() - - private val Context.legacyFingerprintMapDataStore by preferencesDataStore("fingerprint_gestures") -} diff --git a/base/src/main/AndroidManifest.xml b/base/src/main/AndroidManifest.xml index a5918e68ab..8ad78b9f60 100644 --- a/base/src/main/AndroidManifest.xml +++ b/base/src/main/AndroidManifest.xml @@ -1,4 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/ActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt similarity index 67% rename from app/src/main/java/io/github/sds100/keymapper/ActivityViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt index 3df3d58dbe..ee025e2e08 100644 --- a/app/src/main/java/io/github/sds100/keymapper/ActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt @@ -1,14 +1,14 @@ -package io.github.sds100.keymapper +package io.github.sds100.keymapper.base import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope -import io.github.sds100.keymapper.util.ui.NavigationViewModel -import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.ViewModelHelper +import io.github.sds100.keymapper.base.util.ui.NavigationViewModel +import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ViewModelHelper import kotlinx.coroutines.launch class ActivityViewModel( @@ -35,7 +35,6 @@ class ActivityViewModel( private val resourceProvider: ResourceProvider, ) : ViewModelProvider.NewInstanceFactory() { - override fun create(modelClass: Class): T = - ActivityViewModel(resourceProvider) as T + override fun create(modelClass: Class): T = ActivityViewModel(resourceProvider) as T } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt new file mode 100644 index 0000000000..899ed54bd6 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt @@ -0,0 +1,23 @@ +package io.github.sds100.keymapper.base + +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.util.DispatcherProvider +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.MainScope +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +class AppHiltModule { + @Singleton + @Provides + fun provideCoroutineScope(): CoroutineScope = MainScope() + + @Provides + @Singleton + fun provideDispatchers(): DispatcherProvider = DefaultDispatcherProvider() +} diff --git a/app/src/main/java/io/github/sds100/keymapper/BaseMainActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt similarity index 99% rename from app/src/main/java/io/github/sds100/keymapper/BaseMainActivity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt index 361c6407d6..a993e6016b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/BaseMainActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper +package io.github.sds100.keymapper.base import android.content.BroadcastReceiver import android.content.Context diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt index bcc9851916..b9c27419fa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.logging import android.util.Log -import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.data.entities.LogEntryEntity -import io.github.sds100.keymapper.data.repositories.PreferenceRepository +import io.github.sds100.keymapper.base.data.Keys +import io.github.sds100.keymapper.base.data.entities.LogEntryEntity +import io.github.sds100.keymapper.base.data.repositories.PreferenceRepository import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.channels.BufferOverflow @@ -17,8 +17,10 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.stateIn import timber.log.Timber import java.util.Calendar +import javax.inject.Inject -class KeyMapperLoggingTree( +@Inject +class KeyMapperLoggingTree constructor( private val coroutineScope: CoroutineScope, preferenceRepository: PreferenceRepository, private val logRepository: LogRepository, diff --git a/app/src/main/java/io/github/sds100/keymapper/package-info.java b/base/src/main/java/io/github/sds100/keymapper/base/package-info.java similarity index 78% rename from app/src/main/java/io/github/sds100/keymapper/package-info.java rename to base/src/main/java/io/github/sds100/keymapper/base/package-info.java index 391ca62e91..f3df0af949 100644 --- a/app/src/main/java/io/github/sds100/keymapper/package-info.java +++ b/base/src/main/java/io/github/sds100/keymapper/base/package-info.java @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper; +package io.github.sds100.keymapper.base; import com.airbnb.epoxy.EpoxyDataBindingPattern; From 00636d7c629eff6a7c3d2872dd01352b772feb50 Mon Sep 17 00:00:00 2001 From: sds100 Date: Sat, 17 May 2025 15:10:54 +0200 Subject: [PATCH 15/71] #1711 WIP: move more files around --- api/build.gradle.kts | 12 +- api/src/main/AndroidManifest.xml | 33 +- .../api/LaunchKeyMapShortcutActivity.kt | 29 +- .../api/PauseMappingsBroadcastReceiver.kt | 12 +- .../api/TriggerKeyMapsBroadcastReceiver.kt | 4 +- app/build.gradle.kts | 15 +- app/src/main/AndroidManifest.xml | 67 +--- .../github/sds100/keymapper/KeyMapperApp.kt | 14 +- base/build.gradle.kts | 4 + .../1.json | 0 .../10.json | 0 .../11.json | 0 .../12.json | 0 .../13.json | 0 .../14.json | 0 .../15.json | 0 .../16.json | 0 .../17.json | 0 .../18.json | 0 .../19.json | 0 .../2.json | 0 .../20.json | 0 .../3.json | 0 .../4.json | 0 .../5.json | 0 .../6.json | 0 .../7.json | 0 .../8.json | 0 .../9.json | 0 .../floating/ListFloatingLayoutsViewModel.kt | 6 +- .../keymaps/detection/KeyMapController.kt | 10 +- .../purchasing/PurchasingManagerImpl.kt | 6 +- .../AccessibilityServiceController.kt | 8 +- .../trigger/ConfigTriggerViewModel.kt | 10 +- base/src/main/AndroidManifest.xml | 362 +++++++----------- .../sds100/keymapper/base/AppHiltModule.kt | 16 + .../sds100/keymapper/base/BaseMainActivity.kt | 4 +- .../sds100/keymapper/base/actions/Action.kt | 2 +- .../base/actions/ActionDataEntityMapper.kt | 2 +- .../keymapper/base/actions/ActionListItem.kt | 8 +- .../base/actions/ActionOptionsBottomSheet.kt | 14 +- .../keymapper/base/actions/ActionUiHelper.kt | 12 +- .../keymapper/base/actions/ActionUtils.kt | 18 +- .../keymapper/base/actions/ActionsScreen.kt | 12 +- .../base/actions/ChooseActionFragment.kt | 10 +- .../base/actions/ChooseActionScreen.kt | 12 +- .../base/actions/ChooseActionViewModel.kt | 26 +- .../base/actions/ConfigActionsViewModel.kt | 38 +- .../base/actions/CreateActionDelegate.kt | 16 +- .../actions/FlashlightActionBottomSheet.kt | 6 +- .../base/actions/GetActionErrorUseCase.kt | 4 +- .../base/actions/HttpRequestBottomSheet.kt | 2 +- .../base/actions/PerformActionsUseCase.kt | 14 +- .../base/actions/TestActionUseCase.kt | 2 +- .../actions/keyevent/ChooseKeyCodeFragment.kt | 10 +- .../keyevent/ChooseKeyCodeViewModel.kt | 10 +- .../keyevent/ConfigKeyEventActionFragment.kt | 10 +- .../keyevent/ConfigKeyEventActionViewModel.kt | 14 +- .../PinchPickDisplayCoordinateFragment.kt | 8 +- .../PinchPickDisplayCoordinateViewModel.kt | 10 +- .../actions/sound/ChooseSoundFileFragment.kt | 6 +- .../actions/sound/ChooseSoundFileViewModel.kt | 14 +- .../SwipePickDisplayCoordinateFragment.kt | 6 +- .../SwipePickDisplayCoordinateViewModel.kt | 10 +- .../tapscreen/PickCoordinateImageView.kt | 2 +- .../PickDisplayCoordinateFragment.kt | 6 +- .../PickDisplayCoordinateViewModel.kt | 10 +- .../uielement/ChooseUiElementScreen.kt | 8 +- .../uielement/InteractUiElementFragment.kt | 8 +- .../uielement/InteractUiElementScreen.kt | 16 +- .../uielement/InteractUiElementUseCase.kt | 2 +- .../uielement/InteractUiElementViewModel.kt | 16 +- .../keymapper/base/backup/BackupManager.kt | 14 +- .../base/backup/RestoreKeyMapsActivity.kt | 2 +- .../base/backup/RestoreKeyMapsViewModel.kt | 4 +- .../constraints/ChooseConstraintFragment.kt | 10 +- .../constraints/ChooseConstraintScreen.kt | 6 +- .../constraints/ChooseConstraintViewModel.kt | 24 +- .../constraints/ConfigConstraintsViewModel.kt | 26 +- .../keymapper/base/constraints/Constraint.kt | 2 +- .../base/constraints/ConstraintListItem.kt | 4 +- .../constraints/ConstraintListItemModel.kt | 2 +- .../base/constraints/ConstraintSnapshot.kt | 2 +- .../base/constraints/ConstraintUiHelper.kt | 6 +- .../base/constraints/ConstraintUtils.kt | 2 +- .../base/constraints/ConstraintsScreen.kt | 10 +- .../constraints/TimeConstraintBottomSheet.kt | 4 +- .../base/floating/FloatingButtonData.kt | 4 +- .../base/groups/GroupConstraintRow.kt | 6 +- .../base/groups/GroupListItemModel.kt | 2 +- .../sds100/keymapper/base/groups/GroupRow.kt | 4 +- .../keymapper/base/home/HomeFragment.kt | 6 +- .../base/home/HomeKeyMapListScreen.kt | 22 +- .../sds100/keymapper/base/home/HomeScreen.kt | 2 +- .../keymapper/base/home/HomeViewModel.kt | 22 +- .../keymapper/base/home/KeyMapListAppBar.kt | 14 +- .../base/home/SelectionBottomSheet.kt | 4 +- .../base/home/ShowHomeScreenAlertsUseCase.kt | 2 +- .../base/keymaps/ConfigKeyMapFragment.kt | 6 +- .../keymaps/ConfigKeyMapOptionsViewModel.kt | 14 +- .../base/keymaps/ConfigKeyMapScreen.kt | 6 +- .../base/keymaps/ConfigKeyMapUseCase.kt | 6 +- .../base/keymaps/ConfigKeyMapViewModel.kt | 4 +- .../keymaps/CreateKeyMapShortcutActivity.kt | 4 +- .../keymaps/CreateKeyMapShortcutScreen.kt | 8 +- .../keymaps/CreateKeyMapShortcutUseCase.kt | 2 +- .../keymaps/CreateKeyMapShortcutViewModel.kt | 6 +- .../base/keymaps/DisplayKeyMapUseCase.kt | 4 +- .../FingerprintGesturesSupportedUseCase.kt | 2 +- .../sds100/keymapper/base/keymaps/KeyMap.kt | 2 +- .../base/keymaps/KeyMapAppBarState.kt | 2 +- .../base/keymaps/KeyMapListItemCreator.kt | 8 +- .../base/keymaps/KeyMapListScreen.kt | 10 +- .../base/keymaps/KeyMapListViewModel.kt | 32 +- .../base/keymaps/KeyMapOptionsScreen.kt | 12 +- .../base/keymaps/ListKeyMapsUseCase.kt | 2 +- .../base/keymaps/PauseKeyMapsUseCase.kt | 2 +- .../keymapper/base/keymaps/ShortcutModel.kt | 2 +- .../keymapper/base/keymaps/ShortcutRow.kt | 4 +- .../base/keymaps/SimpleMappingController.kt | 4 +- .../keymaps/detection/DetectKeyMapModel.kt | 2 +- .../keymaps/detection/DetectKeyMapsUseCase.kt | 12 +- .../ParallelTriggerActionPerformer.kt | 2 +- .../SequenceTriggerActionPerformer.kt | 2 +- .../TriggerKeyMapFromOtherAppsController.kt | 4 +- .../base/logging/DisplayLogUseCase.kt | 2 +- .../base/logging/KeyMapperLoggingTree.kt | 22 +- .../base/logging/LogEntryListItem.kt | 2 +- .../keymapper/base/logging/LogFragment.kt | 8 +- .../keymapper/base/logging/LogViewModel.kt | 16 +- .../base/onboarding/OnboardingUseCase.kt | 10 +- .../RerouteKeyEventsController.kt | 2 +- .../RerouteKeyEventsUseCase.kt | 4 +- .../Android11BugWorkaroundSettingsFragment.kt | 14 +- .../AutomaticallyChangeImeSettings.kt | 2 +- .../base/settings/BaseSettingsFragment.kt | 6 +- .../DefaultOptionsSettingsFragment.kt | 8 +- .../settings/ImePickerSettingsFragment.kt | 2 +- .../base/settings/MainSettingsFragment.kt | 10 +- .../base/settings/SettingsViewModel.kt | 20 +- .../base/settings/ShizukuSettingsFragment.kt | 8 +- .../base/shizuku/ShizukuInputEventInjector.kt | 2 +- .../base/sorting/SortBottomSheetContent.kt | 4 +- .../base/sorting/SortKeyMapsUseCase.kt | 6 +- .../comparators/KeyMapActionsComparator.kt | 2 +- .../KeyMapConstraintsComparator.kt | 2 +- .../comparators/KeyMapOptionsComparator.kt | 2 +- .../comparators/KeyMapTriggerComparator.kt | 2 +- .../base/trigger/AssistantTriggerKey.kt | 2 +- .../trigger/BaseConfigTriggerViewModel.kt | 42 +- .../base/trigger/FingerprintTriggerKey.kt | 4 +- .../base/trigger/FloatingButtonKey.kt | 2 +- .../base/trigger/KeyCodeTriggerKey.kt | 2 +- .../base/trigger/KeyMapListItemModel.kt | 2 +- .../base/trigger/RecordTriggerButtonRow.kt | 4 +- .../base/trigger/RecordTriggerUseCase.kt | 4 +- .../trigger/SetupGuiKeyboardBottomSheet.kt | 2 +- .../sds100/keymapper/base/trigger/Trigger.kt | 2 +- .../base/trigger/TriggerErrorSnapshot.kt | 4 +- .../keymapper/base/trigger/TriggerKey.kt | 2 +- .../base/trigger/TriggerKeyListItem.kt | 8 +- .../trigger/TriggerKeyOptionsBottomSheet.kt | 12 +- .../keymapper/base/trigger/TriggerMode.kt | 2 +- .../keymapper/base/trigger/TriggerScreen.kt | 16 +- .../base/ui/apps/AppActivityListItem.kt | 6 +- .../base/ui/apps/AppShortcutListItem.kt | 6 +- .../base/ui/apps/ChooseActivityFragment.kt | 6 +- .../base/ui/apps/ChooseActivityViewModel.kt | 4 +- .../base/ui/apps/ChooseAppFragment.kt | 10 +- .../keymapper/base/ui/apps/ChooseAppScreen.kt | 10 +- .../base/ui/apps/ChooseAppShortcutFragment.kt | 10 +- .../ui/apps/ChooseAppShortcutViewModel.kt | 14 +- .../base/ui/apps/ChooseAppViewModel.kt | 8 +- .../ChooseBluetoothDeviceFragment.kt | 14 +- .../ChooseBluetoothDeviceViewModel.kt | 12 +- .../base/ui/intents/ConfigIntentFragment.kt | 8 +- .../base/ui/intents/ConfigIntentViewModel.kt | 22 +- .../sds100/keymapper/base/util/ErrorUtils.kt | 2 +- .../sds100/keymapper/base/util/FilterUtils.kt | 2 +- .../base/util/SharedPrefsDataStoreWrapper.kt | 2 +- .../keymapper/base/util/ui/BindingAdapters.kt | 6 +- .../keymapper/base/util/ui/DialogUtils.kt | 6 +- .../keymapper/base/util/ui/PopupViewModel.kt | 2 +- .../base/util/ui/RecyclerViewFragment.kt | 2 +- .../base/util/ui/ResourceProvider.kt | 6 +- .../util/ui/SimpleRecyclerViewFragment.kt | 2 +- .../keymapper/base/util/ui/ViewModelHelper.kt | 4 +- .../base/util/ui/compose/CompactChip.kt | 2 +- .../base/util/ui/compose/ListItemFixError.kt | 2 +- .../base/util/ui/compose/SimpleListItem.kt | 2 +- .../base/util/ui/compose/UriHandlerUtils.kt | 2 +- .../res/layout/dialog_choose_app_store.xml | 2 +- .../main/res/layout/list_item_checkbox.xml | 2 +- .../main/res/layout/list_item_fix_error.xml | 2 +- .../main/res/layout/list_item_log_entry.xml | 2 +- .../layout/list_item_radio_button_pair.xml | 2 +- .../layout/list_item_radio_button_triple.xml | 2 +- base/src/main/res/layout/list_item_simple.xml | 2 +- base/src/main/res/navigation/nav_app.xml | 2 +- base/src/main/res/navigation/nav_settings.xml | 12 +- .../sds100/keymapper/BackupManagerTest.kt | 4 +- .../keymapper/ConfigKeyMapUseCaseTest.kt | 12 +- .../keymapper/KeyMapJsonMigrationTest.kt | 2 +- .../LegacyFingerprintMapMigrationTest.kt | 2 +- .../keymapper/TestDispatcherProvider.kt | 2 +- .../actions/PerformActionsUseCaseTest.kt | 2 +- .../constraints/ConstraintSnapshotTest.kt | 2 +- .../keymaps/DpadMotionEventTrackerTest.kt | 2 +- .../keymapper/keymaps/KeyMapControllerTest.kt | 18 +- .../ProcessKeyMapGroupsForDetectionTest.kt | 4 +- ...riggerKeyMapFromOtherAppsControllerTest.kt | 6 +- .../intents/ConfigIntentViewModelTest.kt | 12 +- .../sds100/keymapper/util/KeyMapUtils.kt | 2 +- .../keymapper/util/ui/FakeResourceProvider.kt | 2 +- .../keymapper/common/BuildConfigProvider.kt | 9 + data/.gitignore | 1 + data/build.gradle.kts | 62 +++ data/consumer-rules.pro | 0 data/proguard-rules.pro | 21 + .../keymapper/data/ExampleInstrumentedTest.kt | 24 ++ data/src/main/AndroidManifest.xml | 4 + .../io/github/sds100/keymapper}/data/Keys.kt | 2 +- .../keymapper}/data/PreferenceDefaults.kt | 2 +- .../sds100/keymapper}/data/db/AppDatabase.kt | 2 +- .../data/db/dao/AccessibilityNodeDao.kt | 2 +- .../data/db/dao/FingerprintMapDao.kt | 2 +- .../data/db/dao/FloatingButtonDao.kt | 2 +- .../data/db/dao/FloatingLayoutDao.kt | 2 +- .../sds100/keymapper}/data/db/dao/GroupDao.kt | 2 +- .../keymapper}/data/db/dao/KeyMapDao.kt | 2 +- .../keymapper}/data/db/dao/LogEntryDao.kt | 2 +- .../typeconverter/ActionListTypeConverter.kt | 2 +- .../typeconverter/ConstantTypeConverters.kt | 2 +- .../ConstraintListTypeConverter.kt | 2 +- .../typeconverter/ExtraListTypeConverter.kt | 2 +- .../NodeInteractionTypeSetTypeConverter.kt | 2 +- .../db/typeconverter/TriggerTypeConverter.kt | 2 +- .../data/entities/AccessibilityNodeEntity.kt | 2 +- .../keymapper}/data/entities/ActionEntity.kt | 4 +- .../entities/AssistantTriggerKeyEntity.kt | 2 +- .../data/entities/ConstraintEntity.kt | 2 +- .../keymapper}/data/entities/EntityExtra.kt | 4 +- .../data/entities/FingerprintMapEntity.kt | 2 +- .../entities/FingerprintTriggerKeyEntity.kt | 2 +- .../data/entities/FloatingButtonEntity.kt | 2 +- .../FloatingButtonEntityWithLayout.kt | 2 +- .../data/entities/FloatingButtonKeyEntity.kt | 2 +- .../data/entities/FloatingLayoutEntity.kt | 2 +- .../FloatingLayoutEntityWithButtons.kt | 2 +- .../keymapper}/data/entities/GroupEntity.kt | 4 +- .../data/entities/GroupEntityWithChildren.kt | 2 +- .../data/entities/KeyCodeTriggerKeyEntity.kt | 2 +- .../data/entities/KeyMapEntitiesWithGroup.kt | 2 +- .../keymapper}/data/entities/KeyMapEntity.kt | 2 +- .../data/entities/LogEntryEntity.kt | 2 +- .../keymapper}/data/entities/TriggerEntity.kt | 2 +- .../data/entities/TriggerKeyEntity.kt | 2 +- .../data/migration/AutoMigration14To15.kt | 2 +- .../data/migration/AutoMigration15To16.kt | 2 +- .../data/migration/AutoMigration16To17.kt | 2 +- .../data/migration/AutoMigration18To19.kt | 2 +- .../data/migration/AutoMigration19To20.kt | 2 +- .../data/migration/JsonMigration.kt | 2 +- .../data/migration/Migration10To11.kt | 2 +- .../data/migration/Migration11To12.kt | 4 +- .../data/migration/Migration13To14.kt | 2 +- .../data/migration/Migration1To2.kt | 2 +- .../data/migration/Migration2To3.kt | 2 +- .../data/migration/Migration3To4.kt | 2 +- .../data/migration/Migration4To5.kt | 2 +- .../data/migration/Migration5To6.kt | 2 +- .../data/migration/Migration6To7.kt | 2 +- .../data/migration/Migration8To9.kt | 2 +- .../data/migration/Migration9To10.kt | 2 +- .../data/migration/MigrationUtils.kt | 2 +- .../FingerprintMapMigration0To1.kt | 2 +- .../FingerprintMapMigration1To2.kt | 2 +- .../FingerprintToKeyMapMigration.kt | 2 +- .../AccessibilityNodeRepository.kt | 2 +- .../repositories/FloatingButtonRepository.kt | 6 +- .../repositories/FloatingLayoutRepository.kt | 6 +- .../data/repositories/GroupRepository.kt | 6 +- .../data/repositories/PreferenceRepository.kt | 2 +- .../data/repositories/RepositoryUtils.kt | 2 +- .../data/repositories/RoomKeyMapRepository.kt | 10 +- .../data/repositories/RoomLogRepository.kt | 2 +- .../SettingsPreferenceRepository.kt | 2 +- .../sds100/keymapper/data/ExampleUnitTest.kt | 17 + settings.gradle.kts | 1 + system/build.gradle.kts | 1 + system/src/main/AndroidManifest.xml | 103 ++++- .../sds100/keymapper/system/SystemError.kt | 2 +- .../AccessibilityServiceAdapter.kt | 2 +- .../BaseAccessibilityServiceController.kt | 20 +- .../accessibility/IAccessibilityService.kt | 2 +- .../accessibility/MyAccessibilityService.kt | 8 +- .../system/accessibility/ServiceAdapter.kt | 2 +- .../bluetooth/BluetoothBroadcastReceiver.kt | 9 +- .../system/devices/AndroidDevicesAdapter.kt | 2 +- .../system/display/AndroidDisplayAdapter.kt | 4 +- .../system/display/DisplayAdapter.kt | 2 +- .../inputmethod/AndroidInputMethodAdapter.kt | 2 +- .../inputmethod/AutoSwitchImeController.kt | 10 +- .../inputmethod/ImeInputEventInjector.kt | 2 +- .../system/inputmethod/InputKeyModel.kt | 2 +- .../system/inputmethod/KeyMapperImeHelper.kt | 2 +- .../inputmethod/ShowHideInputMethodUseCase.kt | 2 +- .../keymapper/system/intents/IntentAdapter.kt | 6 +- .../system/navigation/OpenMenuHelper.kt | 4 +- .../AndroidNotificationAdapter.kt | 2 +- .../notifications/NotificationController.kt | 18 +- .../notifications/NotificationReceiver.kt | 2 +- .../NotificationReceiverAdapter.kt | 2 +- .../permissions/AndroidPermissionAdapter.kt | 2 +- .../AutoGrantPermissionController.kt | 2 +- .../permissions/RequestPermissionDelegate.kt | 2 +- .../sds100/keymapper/system/root/SuAdapter.kt | 2 +- .../tiles/ToggleKeyMapperKeyboardTile.kt | 6 +- .../system/tiles/ToggleMappingsTile.kt | 6 +- 319 files changed, 1301 insertions(+), 1113 deletions(-) rename {base/src/main/java/io/github/sds100/keymapper/base => api/src/main/java/io/github/sds100/keymapper}/api/LaunchKeyMapShortcutActivity.kt (58%) rename {base/src/main/java/io/github/sds100/keymapper/base => api/src/main/java/io/github/sds100/keymapper}/api/PauseMappingsBroadcastReceiver.kt (75%) rename {base/src/main/java/io/github/sds100/keymapper/base => api/src/main/java/io/github/sds100/keymapper}/api/TriggerKeyMapsBroadcastReceiver.kt (90%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/1.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/10.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/11.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/12.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/13.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/14.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/15.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/16.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/17.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/18.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/19.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/2.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/20.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/3.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/4.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/5.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/6.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/7.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/8.json (100%) rename {app => base}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/9.json (100%) create mode 100644 common/src/main/java/io/github/sds100/keymapper/common/BuildConfigProvider.kt create mode 100644 data/.gitignore create mode 100644 data/build.gradle.kts create mode 100644 data/consumer-rules.pro create mode 100644 data/proguard-rules.pro create mode 100644 data/src/androidTest/java/io/github/sds100/keymapper/data/ExampleInstrumentedTest.kt create mode 100644 data/src/main/AndroidManifest.xml rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/Keys.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/PreferenceDefaults.kt (91%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/AppDatabase.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/dao/AccessibilityNodeDao.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/dao/FingerprintMapDao.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/dao/FloatingButtonDao.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/dao/FloatingLayoutDao.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/dao/GroupDao.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/dao/KeyMapDao.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/dao/LogEntryDao.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/typeconverter/ActionListTypeConverter.kt (91%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/typeconverter/ConstantTypeConverters.kt (84%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/typeconverter/ConstraintListTypeConverter.kt (90%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/typeconverter/ExtraListTypeConverter.kt (87%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt (92%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/db/typeconverter/TriggerTypeConverter.kt (93%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/AccessibilityNodeEntity.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/ActionEntity.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/AssistantTriggerKeyEntity.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/ConstraintEntity.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/EntityExtra.kt (85%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/FingerprintMapEntity.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/FingerprintTriggerKeyEntity.kt (93%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/FloatingButtonEntity.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/FloatingButtonEntityWithLayout.kt (90%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/FloatingButtonKeyEntity.kt (91%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/FloatingLayoutEntity.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/FloatingLayoutEntityWithButtons.kt (89%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/GroupEntity.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/GroupEntityWithChildren.kt (86%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/KeyCodeTriggerKeyEntity.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/KeyMapEntitiesWithGroup.kt (90%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/KeyMapEntity.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/LogEntryEntity.kt (92%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/TriggerEntity.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/entities/TriggerKeyEntity.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/AutoMigration14To15.kt (63%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/AutoMigration15To16.kt (75%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/AutoMigration16To17.kt (63%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/AutoMigration18To19.kt (63%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/AutoMigration19To20.kt (63%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/JsonMigration.kt (75%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/Migration10To11.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/Migration11To12.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/Migration13To14.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/Migration1To2.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/Migration2To3.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/Migration3To4.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/Migration4To5.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/Migration5To6.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/Migration6To7.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/Migration8To9.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/Migration9To10.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/MigrationUtils.kt (92%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/repositories/AccessibilityNodeRepository.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/repositories/FloatingButtonRepository.kt (93%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/repositories/FloatingLayoutRepository.kt (92%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/repositories/GroupRepository.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/repositories/PreferenceRepository.kt (84%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/repositories/RepositoryUtils.kt (92%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/repositories/RoomKeyMapRepository.kt (93%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/repositories/RoomLogRepository.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => data/src/main/java/io/github/sds100/keymapper}/data/repositories/SettingsPreferenceRepository.kt (96%) create mode 100644 data/src/test/java/io/github/sds100/keymapper/data/ExampleUnitTest.kt diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 700dea3e38..407cd6e4f3 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -1,6 +1,8 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) + alias(libs.plugins.google.devtools.ksp) + alias(libs.plugins.jlleitschuh.gradle.ktlint) } android { @@ -18,7 +20,7 @@ android { isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" + "proguard-rules.pro", ) } } @@ -36,5 +38,11 @@ android { } dependencies { + implementation(project(":common")) + implementation(project(":system")) + implementation(libs.jakewharton.timber) -} \ No newline at end of file + + implementation(libs.dagger.hilt.android) + ksp(libs.dagger.hilt.android.compiler) +} diff --git a/api/src/main/AndroidManifest.xml b/api/src/main/AndroidManifest.xml index a5918e68ab..3a648226a5 100644 --- a/api/src/main/AndroidManifest.xml +++ b/api/src/main/AndroidManifest.xml @@ -1,4 +1,35 @@ - + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/api/LaunchKeyMapShortcutActivity.kt b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt similarity index 58% rename from base/src/main/java/io/github/sds100/keymapper/base/api/LaunchKeyMapShortcutActivity.kt rename to api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt index 4a79a8218e..00dc8811c3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/api/LaunchKeyMapShortcutActivity.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt @@ -1,27 +1,33 @@ -package io.github.sds100.keymapper.base.api +package io.github.sds100.keymapper.api import android.app.Activity import android.content.Intent import android.os.Bundle +import android.widget.Toast +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.ServiceLocator +import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.accessibility.ServiceState -import splitties.toast.toast +import javax.inject.Inject // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API /** * Use basic Activity, NOT AppCompatActivity so the NoDisplay theme works. Otherwise an * exception may be thrown because the theme doesn't extend AppCompat. */ +@AndroidEntryPoint class LaunchKeyMapShortcutActivity : Activity() { @Inject - lateinit var buildConfigProvider: BuildConfigProvider + private lateinit var buildConfigProvider: BuildConfigProvider + + @Inject + private lateinit var accessibilityServiceAdapter: ServiceAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val accessibilityServiceState = ServiceLocator.accessibilityServiceAdapter(this).state.value + val accessibilityServiceState = accessibilityServiceAdapter.state.value when (accessibilityServiceState) { ServiceState.ENABLED -> @@ -36,8 +42,17 @@ class LaunchKeyMapShortcutActivity : Activity() { } } - ServiceState.CRASHED -> toast(R.string.error_accessibility_service_crashed) - ServiceState.DISABLED -> toast(R.string.error_accessibility_service_disabled) + ServiceState.CRASHED -> Toast.makeText( + this, + R.string.error_accessibility_service_crashed, + Toast.LENGTH_SHORT, + ) + + ServiceState.DISABLED -> Toast.makeText( + this, + R.string.error_accessibility_service_disabled, + Toast.LENGTH_SHORT, + ) } finish() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/api/PauseMappingsBroadcastReceiver.kt b/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt similarity index 75% rename from base/src/main/java/io/github/sds100/keymapper/base/api/PauseMappingsBroadcastReceiver.kt rename to api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt index 34088636ef..02fe483c57 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/api/PauseMappingsBroadcastReceiver.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt @@ -1,16 +1,20 @@ -package io.github.sds100.keymapper.base.api +package io.github.sds100.keymapper.api import android.content.BroadcastReceiver import android.content.Context import android.content.Intent +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.UseCases -import io.github.sds100.keymapper.util.firstBlocking - - +import io.github.sds100.keymapper.base.util.firstBlocking +import javax.inject.Inject // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API +@AndroidEntryPoint class PauseMappingsBroadcastReceiver : BroadcastReceiver() { + @Inject + private lateinit var pauseKeyMapsUseCase: PauseKeyMapsUseCase + override fun onReceive(context: Context?, intent: Intent?) { context ?: return diff --git a/base/src/main/java/io/github/sds100/keymapper/base/api/TriggerKeyMapsBroadcastReceiver.kt b/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt similarity index 90% rename from base/src/main/java/io/github/sds100/keymapper/base/api/TriggerKeyMapsBroadcastReceiver.kt rename to api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt index dd6c194441..6067f97bca 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/api/TriggerKeyMapsBroadcastReceiver.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt @@ -1,10 +1,10 @@ -package io.github.sds100.keymapper.base.api +package io.github.sds100.keymapper.api import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.util.ServiceEvent +import io.github.sds100.keymapper.base.util.ServiceEvent import kotlinx.coroutines.launch // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7652d5ea5c..6785a1dbc0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -11,7 +11,6 @@ plugins { alias(libs.plugins.kotlin.serialization) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.androidx.navigation.safeargs.kotlin) - alias(libs.plugins.androidx.room) alias(libs.plugins.google.devtools.ksp) alias(libs.plugins.jlleitschuh.gradle.ktlint) } @@ -159,20 +158,20 @@ android { } } - room { - schemaDirectory("$projectDir/schemas") - } } dependencies { implementation(fileTree(mapOf("include" to listOf("*.jar"), "dir" to "libs"))) - implementation(project(":api")) - implementation(project(":base")) implementation(project(":common")) + implementation(project(":base")) + implementation(project(":api")) + implementation(project(":data")) implementation(project(":system")) compileOnly(project(":systemstubs")) + // TODO delete the unused libraries and plugins + // kotlin stuff implementation(libs.kotlinx.coroutines.android) implementation(libs.kotlinx.serialization.json) @@ -189,8 +188,6 @@ dependencies { implementation(libs.anggrayudi.storage) implementation(libs.github.mflisar.dragselectrecyclerview) implementation(libs.google.flexbox) - implementation(libs.rikka.shizuku.api) - implementation(libs.rikka.shizuku.provider) implementation(libs.lsposed.hiddenapibypass) "proImplementation"(libs.revenuecat.purchases) "proImplementation"(libs.airbnb.lottie.compose) @@ -217,9 +214,7 @@ dependencies { implementation(libs.androidx.preference.ktx) implementation(libs.androidx.constraintlayout) implementation(libs.androidx.lifecycle.extensions) // Note: Deprecated - implementation(libs.androidx.room.runtime) implementation(libs.androidx.viewpager2) - implementation(libs.androidx.datastore.preferences) implementation(libs.androidx.core.splashscreen) ksp(libs.androidx.room.compiler) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3b49d3eca3..fb8fd62232 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,78 +2,13 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + tools:ignore="GoogleAppIndexingWarning,MissingTvBanner"> () } @@ -91,10 +93,10 @@ class KeyMapperApp : MultiDexApplication() { Thread.setDefaultUncaughtExceptionHandler { thread, exception -> // log in a blocking manner and always log regardless of whether the setting is turned on - val entry = LogEntryEntity( + val entry = io.github.sds100.keymapper.data.entities.LogEntryEntity( id = 0, time = Calendar.getInstance().timeInMillis, - severity = LogEntryEntity.SEVERITY_ERROR, + severity = io.github.sds100.keymapper.data.entities.LogEntryEntity.SEVERITY_ERROR, message = exception.stackTraceToString(), ) @@ -132,7 +134,7 @@ class KeyMapperApp : MultiDexApplication() { private fun init() { Log.i(tag, "KeyMapperApp: Init") - ServiceLocator.settingsRepository(this).get(Keys.darkTheme) + settingsRepository.get(Keys.darkTheme) .map { it?.toIntOrNull() } .map { when (it) { diff --git a/base/build.gradle.kts b/base/build.gradle.kts index d5c4322bb8..ea4692c0a0 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -60,8 +60,12 @@ android { dependencies { implementation(project(":common")) + implementation(project(":api")) + implementation(project(":data")) implementation(project(":system")) + // TODO delete the unused libraries and plugins + // kotlin stuff implementation(libs.kotlinx.coroutines.android) implementation(libs.kotlinx.serialization.json) diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/1.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/1.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/1.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/1.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/10.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/10.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/10.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/10.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/11.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/11.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/11.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/11.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/12.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/12.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/12.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/12.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/13.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/13.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/13.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/13.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/14.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/14.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/14.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/14.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/15.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/15.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/15.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/15.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/16.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/16.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/16.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/16.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/17.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/17.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/17.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/17.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/18.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/18.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/18.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/18.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/19.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/19.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/19.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/19.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/2.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/2.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/2.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/2.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/20.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/20.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/20.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/20.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/3.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/3.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/3.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/3.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/4.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/4.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/4.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/4.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/5.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/5.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/5.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/5.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/6.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/6.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/6.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/6.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/7.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/7.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/7.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/7.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/8.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/8.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/8.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/8.json diff --git a/app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/9.json b/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/9.json similarity index 100% rename from app/schemas/io.github.sds100.keymapper.data.db.AppDatabase/9.json rename to base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/9.json diff --git a/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt b/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt index f3e8a9dd9a..e91e22c592 100644 --- a/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt +++ b/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.floating -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt b/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt index 16bd420026..0acdf8e74a 100644 --- a/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt +++ b/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt @@ -13,8 +13,8 @@ import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.constraints.isSatisfied import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.entities.ActionEntity -import io.github.sds100.keymapper.keymaps.ClickType -import io.github.sds100.keymapper.keymaps.FingerprintGestureType +import io.github.sds100.keymapper.base.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent @@ -25,9 +25,9 @@ import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerKey import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.InputEventType -import io.github.sds100.keymapper.util.Result +import io.github.sds100.keymapper.base.util.Error +import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.base.util.Result import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay diff --git a/base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt b/base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt index 88a2d9a5ee..53c83767da 100644 --- a/base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt +++ b/base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.purchasing import android.content.Context -import io.github.sds100.keymapper.util.Error -import io.github.sds100.keymapper.util.Result -import io.github.sds100.keymapper.util.State +import io.github.sds100.keymapper.base.util.Error +import io.github.sds100.keymapper.base.util.Result +import io.github.sds100.keymapper.base.util.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/free/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt b/base/src/free/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt index 44c0fcc963..eb21ba3dc6 100644 --- a/base/src/free/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt +++ b/base/src/free/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt @@ -4,14 +4,14 @@ import io.github.sds100.keymapper.actions.PerformActionsUseCase import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.keymaps.FingerprintGesturesSupportedUseCase -import io.github.sds100.keymapper.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase import io.github.sds100.keymapper.reroutekeyevents.RerouteKeyEventsUseCase import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.util.ServiceEvent +import io.github.sds100.keymapper.base.util.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow diff --git a/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt b/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt index 89a8da1b07..e4c3e36273 100644 --- a/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt +++ b/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt @@ -1,12 +1,12 @@ package io.github.sds100.keymapper.trigger -import io.github.sds100.keymapper.keymaps.ConfigKeyMapUseCase -import io.github.sds100.keymapper.keymaps.CreateKeyMapShortcutUseCase -import io.github.sds100.keymapper.keymaps.DisplayKeyMapUseCase -import io.github.sds100.keymapper.keymaps.FingerprintGesturesSupportedUseCase +import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.CreateKeyMapShortcutUseCase +import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.purchasing.PurchasingManager -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope class ConfigTriggerViewModel( diff --git a/base/src/main/AndroidManifest.xml b/base/src/main/AndroidManifest.xml index 8ad78b9f60..b50691d779 100644 --- a/base/src/main/AndroidManifest.xml +++ b/base/src/main/AndroidManifest.xml @@ -1,217 +1,149 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt index 899ed54bd6..2df807d44d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt @@ -6,6 +6,7 @@ import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider import io.github.sds100.keymapper.base.util.DispatcherProvider +import io.github.sds100.keymapper.common.BuildConfigProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope import javax.inject.Singleton @@ -20,4 +21,19 @@ class AppHiltModule { @Provides @Singleton fun provideDispatchers(): DispatcherProvider = DefaultDispatcherProvider() + + @Singleton + @Provides + fun provideBuildConfigProvider(): BuildConfigProvider = object : BuildConfigProvider { + override val minApi: Int + get() = BuildConfig.MIN_API + override val maxApi: Int + get() = BuildConfig.MAX_API + override val packageName: String + get() = BuildConfig.APPLICATION_ID + override val version: String + get() = BuildConfig.VERSION_NAME + override val versionCode: Int + get() = BuildConfig.VERSION_CODE + } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt index a993e6016b..0bc8811f9a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt @@ -35,8 +35,8 @@ import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter import io.github.sds100.keymapper.system.permissions.RequestPermissionDelegate import io.github.sds100.keymapper.trigger.RecordTriggerController -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.showPopups +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt index ca0e096529..f3d01d44e6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData -import io.github.sds100.keymapper.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.KeyMap import kotlinx.serialization.Serializable import splitties.bitflags.hasFlag import splitties.bitflags.withFlag diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt index 4b2365f4e5..316b0cfa69 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt @@ -21,7 +21,7 @@ import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.system.volume.DndMode import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.util.getKey +import io.github.sds100.keymapper.base.util.getKey import kotlinx.serialization.json.Json import splitties.bitflags.hasFlag diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt index d44bb1b874..b5bc675ccc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt @@ -44,10 +44,10 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.LinkType -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.DragDropState +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.LinkType +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.DragDropState @Composable fun ActionListItem( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt index 1637d6d94f..11e040bafc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt @@ -39,13 +39,13 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.ui.SliderMaximums -import io.github.sds100.keymapper.util.ui.SliderMinimums -import io.github.sds100.keymapper.util.ui.SliderStepSizes -import io.github.sds100.keymapper.util.ui.compose.CheckBoxText -import io.github.sds100.keymapper.util.ui.compose.RadioButtonText -import io.github.sds100.keymapper.util.ui.compose.SliderOptionText -import io.github.sds100.keymapper.util.ui.compose.openUriSafe +import io.github.sds100.keymapper.base.util.ui.SliderMaximums +import io.github.sds100.keymapper.base.util.ui.SliderMinimums +import io.github.sds100.keymapper.base.util.ui.SliderStepSizes +import io.github.sds100.keymapper.base.util.ui.compose.CheckBoxText +import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText +import io.github.sds100.keymapper.base.util.ui.compose.SliderOptionText +import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt index 1f710b2fe2..aac9f90aef 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt @@ -7,7 +7,7 @@ import androidx.compose.material.icons.outlined.Android import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType import io.github.sds100.keymapper.common.result.handle -import io.github.sds100.keymapper.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.display.OrientationUtils @@ -16,11 +16,11 @@ import io.github.sds100.keymapper.system.intents.IntentTarget import io.github.sds100.keymapper.system.volume.DndModeUtils import io.github.sds100.keymapper.system.volume.RingerModeUtils import io.github.sds100.keymapper.system.volume.VolumeStreamUtils -import io.github.sds100.keymapper.util.toPercentString -import io.github.sds100.keymapper.util.ui.IconInfo -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.TintType -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.toPercentString +import io.github.sds100.keymapper.base.util.ui.IconInfo +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.TintType +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo import splitties.bitflags.hasFlag class ActionUiHelper( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt index 9e62e4ea50..711c692644 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt @@ -73,15 +73,15 @@ import androidx.compose.material.icons.rounded.WifiOff import androidx.compose.ui.graphics.vector.ImageVector import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.ui.compose.icons.HomeIotDevice -import io.github.sds100.keymapper.util.ui.compose.icons.InstantMix -import io.github.sds100.keymapper.util.ui.compose.icons.JumpToElement -import io.github.sds100.keymapper.util.ui.compose.icons.KeyMapperIcons -import io.github.sds100.keymapper.util.ui.compose.icons.MatchWord -import io.github.sds100.keymapper.util.ui.compose.icons.NfcOff -import io.github.sds100.keymapper.util.ui.compose.icons.TextSelectEnd -import io.github.sds100.keymapper.util.ui.compose.icons.TopPanelClose -import io.github.sds100.keymapper.util.ui.compose.icons.TopPanelOpen +import io.github.sds100.keymapper.base.util.ui.compose.icons.HomeIotDevice +import io.github.sds100.keymapper.base.util.ui.compose.icons.InstantMix +import io.github.sds100.keymapper.base.util.ui.compose.icons.JumpToElement +import io.github.sds100.keymapper.base.util.ui.compose.icons.KeyMapperIcons +import io.github.sds100.keymapper.base.util.ui.compose.icons.MatchWord +import io.github.sds100.keymapper.base.util.ui.compose.icons.NfcOff +import io.github.sds100.keymapper.base.util.ui.compose.icons.TextSelectEnd +import io.github.sds100.keymapper.base.util.ui.compose.icons.TopPanelClose +import io.github.sds100.keymapper.base.util.ui.compose.icons.TopPanelOpen object ActionUtils { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt index 0ed2b8f9ea..9549981a5d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt @@ -39,14 +39,14 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.keymaps.ShortcutModel -import io.github.sds100.keymapper.keymaps.ShortcutRow +import io.github.sds100.keymapper.base.keymaps.ShortcutModel +import io.github.sds100.keymapper.base.keymaps.ShortcutRow import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.ui.LinkType -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.DraggableItem -import io.github.sds100.keymapper.util.ui.compose.rememberDragDropState +import io.github.sds100.keymapper.base.util.ui.LinkType +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.DraggableItem +import io.github.sds100.keymapper.base.util.ui.compose.rememberDragDropState import kotlinx.coroutines.flow.update @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt index 7c29aabfee..04f55579ae 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt @@ -25,11 +25,11 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.setupNavigation -import io.github.sds100.keymapper.util.ui.showPopups -import io.github.sds100.keymapper.util.viewLifecycleScope +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.setupNavigation +import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt index 64518afcbb..17abbb2d8d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt @@ -41,12 +41,12 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.SearchAppBarActions -import io.github.sds100.keymapper.util.ui.compose.SimpleListItemFixedHeight -import io.github.sds100.keymapper.util.ui.compose.SimpleListItemGroup -import io.github.sds100.keymapper.util.ui.compose.SimpleListItemHeader -import io.github.sds100.keymapper.util.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.SearchAppBarActions +import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemFixedHeight +import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemGroup +import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemHeader +import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel import kotlinx.coroutines.flow.update @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index 900c5be058..292bf2efc9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -7,19 +7,19 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.containsQuery -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.ui.DialogResponse -import io.github.sds100.keymapper.util.ui.NavigationViewModel -import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.SimpleListItemGroup -import io.github.sds100.keymapper.util.ui.compose.SimpleListItemModel -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.containsQuery +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.ui.DialogResponse +import io.github.sds100.keymapper.base.util.ui.NavigationViewModel +import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemGroup +import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index 42fa18be5a..e9e833e235 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -3,31 +3,31 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.keymaps.ConfigKeyMapUseCase -import io.github.sds100.keymapper.keymaps.KeyMap -import io.github.sds100.keymapper.keymaps.ShortcutModel +import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.isFixable +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.isFixable import io.github.sds100.keymapper.common.state.mapData -import io.github.sds100.keymapper.util.ui.ChooseAppStoreModel -import io.github.sds100.keymapper.util.ui.DialogResponse -import io.github.sds100.keymapper.util.ui.LinkType -import io.github.sds100.keymapper.util.ui.NavDestination -import io.github.sds100.keymapper.util.ui.NavigationViewModel -import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.ViewModelHelper -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.navigate -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.ui.ChooseAppStoreModel +import io.github.sds100.keymapper.base.util.ui.DialogResponse +import io.github.sds100.keymapper.base.util.ui.LinkType +import io.github.sds100.keymapper.base.util.ui.NavDestination +import io.github.sds100.keymapper.base.util.ui.NavigationViewModel +import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ViewModelHelper +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.navigate +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index 7851dbea02..6951dd0373 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -20,14 +20,14 @@ import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.RingerModeUtils import io.github.sds100.keymapper.system.volume.VolumeStream import io.github.sds100.keymapper.system.volume.VolumeStreamUtils -import io.github.sds100.keymapper.util.ui.MultiChoiceItem -import io.github.sds100.keymapper.util.ui.NavDestination -import io.github.sds100.keymapper.util.ui.NavigationViewModel -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.navigate -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.ui.MultiChoiceItem +import io.github.sds100.keymapper.base.util.ui.NavDestination +import io.github.sds100.keymapper.base.util.ui.NavigationViewModel +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.navigate +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt index ef59aae8b2..7e740814e8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt @@ -50,9 +50,9 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.system.camera.CameraFlashInfo import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.util.ui.compose.KeyMapperSliderThumb -import io.github.sds100.keymapper.util.ui.compose.OptionsHeaderRow -import io.github.sds100.keymapper.util.ui.compose.RadioButtonText +import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperSliderThumb +import io.github.sds100.keymapper.base.util.ui.compose.OptionsHeaderRow +import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText import kotlinx.coroutines.launch import kotlin.math.roundToInt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt index 84f593311f..731054d600 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt @@ -12,8 +12,8 @@ import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.systemfeature.SystemFeatureAdapter -import io.github.sds100.keymapper.util.ResourceProvider -import io.github.sds100.keymapper.util.SoundsManager +import io.github.sds100.keymapper.base.util.ResourceProvider +import io.github.sds100.keymapper.base.util.SoundsManager import javax.inject.Inject import javax.inject.Singleton import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt index c23e5370e8..0721a0318c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt @@ -40,7 +40,7 @@ import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.system.network.HttpMethod -import io.github.sds100.keymapper.util.ui.compose.KeyMapperDropdownMenu +import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperDropdownMenu import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import okhttp3.HttpUrl.Companion.toHttpUrlOrNull diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt index bcb37d8a38..7eb875eb0b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt @@ -55,14 +55,14 @@ import io.github.sds100.keymapper.system.url.OpenUrlAdapter import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.VolumeAdapter import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.util.InputEventType -import io.github.sds100.keymapper.util.ServiceEvent +import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.base.util.ServiceEvent import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.util.firstBlocking -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.getWordBoundaries +import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.getWordBoundaries import io.github.sds100.keymapper.common.state.ifIsData -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow @@ -81,7 +81,7 @@ import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapt import io.github.sds100.keymapper.system.audio.AudioAdapter import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjectorImpl import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapter -import io.github.sds100.keymapper.util.SettingsRepository +import io.github.sds100.keymapper.base.util.SettingsRepository import io.github.sds100.keymapper.system.power.PowerAdapter import javax.inject.Inject import javax.inject.Singleton diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt index c7c32ef11b..7e99b87876 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.accessibility.ServiceAdapter -import io.github.sds100.keymapper.util.ServiceEvent +import io.github.sds100.keymapper.base.util.ServiceEvent diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt index 159ff4f71d..7d92ac2c99 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt @@ -6,12 +6,12 @@ import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple -import io.github.sds100.keymapper.util.Inject +import io.github.sds100.keymapper.base.util.Inject import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.RecyclerViewUtils -import io.github.sds100.keymapper.util.ui.SimpleListItemOld -import io.github.sds100.keymapper.util.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils +import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt index 949949797f..e79e73c8af 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -7,11 +7,11 @@ import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.util.filterByQuery -import io.github.sds100.keymapper.util.ui.DefaultSimpleListItem -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.util.filterByQuery +import io.github.sds100.keymapper.base.util.ui.DefaultSimpleListItem +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt index 135afd02ca..965d24c402 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt @@ -19,11 +19,11 @@ import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.FragmentConfigKeyEventBinding import io.github.sds100.keymapper.ui.utils.putJsonSerializable -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.str -import io.github.sds100.keymapper.util.ui.configuredCheckBox -import io.github.sds100.keymapper.util.ui.setupNavigation +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.str +import io.github.sds100.keymapper.base.util.ui.configuredCheckBox +import io.github.sds100.keymapper.base.util.ui.setupNavigation import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt index e90d20a659..330436296b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -19,13 +19,13 @@ import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.ui.CheckBoxListItem -import io.github.sds100.keymapper.util.ui.NavDestination -import io.github.sds100.keymapper.util.ui.NavigationViewModel -import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.navigate +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.ui.CheckBoxListItem +import io.github.sds100.keymapper.base.util.ui.NavDestination +import io.github.sds100.keymapper.base.util.ui.NavigationViewModel +import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.navigate import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt index 085a0a8eff..274e4f7ceb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt @@ -24,10 +24,10 @@ import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.FragmentPinchPickCoordinatesBinding import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.str -import io.github.sds100.keymapper.util.ui.showPopups +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.str +import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt index 77db5b8c2b..abee246955 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt @@ -11,11 +11,11 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt index 316f0069b4..1b24ba0494 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt @@ -24,9 +24,9 @@ import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.databinding.FragmentChooseSoundFileBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.showPopups +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.update diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt index 9325a22fc4..2e4830a05a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt @@ -8,13 +8,13 @@ import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.common.result.onFailure import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.common.result.valueOrNull -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.ui.DefaultSimpleListItem -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.ui.DefaultSimpleListItem +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt index 4f95f841ae..9409027cfb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt @@ -22,9 +22,9 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.databinding.FragmentSwipePickCoordinatesBinding import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.showPopups +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt index 089cde77ec..9e9f8c610c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt @@ -9,11 +9,11 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt index 4edcd9f31e..ffe1563a0c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt @@ -8,7 +8,7 @@ import android.util.AttributeSet import android.view.MotionEvent import androidx.appcompat.widget.AppCompatImageView import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.util.color +import io.github.sds100.keymapper.base.util.color import kotlinx.coroutines.flow.MutableStateFlow import kotlin.math.roundToInt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt index 6548538c51..88d665857a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt @@ -22,9 +22,9 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.databinding.FragmentPickCoordinateBinding import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.showPopups +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt index b2c1c6bd95..5e4a29d752 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt @@ -7,11 +7,11 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt index b1e1aa2b82..e72508efa8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt @@ -52,10 +52,10 @@ import androidx.window.core.layout.WindowWidthSizeClass import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.ui.compose.CheckBoxText -import io.github.sds100.keymapper.util.ui.compose.KeyMapperDropdownMenu -import io.github.sds100.keymapper.util.ui.compose.SearchAppBarActions -import io.github.sds100.keymapper.util.ui.compose.WindowSizeClassExt.compareTo +import io.github.sds100.keymapper.base.util.ui.compose.CheckBoxText +import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperDropdownMenu +import io.github.sds100.keymapper.base.util.ui.compose.SearchAppBarActions +import io.github.sds100.keymapper.base.util.ui.compose.WindowSizeClassExt.compareTo @Composable fun ChooseElementScreen( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt index 070db311c9..b24ef2fbc6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt @@ -25,10 +25,10 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.showPopups -import io.github.sds100.keymapper.util.viewLifecycleScope +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt index 350663b7ac..6e28263a36 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt @@ -74,14 +74,14 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.base.ui.apps.ChooseAppScreen import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.KeyMapperDropdownMenu -import io.github.sds100.keymapper.util.ui.compose.OptionsHeaderRow -import io.github.sds100.keymapper.util.ui.compose.WindowSizeClassExt.compareTo -import io.github.sds100.keymapper.util.ui.compose.icons.AdGroup -import io.github.sds100.keymapper.util.ui.compose.icons.JumpToElement -import io.github.sds100.keymapper.util.ui.compose.icons.KeyMapperIcons +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperDropdownMenu +import io.github.sds100.keymapper.base.util.ui.compose.OptionsHeaderRow +import io.github.sds100.keymapper.base.util.ui.compose.WindowSizeClassExt.compareTo +import io.github.sds100.keymapper.base.util.ui.compose.icons.AdGroup +import io.github.sds100.keymapper.base.util.ui.compose.icons.JumpToElement +import io.github.sds100.keymapper.base.util.ui.compose.icons.KeyMapperIcons import kotlinx.coroutines.flow.update private const val DEST_LANDING = "landing" diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt index 7a8b3f588f..9754f984be 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt @@ -8,7 +8,7 @@ import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter -import io.github.sds100.keymapper.util.ServiceEvent +import io.github.sds100.keymapper.base.util.ServiceEvent import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.mapData import kotlinx.coroutines.CoroutineScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt index d50a094b7b..6c12fb20d8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt @@ -16,17 +16,17 @@ import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.containsQuery +import io.github.sds100.keymapper.base.util.containsQuery import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.common.state.ifIsData import io.github.sds100.keymapper.common.state.mapData -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.ViewModelHelper -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ViewModelHelper +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt index edd79a207d..8ad0d38bee 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt @@ -49,16 +49,16 @@ import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository import io.github.sds100.keymapper.data.repositories.GroupRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.data.repositories.RepositoryUtils -import io.github.sds100.keymapper.keymaps.KeyMapRepository +import io.github.sds100.keymapper.base.keymaps.KeyMapRepository import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.system.files.IFile -import io.github.sds100.keymapper.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.util.DefaultUuidGenerator -import io.github.sds100.keymapper.util.DispatcherProvider +import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.util.DefaultUuidGenerator +import io.github.sds100.keymapper.base.util.DispatcherProvider import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.TreeNode -import io.github.sds100.keymapper.util.UuidGenerator -import io.github.sds100.keymapper.util.breadFirstTraversal +import io.github.sds100.keymapper.base.util.TreeNode +import io.github.sds100.keymapper.base.util.UuidGenerator +import io.github.sds100.keymapper.base.util.breadFirstTraversal import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt index 63734edf51..ee314ebc09 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt @@ -20,7 +20,7 @@ import io.github.sds100.keymapper.MainActivity import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.ui.compose.CustomDialogContent +import io.github.sds100.keymapper.base.util.ui.compose.CustomDialogContent class RestoreKeyMapsActivity : ComponentActivity() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt index 156135595c..1833516416 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt @@ -5,8 +5,8 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.common.result.onFailure import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt index 86e50a3944..43ee2f7b24 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt @@ -25,11 +25,11 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.setupNavigation -import io.github.sds100.keymapper.util.ui.showPopups -import io.github.sds100.keymapper.util.viewLifecycleScope +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.setupNavigation +import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt index 97a2ea1afc..b4ef1098d6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt @@ -48,9 +48,9 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.SimpleListItemFixedHeight -import io.github.sds100.keymapper.util.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemFixedHeight +import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel import kotlinx.coroutines.flow.update @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt index 4c6f3cb8cd..3bccbcaccf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt @@ -11,18 +11,18 @@ import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.camera.CameraLensUtils import io.github.sds100.keymapper.system.display.Orientation import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.containsQuery -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.ui.NavDestination -import io.github.sds100.keymapper.util.ui.NavigationViewModel -import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.compose.SimpleListItemModel -import io.github.sds100.keymapper.util.ui.navigate -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.containsQuery +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.ui.NavDestination +import io.github.sds100.keymapper.base.util.ui.NavigationViewModel +import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.base.util.ui.navigate +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index 16ee7971a5..6c6627cf5c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -4,24 +4,24 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.keymaps.ConfigKeyMapUseCase -import io.github.sds100.keymapper.keymaps.ShortcutModel +import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.isFixable +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.isFixable import io.github.sds100.keymapper.common.state.mapData -import io.github.sds100.keymapper.util.ui.NavDestination -import io.github.sds100.keymapper.util.ui.NavigationViewModel -import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.ViewModelHelper -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.navigate +import io.github.sds100.keymapper.base.util.ui.NavDestination +import io.github.sds100.keymapper.base.util.ui.NavigationViewModel +import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ViewModelHelper +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.navigate import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt index 631a014eaf..d2fb7c8e81 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.display.Orientation -import io.github.sds100.keymapper.util.getKey +import io.github.sds100.keymapper.base.util.getKey import kotlinx.serialization.Serializable import java.time.LocalTime import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt index e4373fdae4..1bc3f41ab1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt @@ -35,8 +35,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo @Composable fun ConstraintListItem( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt index d06bcf1ab4..e6863d24bf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.constraints -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo data class ConstraintListItemModel( val id: String, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt index d0f588aea3..dbf3c40dad 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt @@ -15,7 +15,7 @@ import io.github.sds100.keymapper.system.network.NetworkAdapter import io.github.sds100.keymapper.system.phone.CallState import io.github.sds100.keymapper.system.phone.PhoneAdapter import io.github.sds100.keymapper.system.power.PowerAdapter -import io.github.sds100.keymapper.util.firstBlocking +import io.github.sds100.keymapper.base.util.firstBlocking import timber.log.Timber import java.time.LocalTime diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt index adb6315289..f950ee1c20 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt @@ -7,9 +7,9 @@ import io.github.sds100.keymapper.common.result.handle import io.github.sds100.keymapper.common.result.valueIfFailure import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.display.Orientation -import io.github.sds100.keymapper.util.TimeUtils -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.TimeUtils +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo import java.time.format.FormatStyle class ConstraintUiHelper( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt index d5cf1690be..9df5f818f2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt @@ -25,7 +25,7 @@ import androidx.compose.material.icons.outlined.Wifi import androidx.compose.material.icons.outlined.WifiOff import androidx.compose.material.icons.rounded.Android import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo object ConstraintUtils { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt index ab2015b89f..c51bba888c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt @@ -39,13 +39,13 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.keymaps.ShortcutModel -import io.github.sds100.keymapper.keymaps.ShortcutRow +import io.github.sds100.keymapper.base.keymaps.ShortcutModel +import io.github.sds100.keymapper.base.keymaps.ShortcutRow import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.RadioButtonText +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText @Composable fun ConstraintsScreen( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt index 9edb889e21..5bb667c5c0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt @@ -43,8 +43,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.TimeUtils -import io.github.sds100.keymapper.util.ui.compose.OptionsHeaderRow +import io.github.sds100.keymapper.base.util.TimeUtils +import io.github.sds100.keymapper.base.util.ui.compose.OptionsHeaderRow import kotlinx.coroutines.launch import java.time.format.FormatStyle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt index 830c43feb6..c90e3df83f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt @@ -4,8 +4,8 @@ import io.github.sds100.keymapper.data.db.typeconverter.ConstantTypeConverters import io.github.sds100.keymapper.data.entities.FloatingButtonEntity import io.github.sds100.keymapper.floating.FloatingButtonData.Location import io.github.sds100.keymapper.system.display.Orientation -import io.github.sds100.keymapper.util.SizeKM -import io.github.sds100.keymapper.util.getKey +import io.github.sds100.keymapper.base.util.SizeKM +import io.github.sds100.keymapper.base.util.getKey import kotlinx.serialization.Serializable import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt index 8c941286a1..8c33f5d303 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt @@ -42,9 +42,9 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo @Composable fun GroupConstraintRow( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupListItemModel.kt index db204beb18..740cfd3aa6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupListItemModel.kt @@ -1,5 +1,5 @@ package io.github.sds100.keymapper.base.groups -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo data class GroupListItemModel(val uid: String, val name: String, val icon: ComposeIconInfo? = null) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt index 3c44077e1d..14fe1f91ed 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt @@ -44,8 +44,8 @@ import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo @Composable fun GroupRow( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt index 0f78269ed3..1f0ec96ef2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt @@ -22,9 +22,9 @@ import io.github.sds100.keymapper.NavAppDirections import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.ui.setupNavigation -import io.github.sds100.keymapper.util.ui.showPopups +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.ui.setupNavigation +import io.github.sds100.keymapper.base.util.ui.showPopups class HomeFragment : Fragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt index 6f2e787a51..eeba71317a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt @@ -60,24 +60,24 @@ import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.groups.GroupListItemModel -import io.github.sds100.keymapper.keymaps.KeyMapAppBarState -import io.github.sds100.keymapper.keymaps.KeyMapList -import io.github.sds100.keymapper.keymaps.KeyMapListViewModel +import io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState +import io.github.sds100.keymapper.base.keymaps.KeyMapList +import io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel import io.github.sds100.keymapper.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.sorting.SortBottomSheet import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.trigger.DpadTriggerSetupBottomSheet import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.util.ShareUtils +import io.github.sds100.keymapper.base.util.ShareUtils import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.compose.CollapsableFloatingActionButton -import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.KeyMapperTapTarget -import io.github.sds100.keymapper.util.ui.compose.keyMapperShowcaseStyle -import io.github.sds100.keymapper.util.ui.compose.openUriSafe +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.compose.CollapsableFloatingActionButton +import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperTapTarget +import io.github.sds100.keymapper.base.util.ui.compose.keyMapperShowcaseStyle +import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt index 992ed4d202..b471a952f3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt @@ -33,7 +33,7 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController -import io.github.sds100.keymapper.util.ui.SelectionState +import io.github.sds100.keymapper.base.util.ui.SelectionState @Composable fun HomeScreen( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt index 03cdec467d..58005552e1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt @@ -13,21 +13,21 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.backup.BackupRestoreMappingsUseCase import io.github.sds100.keymapper.floating.ListFloatingLayoutsUseCase import io.github.sds100.keymapper.floating.ListFloatingLayoutsViewModel -import io.github.sds100.keymapper.keymaps.KeyMapListViewModel -import io.github.sds100.keymapper.keymaps.ListKeyMapsUseCase -import io.github.sds100.keymapper.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel +import io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase -import io.github.sds100.keymapper.util.ui.DialogResponse -import io.github.sds100.keymapper.util.ui.NavigationViewModel -import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.ui.DialogResponse +import io.github.sds100.keymapper.base.util.ui.NavigationViewModel +import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt index 8b246075e2..337cb040d2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt @@ -100,13 +100,13 @@ import io.github.sds100.keymapper.groups.GroupBreadcrumbRow import io.github.sds100.keymapper.groups.GroupConstraintRow import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.groups.GroupRow -import io.github.sds100.keymapper.keymaps.KeyMapAppBarState -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.RadioButtonText -import io.github.sds100.keymapper.util.ui.compose.icons.Import -import io.github.sds100.keymapper.util.ui.compose.icons.KeyMapperIcons +import io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText +import io.github.sds100.keymapper.base.util.ui.compose.icons.Import +import io.github.sds100.keymapper.base.util.ui.compose.icons.KeyMapperIcons import kotlinx.coroutines.launch @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt index 2f642ba933..8106552e5f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt @@ -43,8 +43,8 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.groups.GroupBreadcrumbRow import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.groups.GroupRow -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt index f863c47748..8521ec8191 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.home import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.accessibility.ServiceState import io.github.sds100.keymapper.system.permissions.Permission diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt index 429da15400..81b9b1bace 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt @@ -21,9 +21,9 @@ import androidx.navigation.navGraphViewModels import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.ui.setupNavigation -import io.github.sds100.keymapper.util.ui.showPopups +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.ui.setupNavigation +import io.github.sds100.keymapper.base.util.ui.showPopups class ConfigKeyMapFragment : Fragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt index 25575e3d15..0ae3192f65 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt @@ -7,14 +7,14 @@ import io.github.sds100.keymapper.actions.ActionUiHelper import io.github.sds100.keymapper.common.result.onFailure import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.util.getFullMessage +import io.github.sds100.keymapper.base.util.getFullMessage import io.github.sds100.keymapper.common.state.mapData -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.TintType -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.TintType +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt index cbe522f02f..7c041331e1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt @@ -61,9 +61,9 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintsScreen import io.github.sds100.keymapper.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.trigger.TriggerScreen -import io.github.sds100.keymapper.util.ui.compose.KeyMapperTapTarget -import io.github.sds100.keymapper.util.ui.compose.keyMapperShowcaseStyle -import io.github.sds100.keymapper.util.ui.compose.openUriSafe +import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperTapTarget +import io.github.sds100.keymapper.base.util.ui.compose.keyMapperShowcaseStyle +import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe import kotlinx.coroutines.launch @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt index d8a7184c27..9a8c03202a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt @@ -30,9 +30,9 @@ import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerKey import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode -import io.github.sds100.keymapper.util.ServiceEvent -import io.github.sds100.keymapper.util.firstBlocking -import io.github.sds100.keymapper.util.moveElement +import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.base.util.moveElement import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt index 0d9714c548..adf8fc86cf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt @@ -17,9 +17,9 @@ import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.ui.utils.getJsonSerializable import io.github.sds100.keymapper.ui.utils.putJsonSerializable import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.util.firstBlocking +import io.github.sds100.keymapper.base.util.firstBlocking import io.github.sds100.keymapper.common.state.ifIsData -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt index 769d36ed2f..37f382b6f8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt @@ -14,8 +14,8 @@ import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.compose.ComposeColors import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.system.permissions.RequestPermissionDelegate -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle import kotlinx.coroutines.flow.collectLatest class CreateKeyMapShortcutActivity : AppCompatActivity() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt index a1881a3383..0265728052 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt @@ -47,10 +47,10 @@ import io.github.sds100.keymapper.groups.GroupRow import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.CustomDialog +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.CustomDialog @Composable fun CreateKeyMapShortcutScreen( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt index daf244f9b6..da37b6b2ba 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt @@ -7,7 +7,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.api.Api import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.system.apps.AppShortcutAdapter -import io.github.sds100.keymapper.util.ResourceProvider +import io.github.sds100.keymapper.base.util.ResourceProvider import javax.inject.Inject import javax.inject.Singleton diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt index 6598ff973d..907ecdb9eb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt @@ -19,9 +19,9 @@ import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.mapData -import io.github.sds100.keymapper.util.ResourceProvider -import io.github.sds100.keymapper.util.ui.TintType -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.TintType +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index edfb76b633..77f4f0e819 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -31,8 +31,8 @@ import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.util.ResourceProvider -import io.github.sds100.keymapper.util.SettingsRepository +import io.github.sds100.keymapper.base.util.ResourceProvider +import io.github.sds100.keymapper.base.util.SettingsRepository import kotlinx.coroutines.TimeoutCancellationException import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.callbackFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt index cce662add6..ebca3a24c7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt @@ -4,7 +4,7 @@ import android.content.Context import android.os.Build import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.util.SettingsRepository +import io.github.sds100.keymapper.base.util.SettingsRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt index 970fc3dbd8..b128fbafaa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.constraints.ConstraintModeEntityMapper import io.github.sds100.keymapper.constraints.ConstraintState import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout import io.github.sds100.keymapper.data.entities.KeyMapEntity -import io.github.sds100.keymapper.keymaps.detection.KeyMapController +import io.github.sds100.keymapper.base.keymaps.detection.KeyMapController import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerEntityMapper import io.github.sds100.keymapper.trigger.TriggerKey diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt index 5e87a76ca1..0121a47924 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt @@ -4,7 +4,7 @@ import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.home.HomeWarningListItem import io.github.sds100.keymapper.home.SelectedKeyMapsEnabled -import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel sealed class KeyMapAppBarState { data class RootGroup( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt index 7bc235c120..396091d471 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt @@ -22,10 +22,10 @@ import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode -import io.github.sds100.keymapper.util.isFixable -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.isFixable +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo class KeyMapListItemCreator( private val displayMapping: DisplayKeyMapUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt index 1c24e962a5..f5e011d3a8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt @@ -60,11 +60,11 @@ import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.compose.CompactChip -import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.ErrorCompactChip +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.compose.CompactChip +import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.ErrorCompactChip @Composable fun KeyMapList( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index 750e976df5..2ec7c6809d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -37,24 +37,24 @@ import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.util.getFullMessage +import io.github.sds100.keymapper.base.util.getFullMessage import io.github.sds100.keymapper.common.state.ifIsData import io.github.sds100.keymapper.common.state.mapData -import io.github.sds100.keymapper.util.ui.DialogResponse -import io.github.sds100.keymapper.util.ui.MultiSelectProvider -import io.github.sds100.keymapper.util.ui.NavDestination -import io.github.sds100.keymapper.util.ui.NavigateEvent -import io.github.sds100.keymapper.util.ui.NavigationViewModel -import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.SelectionState -import io.github.sds100.keymapper.util.ui.ViewModelHelper -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.navigate -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.ui.DialogResponse +import io.github.sds100.keymapper.base.util.ui.MultiSelectProvider +import io.github.sds100.keymapper.base.util.ui.NavDestination +import io.github.sds100.keymapper.base.util.ui.NavigateEvent +import io.github.sds100.keymapper.base.util.ui.NavigationViewModel +import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.SelectionState +import io.github.sds100.keymapper.base.util.ui.ViewModelHelper +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.navigate +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt index 51b64cb582..3901477025 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt @@ -44,12 +44,12 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.ui.SliderMaximums -import io.github.sds100.keymapper.util.ui.SliderMinimums -import io.github.sds100.keymapper.util.ui.SliderStepSizes -import io.github.sds100.keymapper.util.ui.compose.CheckBoxText -import io.github.sds100.keymapper.util.ui.compose.SliderOptionText -import io.github.sds100.keymapper.util.ui.compose.openUriSafe +import io.github.sds100.keymapper.base.util.ui.SliderMaximums +import io.github.sds100.keymapper.base.util.ui.SliderMinimums +import io.github.sds100.keymapper.base.util.ui.SliderStepSizes +import io.github.sds100.keymapper.base.util.ui.compose.CheckBoxText +import io.github.sds100.keymapper.base.util.ui.compose.SliderOptionText +import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe import kotlinx.coroutines.launch @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt index 34a09a3df1..f138ee082b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt @@ -21,7 +21,7 @@ import io.github.sds100.keymapper.groups.GroupFamily import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt index e48b12f372..041bf66670 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.media.MediaAdapter import io.github.sds100.keymapper.system.ringtone.RingtoneAdapter -import io.github.sds100.keymapper.util.SettingsRepository +import io.github.sds100.keymapper.base.util.SettingsRepository import javax.inject.Inject import javax.inject.Singleton import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt index e81bc4b370..aad1008728 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.keymaps -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo data class ShortcutModel( val icon: ComposeIconInfo, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt index 7ead793fab..9bdbd7fac3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt @@ -27,8 +27,8 @@ import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.trigger.TriggerKeyShortcut -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo @Composable fun ShortcutRow( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt index 2e36b9f33f..ce76f1942f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt @@ -6,8 +6,8 @@ import io.github.sds100.keymapper.actions.RepeatMode import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.constraints.isSatisfied import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.keymaps.detection.DetectKeyMapsUseCase -import io.github.sds100.keymapper.util.InputEventType +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.base.util.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineStart import kotlinx.coroutines.Job diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt index 2e52b19f7f..b732403cc2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.constraints.ConstraintState -import io.github.sds100.keymapper.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.KeyMap data class DetectKeyMapModel( val keyMap: KeyMap, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt index d01c30fbe5..685beaff52 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt @@ -13,9 +13,9 @@ import io.github.sds100.keymapper.data.repositories.GroupRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.groups.Group import io.github.sds100.keymapper.groups.GroupEntityMapper -import io.github.sds100.keymapper.keymaps.KeyMap -import io.github.sds100.keymapper.keymaps.KeyMapEntityMapper -import io.github.sds100.keymapper.keymaps.KeyMapRepository +import io.github.sds100.keymapper.base.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.KeyMapEntityMapper +import io.github.sds100.keymapper.base.keymaps.KeyMapRepository import io.github.sds100.keymapper.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.system.display.DisplayAdapter import io.github.sds100.keymapper.system.inputevents.InputEventInjector @@ -29,11 +29,11 @@ import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.system.vibrator.VibratorAdapter import io.github.sds100.keymapper.system.volume.VolumeAdapter import io.github.sds100.keymapper.trigger.FingerprintTriggerKey -import io.github.sds100.keymapper.util.InputEventType +import io.github.sds100.keymapper.base.util.InputEventType import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.util.ResourceProvider -import io.github.sds100.keymapper.util.SettingsRepository +import io.github.sds100.keymapper.base.util.ResourceProvider +import io.github.sds100.keymapper.base.util.SettingsRepository import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt index 43da4593ce..c4bfd63cd1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.actions.PerformActionsUseCase import io.github.sds100.keymapper.actions.RepeatMode import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.util.InputEventType +import io.github.sds100.keymapper.base.util.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt index 15d5540e4b..04334eb666 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.PerformActionsUseCase -import io.github.sds100.keymapper.util.InputEventType +import io.github.sds100.keymapper.base.util.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt index 256ff28034..2b61bc4705 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt @@ -2,8 +2,8 @@ package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.actions.PerformActionsUseCase import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase -import io.github.sds100.keymapper.keymaps.KeyMap -import io.github.sds100.keymapper.keymaps.SimpleMappingController +import io.github.sds100.keymapper.base.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.SimpleMappingController import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt index 8eab7cdd9a..a5536b616c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.ifIsData import io.github.sds100.keymapper.common.state.mapData -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt index b9c27419fa..a08fe0a7bf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.logging import android.util.Log -import io.github.sds100.keymapper.base.data.Keys -import io.github.sds100.keymapper.base.data.entities.LogEntryEntity -import io.github.sds100.keymapper.base.data.repositories.PreferenceRepository +import io.github.sds100.keymapper.data.Keys +import io.github.sds100.keymapper.data.entities.LogEntryEntity +import io.github.sds100.keymapper.data.repositories.PreferenceRepository import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.channels.BufferOverflow @@ -22,14 +22,14 @@ import javax.inject.Inject @Inject class KeyMapperLoggingTree constructor( private val coroutineScope: CoroutineScope, - preferenceRepository: PreferenceRepository, + preferenceRepository: io.github.sds100.keymapper.data.repositories.PreferenceRepository, private val logRepository: LogRepository, ) : Timber.Tree() { - private val logEverything: StateFlow = preferenceRepository.get(Keys.log) + private val logEverything: StateFlow = preferenceRepository.get(io.github.sds100.keymapper.data.Keys.log) .map { it ?: false } .stateIn(coroutineScope, SharingStarted.Eagerly, false) - private val messagesToLog = MutableSharedFlow( + private val messagesToLog = MutableSharedFlow( extraBufferCapacity = 1000, onBufferOverflow = BufferOverflow.SUSPEND, ) @@ -50,14 +50,14 @@ class KeyMapperLoggingTree constructor( } val severity = when (priority) { - Log.ERROR -> LogEntryEntity.SEVERITY_ERROR - Log.DEBUG -> LogEntryEntity.SEVERITY_DEBUG - Log.INFO -> LogEntryEntity.SEVERITY_INFO - else -> LogEntryEntity.SEVERITY_DEBUG + Log.ERROR -> io.github.sds100.keymapper.data.entities.LogEntryEntity.SEVERITY_ERROR + Log.DEBUG -> io.github.sds100.keymapper.data.entities.LogEntryEntity.SEVERITY_DEBUG + Log.INFO -> io.github.sds100.keymapper.data.entities.LogEntryEntity.SEVERITY_INFO + else -> io.github.sds100.keymapper.data.entities.LogEntryEntity.SEVERITY_DEBUG } messagesToLog.tryEmit( - LogEntryEntity( + io.github.sds100.keymapper.data.entities.LogEntryEntity( id = 0, time = Calendar.getInstance().timeInMillis, severity = severity, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt index fc2b13a859..76b30d8f75 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.logging -import io.github.sds100.keymapper.util.ui.TintType +import io.github.sds100.keymapper.base.util.ui.TintType data class LogEntryListItem( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt index c704a7a2b4..bed6b5677a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt @@ -18,11 +18,11 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.logEntry import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.util.Inject +import io.github.sds100.keymapper.base.util.Inject import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.SimpleRecyclerViewFragment -import io.github.sds100.keymapper.util.ui.showPopups +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt index 315de51d69..07b19bca45 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt @@ -8,14 +8,14 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.ifIsData import io.github.sds100.keymapper.common.state.mapData -import io.github.sds100.keymapper.util.ui.MultiSelectProvider -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.SelectionState -import io.github.sds100.keymapper.util.ui.TintType -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.ui.MultiSelectProvider +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.SelectionState +import io.github.sds100.keymapper.base.util.ui.TintType +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt index b0df034977..e5041aefe9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt @@ -12,7 +12,7 @@ import io.github.sds100.keymapper.common.result.handle import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.keymaps.KeyMapRepository +import io.github.sds100.keymapper.base.keymaps.KeyMapRepository import io.github.sds100.keymapper.purchasing.ProductId import io.github.sds100.keymapper.purchasing.PurchasingManager import io.github.sds100.keymapper.shizuku.ShizukuAdapter @@ -23,11 +23,11 @@ import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.leanback.LeanbackAdapter import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.util.PrefDelegate +import io.github.sds100.keymapper.base.util.PrefDelegate import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.VersionHelper -import io.github.sds100.keymapper.util.ResourceProvider -import io.github.sds100.keymapper.util.SettingsRepository +import io.github.sds100.keymapper.base.util.VersionHelper +import io.github.sds100.keymapper.base.util.ResourceProvider +import io.github.sds100.keymapper.base.util.SettingsRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filterIsInstance diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt index b7e9ec838e..df31687030 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt @@ -4,7 +4,7 @@ import android.view.KeyEvent import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputmethod.InputKeyModel -import io.github.sds100.keymapper.util.InputEventType +import io.github.sds100.keymapper.base.util.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt index 817df82a26..15bf9dd42f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -10,8 +10,8 @@ import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper -import io.github.sds100.keymapper.util.firstBlocking -import io.github.sds100.keymapper.util.SettingsRepository +import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.base.util.SettingsRepository import kotlinx.coroutines.flow.map import kotlinx.coroutines.runBlocking import javax.inject.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt index 37be5f5f1e..f36f373391 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt @@ -10,13 +10,13 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.system.leanback.LeanbackUtils import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.str -import io.github.sds100.keymapper.util.ui.ChooseAppStoreModel -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.showPopup -import io.github.sds100.keymapper.util.viewLifecycleScope +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.str +import io.github.sds100.keymapper.base.util.ui.ChooseAppStoreModel +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.base.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest class Android11BugWorkaroundSettingsFragment : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt index 22c9470ce0..7e73e75356 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt @@ -12,7 +12,7 @@ import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils -import io.github.sds100.keymapper.util.viewLifecycleScope +import io.github.sds100.keymapper.base.util.viewLifecycleScope class AutomaticallyChangeImeSettings : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt index 0dd5b966bc..89e65613ca 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt @@ -12,9 +12,9 @@ import androidx.preference.PreferenceFragmentCompat import com.google.android.material.bottomappbar.BottomAppBar import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.str -import io.github.sds100.keymapper.util.ui.showPopups +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.str +import io.github.sds100.keymapper.base.util.ui.showPopups abstract class BaseSettingsFragment : PreferenceFragmentCompat() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt index 044a44bb49..c283aa08b8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt @@ -9,10 +9,10 @@ import androidx.preference.isEmpty import io.github.sds100.keymapper.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.SliderMaximums -import io.github.sds100.keymapper.util.ui.SliderMinimums -import io.github.sds100.keymapper.util.viewLifecycleScope +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.SliderMaximums +import io.github.sds100.keymapper.base.util.ui.SliderMinimums +import io.github.sds100.keymapper.base.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest class DefaultOptionsSettingsFragment : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt index cbbbdb90d4..bdd69e94bf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt @@ -11,7 +11,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils -import io.github.sds100.keymapper.util.viewLifecycleScope +import io.github.sds100.keymapper.base.util.viewLifecycleScope class ImePickerSettingsFragment : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt index 06909ad48b..dc132de8bc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt @@ -23,11 +23,11 @@ import io.github.sds100.keymapper.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils -import io.github.sds100.keymapper.util.firstBlocking -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.str -import io.github.sds100.keymapper.util.strArray -import io.github.sds100.keymapper.util.viewLifecycleScope +import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.str +import io.github.sds100.keymapper.base.util.strArray +import io.github.sds100.keymapper.base.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import splitties.alertdialog.appcompat.alertDialog import splitties.alertdialog.appcompat.messageResource diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt index d802d569c2..88074da83a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt @@ -8,16 +8,16 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.onFailure import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.common.result.otherwise -import io.github.sds100.keymapper.util.SharedPrefsDataStoreWrapper +import io.github.sds100.keymapper.base.util.SharedPrefsDataStoreWrapper import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.ui.DialogResponse -import io.github.sds100.keymapper.util.ui.MultiChoiceItem -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.ui.DialogResponse +import io.github.sds100.keymapper.base.util.ui.MultiChoiceItem +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow @@ -25,7 +25,7 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.settings.ConfigSettingsUseCase +import io.github.sds100.keymapper.base.settings.ConfigSettingsUseCase import javax.inject.Inject @HiltViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt index 950eacbdcf..6a4fb33cd9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt @@ -7,10 +7,10 @@ import androidx.preference.Preference import androidx.preference.isEmpty import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.str -import io.github.sds100.keymapper.util.viewLifecycleScope +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.str +import io.github.sds100.keymapper.base.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn diff --git a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt index 6031cd4600..a09e86272e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt @@ -7,7 +7,7 @@ import android.os.SystemClock import android.view.KeyEvent import io.github.sds100.keymapper.system.inputevents.InputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel -import io.github.sds100.keymapper.util.InputEventType +import io.github.sds100.keymapper.base.util.InputEventType import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import rikka.shizuku.ShizukuBinderWrapper diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt index 266b3ea817..89bd1b93f8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt @@ -70,8 +70,8 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.ui.compose.DraggableItem -import io.github.sds100.keymapper.util.ui.compose.rememberDragDropState +import io.github.sds100.keymapper.base.util.ui.compose.DraggableItem +import io.github.sds100.keymapper.base.util.ui.compose.rememberDragDropState import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt index 4132156275..6edc28b35e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt @@ -4,13 +4,13 @@ import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.keymaps.DisplayKeyMapUseCase -import io.github.sds100.keymapper.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.sorting.comparators.KeyMapActionsComparator import io.github.sds100.keymapper.sorting.comparators.KeyMapConstraintsComparator import io.github.sds100.keymapper.sorting.comparators.KeyMapOptionsComparator import io.github.sds100.keymapper.sorting.comparators.KeyMapTriggerComparator -import io.github.sds100.keymapper.util.SettingsRepository +import io.github.sds100.keymapper.base.util.SettingsRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt index 624f49cce9..fec4c1d4a0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt @@ -5,7 +5,7 @@ import io.github.sds100.keymapper.actions.DisplayActionUseCase import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.common.result.valueOrNull -import io.github.sds100.keymapper.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.KeyMap class KeyMapActionsComparator( private val displayActions: DisplayActionUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt index edeec8888a..a4a33bcc02 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.common.result.then import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.DisplayConstraintUseCase -import io.github.sds100.keymapper.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.KeyMap import java.time.LocalDate import java.time.ZoneOffset diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapOptionsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapOptionsComparator.kt index d68241a13c..448e860b59 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapOptionsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapOptionsComparator.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.sorting.comparators -import io.github.sds100.keymapper.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.KeyMap class KeyMapOptionsComparator( /** diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapTriggerComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapTriggerComparator.kt index 9b46256914..70768d8b16 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapTriggerComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapTriggerComparator.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.sorting.comparators -import io.github.sds100.keymapper.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.KeyMap class KeyMapTriggerComparator( /** diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt index a68f512e3a..0d4b0691e7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.data.entities.AssistantTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity -import io.github.sds100.keymapper.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index ee5ed34012..2fc27b6fb9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -12,15 +12,15 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.keymaps.ClickType -import io.github.sds100.keymapper.keymaps.ConfigKeyMapOptionsViewModel -import io.github.sds100.keymapper.keymaps.ConfigKeyMapUseCase -import io.github.sds100.keymapper.keymaps.CreateKeyMapShortcutUseCase -import io.github.sds100.keymapper.keymaps.DisplayKeyMapUseCase -import io.github.sds100.keymapper.keymaps.FingerprintGestureType -import io.github.sds100.keymapper.keymaps.FingerprintGesturesSupportedUseCase -import io.github.sds100.keymapper.keymaps.KeyMap -import io.github.sds100.keymapper.keymaps.ShortcutModel +import io.github.sds100.keymapper.base.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapOptionsViewModel +import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.CreateKeyMapShortcutUseCase +import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType +import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase +import io.github.sds100.keymapper.base.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.purchasing.ProductId @@ -31,18 +31,18 @@ import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.dataOrNull import io.github.sds100.keymapper.common.state.ifIsData import io.github.sds100.keymapper.common.state.mapData -import io.github.sds100.keymapper.util.ui.CheckBoxListItem -import io.github.sds100.keymapper.util.ui.DialogResponse -import io.github.sds100.keymapper.util.ui.LinkType -import io.github.sds100.keymapper.util.ui.NavigationViewModel -import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.ViewModelHelper -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.ui.CheckBoxListItem +import io.github.sds100.keymapper.base.util.ui.DialogResponse +import io.github.sds100.keymapper.base.util.ui.LinkType +import io.github.sds100.keymapper.base.util.ui.NavigationViewModel +import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ViewModelHelper +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt index 1712b8d358..a6c7c70de8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt @@ -2,8 +2,8 @@ package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.data.entities.FingerprintTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity -import io.github.sds100.keymapper.keymaps.ClickType -import io.github.sds100.keymapper.keymaps.FingerprintGestureType +import io.github.sds100.keymapper.base.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt index c310941f4d..6cba7f44c5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt @@ -5,7 +5,7 @@ import io.github.sds100.keymapper.data.entities.FloatingButtonKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity import io.github.sds100.keymapper.floating.FloatingButtonData import io.github.sds100.keymapper.floating.FloatingButtonEntityMapper -import io.github.sds100.keymapper.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.Serializable import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt index 36e8bc21d1..df48d78f34 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity -import io.github.sds100.keymapper.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.Serializable import splitties.bitflags.hasFlag import splitties.bitflags.withFlag diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt index a3039eb25e..704cbf4730 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.trigger import androidx.compose.ui.graphics.vector.ImageVector import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.util.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel data class KeyMapListItemModel( val isSelected: Boolean, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt index 4a00ddaf69..a4af047bb0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt @@ -24,8 +24,8 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.onboarding.OnboardingTapTarget -import io.github.sds100.keymapper.util.ui.compose.KeyMapperTapTarget -import io.github.sds100.keymapper.util.ui.compose.keyMapperShowcaseStyle +import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperTapTarget +import io.github.sds100.keymapper.base.util.ui.compose.keyMapperShowcaseStyle @Composable fun RecordTriggerButtonRow( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt index 8e4387fa1e..141bb6ce9d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt @@ -2,12 +2,12 @@ package io.github.sds100.keymapper.base.trigger import android.view.KeyEvent import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.keymaps.detection.DpadMotionEventTracker +import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyMotionEvent -import io.github.sds100.keymapper.util.ServiceEvent +import io.github.sds100.keymapper.base.util.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt index 4cc1e68246..e93d9c1a7b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt @@ -35,7 +35,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.ui.compose.openUriSafe +import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt index 255be60286..c2b63c3d66 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerEntity import io.github.sds100.keymapper.data.entities.getData import io.github.sds100.keymapper.floating.FloatingButtonEntityMapper -import io.github.sds100.keymapper.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.system.inputevents.InputEventUtils import kotlinx.serialization.Serializable import splitties.bitflags.hasFlag diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt index 2923ce138c..6d4832f9fc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt @@ -5,8 +5,8 @@ import android.view.KeyEvent import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.onFailure import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.keymaps.KeyMap -import io.github.sds100.keymapper.keymaps.requiresImeKeyEventForwardingInPhoneCall +import io.github.sds100.keymapper.base.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.requiresImeKeyEventForwardingInPhoneCall import io.github.sds100.keymapper.purchasing.ProductId import io.github.sds100.keymapper.purchasing.PurchasingError import io.github.sds100.keymapper.system.inputevents.InputEventUtils diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt index 9fb3636830..1239059181 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.trigger -import io.github.sds100.keymapper.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.Serializable @Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt index 8616773bd5..be421a9fb0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt @@ -42,10 +42,10 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.keymaps.ClickType -import io.github.sds100.keymapper.keymaps.FingerprintGestureType -import io.github.sds100.keymapper.util.ui.LinkType -import io.github.sds100.keymapper.util.ui.compose.DragDropState +import io.github.sds100.keymapper.base.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType +import io.github.sds100.keymapper.base.util.ui.LinkType +import io.github.sds100.keymapper.base.util.ui.compose.DragDropState @Composable fun TriggerKeyListItem( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt index 1247f9664e..06f38ec649 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt @@ -36,12 +36,12 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.keymaps.ClickType -import io.github.sds100.keymapper.keymaps.FingerprintGestureType -import io.github.sds100.keymapper.util.ui.CheckBoxListItem -import io.github.sds100.keymapper.util.ui.compose.CheckBoxText -import io.github.sds100.keymapper.util.ui.compose.RadioButtonText -import io.github.sds100.keymapper.util.ui.compose.openUriSafe +import io.github.sds100.keymapper.base.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType +import io.github.sds100.keymapper.base.util.ui.CheckBoxListItem +import io.github.sds100.keymapper.base.util.ui.compose.CheckBoxText +import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText +import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt index 250b8adfc5..7abf2853ab 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.trigger -import io.github.sds100.keymapper.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt index ba49091ee7..2622da25ca 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt @@ -40,15 +40,15 @@ import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.keymaps.ClickType -import io.github.sds100.keymapper.keymaps.ShortcutModel -import io.github.sds100.keymapper.keymaps.ShortcutRow +import io.github.sds100.keymapper.base.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.ShortcutModel +import io.github.sds100.keymapper.base.keymaps.ShortcutRow import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.ui.LinkType -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.DraggableItem -import io.github.sds100.keymapper.util.ui.compose.RadioButtonText -import io.github.sds100.keymapper.util.ui.compose.rememberDragDropState +import io.github.sds100.keymapper.base.util.ui.LinkType +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.DraggableItem +import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText +import io.github.sds100.keymapper.base.util.ui.compose.rememberDragDropState @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppActivityListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppActivityListItem.kt index f2d4976e3d..3a2285566a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppActivityListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppActivityListItem.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.ui.apps import io.github.sds100.keymapper.system.apps.ActivityInfo -import io.github.sds100.keymapper.util.ui.IconInfo -import io.github.sds100.keymapper.util.ui.SimpleListItemOld -import io.github.sds100.keymapper.util.ui.TintType +import io.github.sds100.keymapper.base.util.ui.IconInfo +import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.util.ui.TintType data class AppActivityListItem( val appName: String, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppShortcutListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppShortcutListItem.kt index 3f3a1d87cf..b7607b8711 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppShortcutListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppShortcutListItem.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.ui.apps import io.github.sds100.keymapper.system.apps.AppShortcutInfo -import io.github.sds100.keymapper.util.ui.IconInfo -import io.github.sds100.keymapper.util.ui.SimpleListItemOld -import io.github.sds100.keymapper.util.ui.TintType +import io.github.sds100.keymapper.base.util.ui.IconInfo +import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.util.ui.TintType data class AppShortcutListItem( val shortcutInfo: AppShortcutInfo, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityFragment.kt index d38e32c663..e413c5970c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityFragment.kt @@ -6,9 +6,9 @@ import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.ui.RecyclerViewUtils -import io.github.sds100.keymapper.util.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils +import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment import kotlinx.coroutines.flow.Flow import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityViewModel.kt index d74f7c0b36..d795576002 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityViewModel.kt @@ -5,8 +5,8 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.filterByQuery -import io.github.sds100.keymapper.util.ui.IconInfo +import io.github.sds100.keymapper.base.util.filterByQuery +import io.github.sds100.keymapper.base.util.ui.IconInfo import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppFragment.kt index adac891ffc..09ad9be027 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppFragment.kt @@ -11,11 +11,11 @@ import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.databinding.FragmentChooseAppBinding import io.github.sds100.keymapper.simple -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.RecyclerViewFragment -import io.github.sds100.keymapper.util.ui.RecyclerViewUtils -import io.github.sds100.keymapper.util.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.RecyclerViewFragment +import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils +import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.map diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppScreen.kt index 7393b0a7de..6be6a8f25c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppScreen.kt @@ -34,11 +34,11 @@ import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.util.ui.compose.SearchAppBarActions -import io.github.sds100.keymapper.util.ui.compose.SimpleListItem -import io.github.sds100.keymapper.util.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.util.ui.compose.SearchAppBarActions +import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItem +import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel @Composable fun ChooseAppScreen( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutFragment.kt index 8d5ea3c362..d4c9bc220d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutFragment.kt @@ -13,11 +13,11 @@ import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.system.apps.AppShortcutInfo -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.RecyclerViewUtils -import io.github.sds100.keymapper.util.ui.SimpleRecyclerViewFragment -import io.github.sds100.keymapper.util.ui.showPopups +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils +import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutViewModel.kt index 9d56c58894..2c6b3e9a4b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutViewModel.kt @@ -8,13 +8,13 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.mapData -import io.github.sds100.keymapper.util.filterByQuery -import io.github.sds100.keymapper.util.ui.IconInfo -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.showPopup +import io.github.sds100.keymapper.base.util.filterByQuery +import io.github.sds100.keymapper.base.util.ui.IconInfo +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.showPopup import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppViewModel.kt index 1eb2a22f2c..69651e63dd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppViewModel.kt @@ -7,10 +7,10 @@ import io.github.sds100.keymapper.common.result.valueOrNull import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.mapData import io.github.sds100.keymapper.system.apps.PackageInfo -import io.github.sds100.keymapper.util.filterByQuery -import io.github.sds100.keymapper.util.ui.DefaultSimpleListItem -import io.github.sds100.keymapper.util.ui.IconInfo -import io.github.sds100.keymapper.util.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.util.filterByQuery +import io.github.sds100.keymapper.base.util.ui.DefaultSimpleListItem +import io.github.sds100.keymapper.base.util.ui.IconInfo +import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceFragment.kt index d065e3809e..bf462bb835 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceFragment.kt @@ -8,13 +8,13 @@ import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.fixError import io.github.sds100.keymapper.simple -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.ListItem -import io.github.sds100.keymapper.util.ui.RecyclerViewUtils -import io.github.sds100.keymapper.util.ui.SimpleListItemOld -import io.github.sds100.keymapper.util.ui.SimpleRecyclerViewFragment -import io.github.sds100.keymapper.util.ui.TextListItem +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.ListItem +import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils +import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.util.ui.TextListItem import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceViewModel.kt index df0bae9df2..09bce0e54e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceViewModel.kt @@ -7,12 +7,12 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.bluetooth.ChooseBluetoothDeviceUseCase -import io.github.sds100.keymapper.util.ui.DefaultSimpleListItem -import io.github.sds100.keymapper.util.ui.ListItem -import io.github.sds100.keymapper.util.ui.PopupViewModel -import io.github.sds100.keymapper.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.util.ui.ResourceProvider -import io.github.sds100.keymapper.util.ui.TextListItem +import io.github.sds100.keymapper.base.util.ui.DefaultSimpleListItem +import io.github.sds100.keymapper.base.util.ui.ListItem +import io.github.sds100.keymapper.base.util.ui.PopupViewModel +import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.TextListItem import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentFragment.kt index 04bb6e33fe..23081c4be0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentFragment.kt @@ -25,10 +25,10 @@ import io.github.sds100.keymapper.intentExtraGeneric import io.github.sds100.keymapper.system.intents.BoolIntentExtraListItem import io.github.sds100.keymapper.system.intents.GenericIntentExtraListItem import io.github.sds100.keymapper.system.intents.IntentExtraListItem -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.ui.setupNavigation -import io.github.sds100.keymapper.util.ui.showPopups +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.ui.setupNavigation +import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentViewModel.kt index 06bdd12dbe..65a521ba21 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentViewModel.kt @@ -33,17 +33,17 @@ import io.github.sds100.keymapper.system.intents.ShortArrayExtraType import io.github.sds100.keymapper.system.intents.ShortExtraType import io.github.sds100.keymapper.system.intents.StringArrayExtraType import io.github.sds100.keymapper.system.intents.StringExtraType -import io.github.sds100.keymapper.util.DialogResponse -import io.github.sds100.keymapper.util.MultiChoiceItem -import io.github.sds100.keymapper.util.NavDestination -import io.github.sds100.keymapper.util.NavigationViewModel -import io.github.sds100.keymapper.util.NavigationViewModelImpl -import io.github.sds100.keymapper.util.PopupUi -import io.github.sds100.keymapper.util.PopupViewModel -import io.github.sds100.keymapper.util.PopupViewModelImpl -import io.github.sds100.keymapper.util.ResourceProvider -import io.github.sds100.keymapper.util.navigate -import io.github.sds100.keymapper.util.showPopup +import io.github.sds100.keymapper.base.util.DialogResponse +import io.github.sds100.keymapper.base.util.MultiChoiceItem +import io.github.sds100.keymapper.base.util.NavDestination +import io.github.sds100.keymapper.base.util.NavigationViewModel +import io.github.sds100.keymapper.base.util.NavigationViewModelImpl +import io.github.sds100.keymapper.base.util.PopupUi +import io.github.sds100.keymapper.base.util.PopupViewModel +import io.github.sds100.keymapper.base.util.PopupViewModelImpl +import io.github.sds100.keymapper.base.util.ResourceProvider +import io.github.sds100.keymapper.base.util.navigate +import io.github.sds100.keymapper.base.util.showPopup import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt index e0995c7970..d3d8b7ffa6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt @@ -7,7 +7,7 @@ import io.github.sds100.keymapper.purchasing.ProductId import io.github.sds100.keymapper.purchasing.PurchasingError import io.github.sds100.keymapper.system.BuildUtils import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ResourceProvider fun Error.getFullMessage(resourceProvider: ResourceProvider): String = when (this) { is SystemError.PermissionDenied -> diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt index 7392bb37f4..104eb392b5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.util import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.ui.ISearchable +import io.github.sds100.keymapper.base.util.ui.ISearchable import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/SharedPrefsDataStoreWrapper.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/SharedPrefsDataStoreWrapper.kt index fc6b45997a..a12fad63e3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/SharedPrefsDataStoreWrapper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/SharedPrefsDataStoreWrapper.kt @@ -8,7 +8,7 @@ import androidx.datastore.preferences.core.longPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey import androidx.datastore.preferences.core.stringSetPreferencesKey import androidx.preference.PreferenceDataStore -import io.github.sds100.keymapper.settings.ConfigSettingsUseCase +import io.github.sds100.keymapper.base.settings.ConfigSettingsUseCase import kotlinx.coroutines.flow.first import kotlinx.coroutines.runBlocking diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/BindingAdapters.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/BindingAdapters.kt index fa9a2e047a..bcb8b03456 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/BindingAdapters.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/BindingAdapters.kt @@ -15,9 +15,9 @@ import com.google.android.material.textfield.TextInputLayout import com.google.android.material.textview.MaterialTextView import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.util.str -import io.github.sds100.keymapper.util.styledColor -import io.github.sds100.keymapper.util.styledFloat +import io.github.sds100.keymapper.base.util.str +import io.github.sds100.keymapper.base.util.styledColor +import io.github.sds100.keymapper.base.util.styledFloat @BindingAdapter("app:onTextChanged") fun EditText.onTextChangedListener(textWatcher: TextWatcher) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/DialogUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/DialogUtils.kt index 84fd86daf6..9a0116dec3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/DialogUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/DialogUtils.kt @@ -22,9 +22,9 @@ import io.github.sds100.keymapper.common.result.isSuccess import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.databinding.DialogEdittextNumberBinding import io.github.sds100.keymapper.databinding.DialogEdittextStringBinding -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.resumeIfNotCompleted +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.resumeIfNotCompleted import kotlinx.coroutines.CancellableContinuation import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt index a3c8ac8545..9f08e73529 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt @@ -13,7 +13,7 @@ import androidx.lifecycle.OnLifecycleEvent import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.DialogChooseAppStoreBinding import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt index ae36ed6006..ca16975ebd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt @@ -21,7 +21,7 @@ import com.airbnb.epoxy.EpoxyRecyclerView import com.google.android.material.bottomappbar.BottomAppBar import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceProvider.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceProvider.kt index ae954b5fd3..d810abc711 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceProvider.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceProvider.kt @@ -5,9 +5,9 @@ import android.graphics.drawable.Drawable import androidx.annotation.ColorRes import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import io.github.sds100.keymapper.util.color -import io.github.sds100.keymapper.util.drawable -import io.github.sds100.keymapper.util.str +import io.github.sds100.keymapper.base.util.color +import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.util.str import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SimpleRecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SimpleRecyclerViewFragment.kt index 9db67f1f56..4e01f97438 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SimpleRecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SimpleRecyclerViewFragment.kt @@ -7,7 +7,7 @@ import androidx.annotation.StringRes import com.google.android.material.bottomappbar.BottomAppBar import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding -import io.github.sds100.keymapper.util.str +import io.github.sds100.keymapper.base.util.str abstract class SimpleRecyclerViewFragment : RecyclerViewFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt index 9349a7d8dc..a753dd91cf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt @@ -4,8 +4,8 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.isFixable +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.isFixable object ViewModelHelper { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CompactChip.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CompactChip.kt index 9b4c6fb1af..4a20f6dfce 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CompactChip.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CompactChip.kt @@ -21,7 +21,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.keymaps.chipHeight +import io.github.sds100.keymapper.base.keymaps.chipHeight @Composable fun CompactChip( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ListItemFixError.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ListItemFixError.kt index 6ca23d3f0c..0205779a58 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ListItemFixError.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ListItemFixError.kt @@ -20,7 +20,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.ui.TextListItem +import io.github.sds100.keymapper.base.util.ui.TextListItem @Composable fun ListItemFixError( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItem.kt index 2082a6e257..9baf48faf8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItem.kt @@ -33,7 +33,7 @@ import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.util.drawable +import io.github.sds100.keymapper.base.util.drawable @Composable fun SimpleListItemHeader( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/UriHandlerUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/UriHandlerUtils.kt index 919cc15b31..977327c793 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/UriHandlerUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/UriHandlerUtils.kt @@ -4,7 +4,7 @@ import android.content.Context import android.widget.Toast import androidx.compose.ui.platform.UriHandler import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.util.str +import io.github.sds100.keymapper.base.util.str fun UriHandler.openUriSafe(ctx: Context, uri: String) { try { diff --git a/base/src/main/res/layout/dialog_choose_app_store.xml b/base/src/main/res/layout/dialog_choose_app_store.xml index e42cff3567..3b36c33602 100644 --- a/base/src/main/res/layout/dialog_choose_app_store.xml +++ b/base/src/main/res/layout/dialog_choose_app_store.xml @@ -8,7 +8,7 @@ + type="io.github.sds100.keymapper.base.util.ui.ChooseAppStoreModel" /> + type="io.github.sds100.keymapper.base.util.ui.CheckBoxListItem" /> + type="io.github.sds100.keymapper.base.util.ui.TextListItem.Error" /> - + + type="io.github.sds100.keymapper.base.util.ui.RadioButtonPairListItem" /> + type="io.github.sds100.keymapper.base.util.ui.RadioButtonTripleListItem" /> + type="io.github.sds100.keymapper.base.util.ui.SimpleListItemOld" /> + android:name="io.github.sds100.keymapper.base.settings.AutomaticallyChangeImeSettings" /> \ No newline at end of file diff --git a/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt b/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt index c482ef7f19..ca9b2b6392 100644 --- a/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt @@ -22,12 +22,12 @@ import io.github.sds100.keymapper.data.repositories.FakePreferenceRepository import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository import io.github.sds100.keymapper.data.repositories.GroupRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.keymaps.KeyMapRepository +import io.github.sds100.keymapper.base.keymaps.KeyMapRepository import io.github.sds100.keymapper.system.files.FakeFileAdapter import io.github.sds100.keymapper.system.files.IFile import io.github.sds100.keymapper.system.files.JavaFile import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.UuidGenerator +import io.github.sds100.keymapper.base.util.UuidGenerator import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt index e0213c8a9d..24d169112c 100644 --- a/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt @@ -4,10 +4,10 @@ import android.view.KeyEvent import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.constraints.Constraint -import io.github.sds100.keymapper.keymaps.ClickType -import io.github.sds100.keymapper.keymaps.ConfigKeyMapUseCaseController -import io.github.sds100.keymapper.keymaps.FingerprintGestureType -import io.github.sds100.keymapper.keymaps.KeyMap +import io.github.sds100.keymapper.base.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCaseController +import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType +import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.trigger.AssistantTriggerKey import io.github.sds100.keymapper.trigger.AssistantTriggerType @@ -17,8 +17,8 @@ import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode import io.github.sds100.keymapper.common.state.State import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.util.singleKeyTrigger -import io.github.sds100.keymapper.util.triggerKey +import io.github.sds100.keymapper.base.util.singleKeyTrigger +import io.github.sds100.keymapper.base.util.triggerKey import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher diff --git a/base/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt b/base/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt index ea3414bfc1..4b4e9abeb1 100644 --- a/base/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt @@ -11,7 +11,7 @@ import io.github.sds100.keymapper.data.migration.Migration10To11 import io.github.sds100.keymapper.data.migration.Migration11To12 import io.github.sds100.keymapper.data.migration.Migration9To10 import io.github.sds100.keymapper.data.migration.MigrationUtils -import io.github.sds100.keymapper.util.JsonTestUtils +import io.github.sds100.keymapper.base.util.JsonTestUtils import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher diff --git a/base/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt b/base/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt index dd5c4a365c..9a221a7154 100644 --- a/base/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt @@ -12,7 +12,7 @@ import io.github.sds100.keymapper.data.migration.JsonMigration import io.github.sds100.keymapper.data.migration.MigrationUtils import io.github.sds100.keymapper.data.migration.fingerprintmaps.FingerprintMapMigration0To1 import io.github.sds100.keymapper.data.migration.fingerprintmaps.FingerprintMapMigration1To2 -import io.github.sds100.keymapper.util.JsonTestUtils +import io.github.sds100.keymapper.base.util.JsonTestUtils import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher diff --git a/base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt b/base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt index b0391060a1..647d0d1c08 100644 --- a/base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt +++ b/base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper -import io.github.sds100.keymapper.util.DispatcherProvider +import io.github.sds100.keymapper.base.util.DispatcherProvider import kotlinx.coroutines.test.TestDispatcher diff --git a/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt index 2a49afb382..ed7f158e07 100644 --- a/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt @@ -9,7 +9,7 @@ import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.popup.PopupMessageAdapter -import io.github.sds100.keymapper.util.InputEventType +import io.github.sds100.keymapper.base.util.InputEventType import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/test/java/io/github/sds100/keymapper/constraints/ConstraintSnapshotTest.kt b/base/src/test/java/io/github/sds100/keymapper/constraints/ConstraintSnapshotTest.kt index d2cc2e3fc8..3ee0add479 100644 --- a/base/src/test/java/io/github/sds100/keymapper/constraints/ConstraintSnapshotTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/constraints/ConstraintSnapshotTest.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.constraints -import io.github.sds100.keymapper.util.TestConstraintSnapshot +import io.github.sds100.keymapper.base.util.TestConstraintSnapshot import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.`is` import org.junit.Test diff --git a/base/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt b/base/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt index f8736cd88b..70384e4a0e 100644 --- a/base/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.keymaps import android.view.InputDevice import android.view.KeyEvent -import io.github.sds100.keymapper.keymaps.detection.DpadMotionEventTracker +import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent diff --git a/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt index 2eba0fb697..2f29f3474b 100644 --- a/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt @@ -13,9 +13,9 @@ import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.constraints.ConstraintSnapshot import io.github.sds100.keymapper.constraints.ConstraintState import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase -import io.github.sds100.keymapper.keymaps.detection.DetectKeyMapModel -import io.github.sds100.keymapper.keymaps.detection.DetectKeyMapsUseCase -import io.github.sds100.keymapper.keymaps.detection.KeyMapController +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapModel +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.detection.KeyMapController import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.MyKeyEvent @@ -27,12 +27,12 @@ import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerKey import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode -import io.github.sds100.keymapper.util.InputEventType -import io.github.sds100.keymapper.util.TestConstraintSnapshot -import io.github.sds100.keymapper.util.parallelTrigger -import io.github.sds100.keymapper.util.sequenceTrigger -import io.github.sds100.keymapper.util.singleKeyTrigger -import io.github.sds100.keymapper.util.triggerKey +import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.base.util.TestConstraintSnapshot +import io.github.sds100.keymapper.base.util.parallelTrigger +import io.github.sds100.keymapper.base.util.sequenceTrigger +import io.github.sds100.keymapper.base.util.singleKeyTrigger +import io.github.sds100.keymapper.base.util.triggerKey import junitparams.JUnitParamsRunner import junitparams.Parameters import junitparams.naming.TestCaseName diff --git a/base/src/test/java/io/github/sds100/keymapper/keymaps/ProcessKeyMapGroupsForDetectionTest.kt b/base/src/test/java/io/github/sds100/keymapper/keymaps/ProcessKeyMapGroupsForDetectionTest.kt index ac2ab51cf3..5185b6d19a 100644 --- a/base/src/test/java/io/github/sds100/keymapper/keymaps/ProcessKeyMapGroupsForDetectionTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/keymaps/ProcessKeyMapGroupsForDetectionTest.kt @@ -4,8 +4,8 @@ import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.constraints.ConstraintState import io.github.sds100.keymapper.groups.Group -import io.github.sds100.keymapper.keymaps.detection.DetectKeyMapModel -import io.github.sds100.keymapper.keymaps.detection.DetectKeyMapsUseCaseImpl +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapModel +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCaseImpl import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers import org.junit.Test diff --git a/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt index 4c2ff098b3..2496afce44 100644 --- a/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt @@ -7,10 +7,10 @@ import io.github.sds100.keymapper.actions.PerformActionsUseCase import io.github.sds100.keymapper.actions.RepeatMode import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase -import io.github.sds100.keymapper.keymaps.detection.DetectKeyMapsUseCase -import io.github.sds100.keymapper.keymaps.detection.TriggerKeyMapFromOtherAppsController +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.detection.TriggerKeyMapFromOtherAppsController import io.github.sds100.keymapper.trigger.Trigger -import io.github.sds100.keymapper.util.TestConstraintSnapshot +import io.github.sds100.keymapper.base.util.TestConstraintSnapshot import junitparams.JUnitParamsRunner import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.delay diff --git a/base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt b/base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt index 1d0a4b76a2..675135ce35 100644 --- a/base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt @@ -3,12 +3,12 @@ package io.github.sds100.keymapper.system.intents import android.content.Intent import androidx.arch.core.executor.testing.InstantTaskExecutorRule import io.github.sds100.keymapper.base.ui.intents.ConfigIntentViewModel -import io.github.sds100.keymapper.util.firstBlocking -import io.github.sds100.keymapper.util.ui.FakeResourceProvider -import io.github.sds100.keymapper.util.ui.MultiChoiceItem -import io.github.sds100.keymapper.util.ui.PopupUi -import io.github.sds100.keymapper.util.ui.ShowPopupEvent -import io.github.sds100.keymapper.util.ui.onUserResponse +import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.base.util.ui.FakeResourceProvider +import io.github.sds100.keymapper.base.util.ui.MultiChoiceItem +import io.github.sds100.keymapper.base.util.ui.PopupUi +import io.github.sds100.keymapper.base.util.ui.ShowPopupEvent +import io.github.sds100.keymapper.base.util.ui.onUserResponse import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.UnconfinedTestDispatcher diff --git a/base/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt b/base/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt index 336ff1cabc..793caec5e4 100644 --- a/base/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt +++ b/base/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.util -import io.github.sds100.keymapper.keymaps.ClickType +import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerKey diff --git a/base/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt b/base/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt index be1b2c930c..2a81bbd3e9 100644 --- a/base/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt +++ b/base/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util.ui +package io.github.sds100.keymapper.base.util.ui import android.graphics.drawable.Drawable import kotlinx.coroutines.flow.Flow diff --git a/common/src/main/java/io/github/sds100/keymapper/common/BuildConfigProvider.kt b/common/src/main/java/io/github/sds100/keymapper/common/BuildConfigProvider.kt new file mode 100644 index 0000000000..eea30dc14f --- /dev/null +++ b/common/src/main/java/io/github/sds100/keymapper/common/BuildConfigProvider.kt @@ -0,0 +1,9 @@ +package io.github.sds100.keymapper.common + +interface BuildConfigProvider { + val minApi: Int + val maxApi: Int + val packageName: String + val version: String + val versionCode: Int +} \ No newline at end of file diff --git a/data/.gitignore b/data/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/data/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/data/build.gradle.kts b/data/build.gradle.kts new file mode 100644 index 0000000000..8872652b68 --- /dev/null +++ b/data/build.gradle.kts @@ -0,0 +1,62 @@ +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.kotlin.parcelize) + alias(libs.plugins.androidx.room) + alias(libs.plugins.google.devtools.ksp) + alias(libs.plugins.jlleitschuh.gradle.ktlint) +} + +android { + namespace = "io.github.sds100.keymapper.data" + compileSdk = 35 + + defaultConfig { + minSdk = 21 + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } + + room { + + schemaDirectory("$projectDir/schemas") + } +} + +dependencies { + implementation(project(":common")) + implementation(project(":system")) + + // kotlin stuff + implementation(libs.kotlinx.coroutines.android) + implementation(libs.kotlinx.serialization.json) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.room.ktx) + implementation(libs.androidx.datastore.preferences) + implementation(libs.kotson) + + implementation(libs.dagger.hilt.android) + ksp(libs.dagger.hilt.android.compiler) + + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.test.ext.junit) +} \ No newline at end of file diff --git a/data/consumer-rules.pro b/data/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/proguard-rules.pro b/data/proguard-rules.pro new file mode 100644 index 0000000000..481bb43481 --- /dev/null +++ b/data/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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/data/src/androidTest/java/io/github/sds100/keymapper/data/ExampleInstrumentedTest.kt b/data/src/androidTest/java/io/github/sds100/keymapper/data/ExampleInstrumentedTest.kt new file mode 100644 index 0000000000..8ecaf2fb9a --- /dev/null +++ b/data/src/androidTest/java/io/github/sds100/keymapper/data/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package io.github.sds100.keymapper.data + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("io.github.sds100.keymapper.data.test", appContext.packageName) + } +} \ No newline at end of file diff --git a/data/src/main/AndroidManifest.xml b/data/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..a5918e68ab --- /dev/null +++ b/data/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/Keys.kt b/data/src/main/java/io/github/sds100/keymapper/data/Keys.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/data/Keys.kt rename to data/src/main/java/io/github/sds100/keymapper/data/Keys.kt index 79d21a828b..681c7eaba9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/Keys.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/Keys.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data +package io.github.sds100.keymapper.data import androidx.datastore.preferences.core.booleanPreferencesKey import androidx.datastore.preferences.core.intPreferencesKey diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/PreferenceDefaults.kt b/data/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt similarity index 91% rename from base/src/main/java/io/github/sds100/keymapper/base/data/PreferenceDefaults.kt rename to data/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt index d26ef086f4..27d36319cc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/PreferenceDefaults.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data +package io.github.sds100.keymapper.data diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/AppDatabase.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/AppDatabase.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt index 687337995c..cd64a24ece 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/AppDatabase.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db +package io.github.sds100.keymapper.data.db import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/AccessibilityNodeDao.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/AccessibilityNodeDao.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/AccessibilityNodeDao.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/dao/AccessibilityNodeDao.kt index bbe98b02f6..1aa13584a5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/AccessibilityNodeDao.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/AccessibilityNodeDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.dao +package io.github.sds100.keymapper.data.db.dao import androidx.room.Dao import androidx.room.Insert diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FingerprintMapDao.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/FingerprintMapDao.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FingerprintMapDao.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/dao/FingerprintMapDao.kt index 30025a1a7d..3f14042f03 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FingerprintMapDao.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/FingerprintMapDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.dao +package io.github.sds100.keymapper.data.db.dao import androidx.room.Dao import androidx.room.Insert diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FloatingButtonDao.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/FloatingButtonDao.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FloatingButtonDao.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/dao/FloatingButtonDao.kt index 5c2baee613..a1449f92ba 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FloatingButtonDao.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/FloatingButtonDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.dao +package io.github.sds100.keymapper.data.db.dao import androidx.room.Dao import androidx.room.Insert diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FloatingLayoutDao.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/FloatingLayoutDao.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FloatingLayoutDao.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/dao/FloatingLayoutDao.kt index d6fa121228..f3a7521f5b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/FloatingLayoutDao.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/FloatingLayoutDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.dao +package io.github.sds100.keymapper.data.db.dao import androidx.room.Dao import androidx.room.Delete diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/GroupDao.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/GroupDao.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/GroupDao.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/dao/GroupDao.kt index 8579e439a8..b463a63f37 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/GroupDao.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/GroupDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.dao +package io.github.sds100.keymapper.data.db.dao import androidx.room.Dao import androidx.room.Delete diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/KeyMapDao.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/KeyMapDao.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/KeyMapDao.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/dao/KeyMapDao.kt index fa0d81c976..12db4e7752 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/KeyMapDao.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/KeyMapDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.dao +package io.github.sds100.keymapper.data.db.dao import androidx.room.Dao import androidx.room.Delete diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/LogEntryDao.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/LogEntryDao.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt index 70ae7ed79b..005ae4f489 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/dao/LogEntryDao.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.dao +package io.github.sds100.keymapper.data.db.dao import androidx.room.Dao import androidx.room.Insert diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ActionListTypeConverter.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ActionListTypeConverter.kt similarity index 91% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ActionListTypeConverter.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ActionListTypeConverter.kt index fac927d4fa..993a25a63a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ActionListTypeConverter.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ActionListTypeConverter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.typeconverter +package io.github.sds100.keymapper.data.db.typeconverter import androidx.room.TypeConverter import com.github.salomonbrys.kotson.fromJson diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ConstantTypeConverters.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstantTypeConverters.kt similarity index 84% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ConstantTypeConverters.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstantTypeConverters.kt index 07c4e155f2..d4aa216be7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ConstantTypeConverters.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstantTypeConverters.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.typeconverter +package io.github.sds100.keymapper.data.db.typeconverter import io.github.sds100.keymapper.system.display.Orientation diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ConstraintListTypeConverter.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstraintListTypeConverter.kt similarity index 90% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ConstraintListTypeConverter.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstraintListTypeConverter.kt index 8629cae373..da676515d9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ConstraintListTypeConverter.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstraintListTypeConverter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.typeconverter +package io.github.sds100.keymapper.data.db.typeconverter import androidx.room.TypeConverter import com.github.salomonbrys.kotson.fromJson diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ExtraListTypeConverter.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ExtraListTypeConverter.kt similarity index 87% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ExtraListTypeConverter.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ExtraListTypeConverter.kt index cc94759804..4bccde0fab 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/ExtraListTypeConverter.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ExtraListTypeConverter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.typeconverter +package io.github.sds100.keymapper.data.db.typeconverter import androidx.room.TypeConverter import com.github.salomonbrys.kotson.fromJson diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt similarity index 92% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt index e165ce3436..e5f0704f5e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.typeconverter +package io.github.sds100.keymapper.data.db.typeconverter import androidx.room.TypeConverter import io.github.sds100.keymapper.actions.uielement.NodeInteractionType diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/TriggerTypeConverter.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt similarity index 93% rename from base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/TriggerTypeConverter.kt rename to data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt index f27bdaae1c..f625c7b6be 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/db/typeconverter/TriggerTypeConverter.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.db.typeconverter +package io.github.sds100.keymapper.data.db.typeconverter import androidx.room.TypeConverter import com.github.salomonbrys.kotson.fromJson diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/AccessibilityNodeEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/AccessibilityNodeEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt index ff6228a3be..f84769395c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/AccessibilityNodeEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import androidx.room.ColumnInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/ActionEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/ActionEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt index f70fd52939..16fcef7020 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/ActionEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import com.github.salomonbrys.kotson.byArray @@ -51,7 +51,7 @@ data class ActionEntity( @SerializedName(NAME_UID) val uid: String = UUID.randomUUID().toString(), -) : Parcelable { + ) : Parcelable { companion object { // DON'T CHANGE THESE IDs!!!! diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/AssistantTriggerKeyEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/AssistantTriggerKeyEntity.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/AssistantTriggerKeyEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/AssistantTriggerKeyEntity.kt index 114806b7b9..6c55705467 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/AssistantTriggerKeyEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/AssistantTriggerKeyEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import com.google.gson.annotations.SerializedName diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/ConstraintEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/ConstraintEntity.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/ConstraintEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/ConstraintEntity.kt index 79ea003ab0..6690875809 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/ConstraintEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/ConstraintEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import com.github.salomonbrys.kotson.byArray diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/EntityExtra.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt similarity index 85% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/EntityExtra.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt index 010299ae25..d986593766 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/EntityExtra.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt @@ -1,11 +1,9 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import com.github.salomonbrys.kotson.byString import com.github.salomonbrys.kotson.jsonDeserializer import com.google.gson.annotations.SerializedName -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.Success import kotlinx.parcelize.Parcelize diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FingerprintMapEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintMapEntity.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/FingerprintMapEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintMapEntity.kt index 8df440e113..b5c824f97b 100755 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FingerprintMapEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintMapEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FingerprintTriggerKeyEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintTriggerKeyEntity.kt similarity index 93% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/FingerprintTriggerKeyEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintTriggerKeyEntity.kt index 24abbebcfa..968ae087b5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FingerprintTriggerKeyEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/FingerprintTriggerKeyEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import com.google.gson.annotations.SerializedName diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonEntity.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonEntity.kt index 67f7bafd1c..1c1589053e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import androidx.room.ColumnInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonEntityWithLayout.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonEntityWithLayout.kt similarity index 90% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonEntityWithLayout.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonEntityWithLayout.kt index c8a036b916..3337ec7a81 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonEntityWithLayout.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonEntityWithLayout.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import androidx.room.Embedded diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonKeyEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonKeyEntity.kt similarity index 91% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonKeyEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonKeyEntity.kt index dea20061c9..c2761acfb9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingButtonKeyEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingButtonKeyEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import com.google.gson.annotations.SerializedName diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingLayoutEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingLayoutEntity.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingLayoutEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingLayoutEntity.kt index d1b7cd4eca..67072a34dc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingLayoutEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingLayoutEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import androidx.room.ColumnInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingLayoutEntityWithButtons.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingLayoutEntityWithButtons.kt similarity index 89% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingLayoutEntityWithButtons.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingLayoutEntityWithButtons.kt index 382b216046..6d50cb3ca8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/FloatingLayoutEntityWithButtons.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/FloatingLayoutEntityWithButtons.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import androidx.room.Embedded import androidx.room.Relation diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/GroupEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntity.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/GroupEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntity.kt index 9852ab2feb..497dfa282f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/GroupEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import androidx.room.ColumnInfo @@ -54,7 +54,7 @@ data class GroupEntity( @SerializedName(NAME_LAST_OPENED_DATE) val lastOpenedDate: Long?, -) : Parcelable { + ) : Parcelable { companion object { // DON'T CHANGE THESE. Used for JSON serialization and parsing. const val NAME_UID = "uid" diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/GroupEntityWithChildren.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntityWithChildren.kt similarity index 86% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/GroupEntityWithChildren.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntityWithChildren.kt index 7ff11a99d8..ecedbaa99b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/GroupEntityWithChildren.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntityWithChildren.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import androidx.room.Embedded import androidx.room.Relation diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyCodeTriggerKeyEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/KeyCodeTriggerKeyEntity.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyCodeTriggerKeyEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/KeyCodeTriggerKeyEntity.kt index f59ca97072..e26132c25a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyCodeTriggerKeyEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/KeyCodeTriggerKeyEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import com.google.gson.annotations.SerializedName diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyMapEntitiesWithGroup.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntitiesWithGroup.kt similarity index 90% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyMapEntitiesWithGroup.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntitiesWithGroup.kt index 2c3e7109d7..7c6a12a082 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyMapEntitiesWithGroup.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntitiesWithGroup.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import androidx.room.Embedded diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyMapEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntity.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyMapEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntity.kt index 75ec803ca5..5b5e94ba04 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/KeyMapEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/KeyMapEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import androidx.room.ColumnInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/LogEntryEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt similarity index 92% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/LogEntryEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt index e98c9356ed..ca4065cb34 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/LogEntryEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/TriggerEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/TriggerEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt index 3ee50d69f6..1337126eb0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/TriggerEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import androidx.annotation.IntDef diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/TriggerKeyEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/TriggerKeyEntity.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/data/entities/TriggerKeyEntity.kt rename to data/src/main/java/io/github/sds100/keymapper/data/entities/TriggerKeyEntity.kt index 94e99e0e33..ce98690420 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/entities/TriggerKeyEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/TriggerKeyEntity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.entities +package io.github.sds100.keymapper.data.entities import android.os.Parcelable import com.github.salomonbrys.kotson.byInt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration14To15.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration14To15.kt similarity index 63% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration14To15.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration14To15.kt index 96842ea51c..b823941134 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration14To15.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration14To15.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.room.migration.AutoMigrationSpec diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration15To16.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration15To16.kt similarity index 75% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration15To16.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration15To16.kt index 809b6244e4..f8d172419a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration15To16.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration15To16.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.room.DeleteColumn import androidx.room.migration.AutoMigrationSpec diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration16To17.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration16To17.kt similarity index 63% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration16To17.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration16To17.kt index 41d2290f1a..ce92b9a3a9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration16To17.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration16To17.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.room.migration.AutoMigrationSpec diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration18To19.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration18To19.kt similarity index 63% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration18To19.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration18To19.kt index 392f4369ec..6ee2b50840 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration18To19.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration18To19.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.room.migration.AutoMigrationSpec diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration19To20.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration19To20.kt similarity index 63% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration19To20.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration19To20.kt index ae99702dc2..edec936175 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/AutoMigration19To20.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/AutoMigration19To20.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.room.migration.AutoMigrationSpec diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/JsonMigration.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/JsonMigration.kt similarity index 75% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/JsonMigration.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/JsonMigration.kt index a953edfbe3..146de584db 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/JsonMigration.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/JsonMigration.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import com.google.gson.JsonObject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration10To11.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration10To11.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration10To11.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/Migration10To11.kt index 53137f65da..e610bfd4aa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration10To11.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration10To11.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration11To12.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration11To12.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt index 33888d1bb9..5b352338cd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration11To12.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences @@ -15,7 +15,7 @@ import com.google.gson.JsonArray import com.google.gson.JsonElement import com.google.gson.JsonObject import com.google.gson.JsonParser -import io.github.sds100.keymapper.util.firstBlocking +import io.github.sds100.keymapper.base.util.firstBlocking /** * Move fingerprint maps from data store into sqlite database and move device info list information diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration13To14.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration13To14.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration13To14.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/Migration13To14.kt index 138cbd4e50..3e448dd338 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration13To14.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration13To14.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration1To2.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration1To2.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt index 40665886d0..fb0fae2439 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration1To2.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.core.database.getStringOrNull import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration2To3.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration2To3.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt index 120dac3c7e..59b3cfcafa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration2To3.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration3To4.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration3To4.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt index 2ac288148c..a61b6d4224 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration3To4.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration4To5.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration4To5.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt index 5ee769b44e..10c4541487 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration4To5.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration5To6.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration5To6.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt index 126086aa07..02a203fd9d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration5To6.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration6To7.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration6To7.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt index cc9e76bcea..4e0d96dd9e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration6To7.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration8To9.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration8To9.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration8To9.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/Migration8To9.kt index 9ee1e7c8da..2240986b73 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration8To9.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration8To9.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration9To10.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration9To10.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration9To10.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/Migration9To10.kt index f345973a41..1d5b846cce 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/Migration9To10.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration9To10.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/MigrationUtils.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt similarity index 92% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/MigrationUtils.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt index 4c896e5f18..ccbfb187ed 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/MigrationUtils.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.migration +package io.github.sds100.keymapper.data.migration import com.google.gson.JsonObject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt index c0ae9a7ba9..541790302b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.migration.fingerprintmaps +package io.github.sds100.keymapper.data.migration.fingerprintmaps import com.github.salomonbrys.kotson.byArray import com.github.salomonbrys.kotson.byInt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt index 4b4a1493f2..b75dcb120c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration1To2.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package io.github.sds100.keymapper.base.data.migration.fingerprintmaps +package io.github.sds100.keymapper.data.migration.fingerprintmaps import com.github.salomonbrys.kotson.byArray import com.github.salomonbrys.kotson.byString diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt rename to data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt index abb6d1e84f..735dbab356 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.migration.fingerprintmaps +package io.github.sds100.keymapper.data.migration.fingerprintmaps import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.FingerprintMapEntity diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/AccessibilityNodeRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/data/repositories/AccessibilityNodeRepository.kt rename to data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt index 1e3ce0a5de..8cd11a4c83 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/AccessibilityNodeRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.repositories +package io.github.sds100.keymapper.data.repositories import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/FloatingButtonRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt similarity index 93% rename from base/src/main/java/io/github/sds100/keymapper/base/data/repositories/FloatingButtonRepository.kt rename to data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt index fc8fb27e98..e9c468b1f1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/FloatingButtonRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt @@ -1,10 +1,10 @@ -package io.github.sds100.keymapper.base.data.repositories +package io.github.sds100.keymapper.data.repositories import io.github.sds100.keymapper.data.db.dao.FloatingButtonDao import io.github.sds100.keymapper.data.entities.FloatingButtonEntity import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout -import io.github.sds100.keymapper.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.util.DispatcherProvider +import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.util.DispatcherProvider import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/FloatingLayoutRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt similarity index 92% rename from base/src/main/java/io/github/sds100/keymapper/base/data/repositories/FloatingLayoutRepository.kt rename to data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt index fcda41c753..5ca2c00171 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/FloatingLayoutRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt @@ -1,11 +1,11 @@ -package io.github.sds100.keymapper.base.data.repositories +package io.github.sds100.keymapper.data.repositories import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.data.db.dao.FloatingLayoutDao import io.github.sds100.keymapper.data.entities.FloatingLayoutEntity import io.github.sds100.keymapper.data.entities.FloatingLayoutEntityWithButtons -import io.github.sds100.keymapper.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.util.DispatcherProvider +import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.util.DispatcherProvider import io.github.sds100.keymapper.common.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/GroupRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/data/repositories/GroupRepository.kt rename to data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt index 99f1413b01..1257e1fd1c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/GroupRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt @@ -1,11 +1,11 @@ -package io.github.sds100.keymapper.base.data.repositories +package io.github.sds100.keymapper.data.repositories import io.github.sds100.keymapper.data.db.dao.GroupDao import io.github.sds100.keymapper.data.entities.GroupEntity import io.github.sds100.keymapper.data.entities.GroupEntityWithChildren import io.github.sds100.keymapper.data.entities.KeyMapEntitiesWithGroup -import io.github.sds100.keymapper.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.util.DispatcherProvider +import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.util.DispatcherProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/PreferenceRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt similarity index 84% rename from base/src/main/java/io/github/sds100/keymapper/base/data/repositories/PreferenceRepository.kt rename to data/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt index 12f7cece30..fad61ec232 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/PreferenceRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.repositories +package io.github.sds100.keymapper.data.repositories import androidx.datastore.preferences.core.Preferences import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RepositoryUtils.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RepositoryUtils.kt similarity index 92% rename from base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RepositoryUtils.kt rename to data/src/main/java/io/github/sds100/keymapper/data/repositories/RepositoryUtils.kt index 0b493cb09e..50ad468cc5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RepositoryUtils.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RepositoryUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.repositories +package io.github.sds100.keymapper.data.repositories object RepositoryUtils { suspend fun saveUniqueName( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RoomKeyMapRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt similarity index 93% rename from base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RoomKeyMapRepository.kt rename to data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt index d3dd48108d..ac34085621 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RoomKeyMapRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt @@ -1,15 +1,15 @@ -package io.github.sds100.keymapper.base.data.repositories +package io.github.sds100.keymapper.data.repositories import io.github.sds100.keymapper.data.db.dao.FingerprintMapDao import io.github.sds100.keymapper.data.db.dao.KeyMapDao import io.github.sds100.keymapper.data.entities.FingerprintMapEntity import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.data.migration.fingerprintmaps.FingerprintToKeyMapMigration -import io.github.sds100.keymapper.keymaps.KeyMapRepository -import io.github.sds100.keymapper.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.util.DispatcherProvider +import io.github.sds100.keymapper.base.keymaps.KeyMapRepository +import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.util.DispatcherProvider import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.splitIntoBatches +import io.github.sds100.keymapper.base.util.splitIntoBatches import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RoomLogRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RoomLogRepository.kt rename to data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt index bbb1af7e2b..27f409150c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/RoomLogRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.repositories +package io.github.sds100.keymapper.data.repositories import io.github.sds100.keymapper.data.db.dao.LogEntryDao import io.github.sds100.keymapper.data.entities.LogEntryEntity diff --git a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/SettingsPreferenceRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/SettingsPreferenceRepository.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/data/repositories/SettingsPreferenceRepository.kt rename to data/src/main/java/io/github/sds100/keymapper/data/repositories/SettingsPreferenceRepository.kt index 9495c101ff..b4fba3ba06 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/data/repositories/SettingsPreferenceRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/SettingsPreferenceRepository.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.data.repositories +package io.github.sds100.keymapper.data.repositories import android.content.Context import androidx.datastore.preferences.core.Preferences diff --git a/data/src/test/java/io/github/sds100/keymapper/data/ExampleUnitTest.kt b/data/src/test/java/io/github/sds100/keymapper/data/ExampleUnitTest.kt new file mode 100644 index 0000000000..8f8ecaee15 --- /dev/null +++ b/data/src/test/java/io/github/sds100/keymapper/data/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package io.github.sds100.keymapper.data + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index f5dbe883b3..eb729a3931 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -29,3 +29,4 @@ include(":base") include(":api") include(":system") include(":common") +include(":data") diff --git a/system/build.gradle.kts b/system/build.gradle.kts index 762e0497b4..8ae37a99f3 100644 --- a/system/build.gradle.kts +++ b/system/build.gradle.kts @@ -37,6 +37,7 @@ android { dependencies { implementation(project(":common")) + implementation(project(":api")) // kotlin stuff implementation(libs.kotlinx.coroutines.android) diff --git a/system/src/main/AndroidManifest.xml b/system/src/main/AndroidManifest.xml index 44008a4332..dcfa0cf4d5 100644 --- a/system/src/main/AndroidManifest.xml +++ b/system/src/main/AndroidManifest.xml @@ -1,4 +1,105 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt b/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt index cd9b85191d..59a34755e0 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt @@ -4,7 +4,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ResourceProvider sealed class SystemError : Error() { data class PermissionDenied(val permission: Permission) : Error() { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt index 31922cb1fc..4e68c091eb 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt @@ -20,7 +20,7 @@ import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.util.ServiceEvent +import io.github.sds100.keymapper.base.util.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt index e2001dfd9d..d21b8f9822 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt @@ -13,14 +13,14 @@ import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.keymaps.FingerprintGestureType -import io.github.sds100.keymapper.keymaps.FingerprintGesturesSupportedUseCase -import io.github.sds100.keymapper.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.keymaps.detection.DetectKeyMapsUseCase -import io.github.sds100.keymapper.keymaps.detection.DetectScreenOffKeyEventsController -import io.github.sds100.keymapper.keymaps.detection.DpadMotionEventTracker -import io.github.sds100.keymapper.keymaps.detection.KeyMapController -import io.github.sds100.keymapper.keymaps.detection.TriggerKeyMapFromOtherAppsController +import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType +import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.detection.DetectScreenOffKeyEventsController +import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker +import io.github.sds100.keymapper.base.keymaps.detection.KeyMapController +import io.github.sds100.keymapper.base.keymaps.detection.TriggerKeyMapFromOtherAppsController import io.github.sds100.keymapper.reroutekeyevents.RerouteKeyEventsController import io.github.sds100.keymapper.reroutekeyevents.RerouteKeyEventsUseCase import io.github.sds100.keymapper.system.devices.DevicesAdapter @@ -30,8 +30,8 @@ import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.util.ServiceEvent -import io.github.sds100.keymapper.util.firstBlocking +import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.base.util.firstBlocking import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt index 1fd5578f83..85259ea49c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt @@ -4,7 +4,7 @@ import android.os.Build import androidx.annotation.RequiresApi import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.util.InputEventType +import io.github.sds100.keymapper.base.util.InputEventType import kotlinx.coroutines.flow.Flow interface IAccessibilityService { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt index 861a9346bd..07f43bdf72 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt @@ -30,14 +30,14 @@ import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapperImpl import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.keymaps.FingerprintGestureType +import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.util.Inject -import io.github.sds100.keymapper.util.InputEventType -import io.github.sds100.keymapper.util.MathUtils +import io.github.sds100.keymapper.base.util.Inject +import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.base.util.MathUtils import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt index bf2ec11c5f..99c369a3c7 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.accessibility import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.util.ServiceEvent +import io.github.sds100.keymapper.base.util.ServiceEvent import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt index 541ccb75d8..e7bfdb3e9c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt @@ -4,10 +4,15 @@ import android.bluetooth.BluetoothDevice import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import io.github.sds100.keymapper.KeyMapperApp +import dagger.hilt.android.AndroidEntryPoint +import javax.inject.Inject +@AndroidEntryPoint class BluetoothBroadcastReceiver : BroadcastReceiver() { + @Inject + private lateinit var bluetoothAdapter: AndroidBluetoothAdapter + override fun onReceive(context: Context?, intent: Intent?) { context ?: return intent ?: return @@ -15,7 +20,7 @@ class BluetoothBroadcastReceiver : BroadcastReceiver() { if (intent.action == BluetoothDevice.ACTION_ACL_CONNECTED || intent.action == BluetoothDevice.ACTION_ACL_DISCONNECTED ) { - (context.applicationContext as KeyMapperApp).bluetoothMonitor.onReceiveIntent(intent) + bluetoothAdapter.onReceiveIntent(intent) } } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt index f38030501e..b089df9543 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt @@ -14,7 +14,7 @@ import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.util.ifIsData +import io.github.sds100.keymapper.base.util.ifIsData import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt index 31c1e76f4d..6e855581a0 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt @@ -13,8 +13,8 @@ import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.system.SettingsUtils -import io.github.sds100.keymapper.util.SizeKM -import io.github.sds100.keymapper.util.getRealDisplaySize +import io.github.sds100.keymapper.base.util.SizeKM +import io.github.sds100.keymapper.base.util.getRealDisplaySize import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt index 913eaf2a94..9b1578af42 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.display import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.util.SizeKM +import io.github.sds100.keymapper.base.util.SizeKM import kotlinx.coroutines.flow.Flow interface DisplayAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt index 3acf4b44fc..9c170b34a1 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt @@ -30,7 +30,7 @@ import io.github.sds100.keymapper.system.accessibility.ServiceState import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.util.ServiceEvent +import io.github.sds100.keymapper.base.util.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt index 1300402d58..8aa48968bb 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt @@ -8,14 +8,14 @@ import io.github.sds100.keymapper.common.result.otherwise import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.popup.PopupMessageAdapter -import io.github.sds100.keymapper.util.PrefDelegate -import io.github.sds100.keymapper.util.ServiceEvent -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.PrefDelegate +import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt index afd65afe9a..e0c53962fb 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt @@ -9,7 +9,7 @@ import android.view.KeyEvent import io.github.sds100.keymapper.api.KeyEventRelayService import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapper import io.github.sds100.keymapper.system.inputevents.InputEventInjector -import io.github.sds100.keymapper.util.InputEventType +import io.github.sds100.keymapper.base.util.InputEventType import timber.log.Timber /** diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt index de48d6328b..4e6611a2bb 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.inputmethod import android.view.InputDevice -import io.github.sds100.keymapper.util.InputEventType +import io.github.sds100.keymapper.base.util.InputEventType data class InputKeyModel( val keyCode: Int, diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt index 9adc2a9f4d..cca594bcb7 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt @@ -7,7 +7,7 @@ import io.github.sds100.keymapper.common.result.Success import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.common.result.suspendThen import io.github.sds100.keymapper.common.result.then -import io.github.sds100.keymapper.util.firstBlocking +import io.github.sds100.keymapper.base.util.firstBlocking import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt index c430255b6d..7435420a5a 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.inputmethod import io.github.sds100.keymapper.system.accessibility.ServiceAdapter -import io.github.sds100.keymapper.util.ServiceEvent +import io.github.sds100.keymapper.base.util.ServiceEvent import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.runBlocking diff --git a/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt index b9efa5e314..0bb0e1db75 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt @@ -2,11 +2,15 @@ package io.github.sds100.keymapper.system.intents import android.content.Context import android.content.Intent +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.common.result.Error import io.github.sds100.keymapper.common.result.Result import io.github.sds100.keymapper.common.result.Success +import javax.inject.Inject +import javax.inject.Singleton -class IntentAdapterImpl(context: Context) : IntentAdapter { +@Singleton +class IntentAdapterImpl @Inject constructor(@ApplicationContext private val context: Context) : IntentAdapter { private val ctx = context.applicationContext override fun send( diff --git a/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt b/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt index e3da59ed67..45119be4b3 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt @@ -11,8 +11,8 @@ import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.util.InputEventType -import io.github.sds100.keymapper.util.firstBlocking +import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.base.util.firstBlocking import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt index 2f7b1155f5..6942035f1a 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt @@ -10,7 +10,7 @@ import androidx.core.app.NotificationManagerCompat import com.google.android.material.color.DynamicColors import io.github.sds100.keymapper.MainActivity import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.util.color +import io.github.sds100.keymapper.base.util.color import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt index c272b80daf..f3dcf596e7 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt @@ -3,22 +3,21 @@ package io.github.sds100.keymapper.system.notifications import android.provider.Settings import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat -import io.github.sds100.keymapper.BaseMainActivity -import io.github.sds100.keymapper.Constants +import io.github.sds100.keymapper.base.BaseMainActivity import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.onFailure import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.system.accessibility.ControlAccessibilityServiceUseCase import io.github.sds100.keymapper.system.accessibility.ServiceState import io.github.sds100.keymapper.system.inputmethod.ShowHideInputMethodUseCase import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.system.inputmethod.ToggleCompatibleImeUseCase -import io.github.sds100.keymapper.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.util.DispatcherProvider -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.util.DispatcherProvider +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow @@ -33,9 +32,8 @@ import javax.inject.Inject import javax.inject.Singleton import io.github.sds100.keymapper.common.BuildConfigProvider - - -class NotificationController( +@Singleton +class NotificationController @Inject constructor( private val coroutineScope: CoroutineScope, private val manageNotifications: ManageNotificationsUseCase, private val pauseMappings: PauseKeyMapsUseCase, diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt index 76524cdfd2..9ea6674856 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt @@ -11,7 +11,7 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry import androidx.lifecycle.lifecycleScope import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.util.ServiceEvent +import io.github.sds100.keymapper.base.util.ServiceEvent import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import timber.log.Timber diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt index a5c9d48261..87c291ee1c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt @@ -18,7 +18,7 @@ import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.accessibility.ServiceState import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.ServiceEvent +import io.github.sds100.keymapper.base.util.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt index 8db51daec1..13799a31cf 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt @@ -29,7 +29,7 @@ import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.util.getIdentifier +import io.github.sds100.keymapper.base.util.getIdentifier import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt index 97f334bd6b..db2d60e867 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt @@ -4,7 +4,7 @@ import android.Manifest import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.result.onSuccess import io.github.sds100.keymapper.system.popup.PopupMessageAdapter -import io.github.sds100.keymapper.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt index 25ba199d41..aa31e6aa2c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt @@ -21,7 +21,7 @@ import io.github.sds100.keymapper.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.DeviceAdmin import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.util.str +import io.github.sds100.keymapper.base.util.str import rikka.shizuku.Shizuku import splitties.alertdialog.appcompat.messageResource import splitties.alertdialog.appcompat.negativeButton diff --git a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt index a352d80030..9fcb35e180 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt @@ -8,7 +8,7 @@ import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.Shell import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.util.firstBlocking +import io.github.sds100.keymapper.base.util.firstBlocking import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt b/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt index 52be3fd7d3..f124f51f32 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt @@ -14,9 +14,9 @@ import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.UseCases import io.github.sds100.keymapper.common.result.onFailure import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.util.getFullMessage -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.str +import io.github.sds100.keymapper.base.util.getFullMessage +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.str import kotlinx.coroutines.flow.first import splitties.toast.toast diff --git a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt b/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt index c70f4f8d53..a15585ea15 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt @@ -12,9 +12,9 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.UseCases import io.github.sds100.keymapper.system.accessibility.ServiceState -import io.github.sds100.keymapper.util.firstBlocking -import io.github.sds100.keymapper.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.util.str +import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.util.str import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.combine From 3835f03cfc3d2e829d3ebe819f2fade2fce72318 Mon Sep 17 00:00:00 2001 From: sds100 Date: Sat, 17 May 2025 15:17:36 +0200 Subject: [PATCH 16/71] #1711 create mapping module --- api/build.gradle.kts | 1 + .../api/PauseMappingsBroadcastReceiver.kt | 8 +- base/build.gradle.kts | 2 + .../sds100/keymapper/base/BaseMainActivity.kt | 2 +- .../sds100/keymapper/base/actions/Action.kt | 6 +- .../base/actions/ActionDataEntityMapper.kt | 12 +-- .../base/actions/ActionErrorSnapshot.kt | 6 +- .../keymapper/base/actions/ActionUiHelper.kt | 2 +- .../keymapper/base/actions/ActionsScreen.kt | 2 +- .../base/actions/ChooseActionFragment.kt | 4 +- .../base/actions/ChooseActionScreen.kt | 2 +- .../base/actions/ChooseActionViewModel.kt | 2 +- .../base/actions/ConfigActionsViewModel.kt | 10 +- .../base/actions/DisplayActionUseCase.kt | 4 +- .../base/actions/IsActionSupportedUseCase.kt | 2 +- .../base/actions/PerformActionsUseCase.kt | 33 ++---- .../base/actions/TestActionUseCase.kt | 2 +- .../actions/keyevent/ChooseKeyCodeFragment.kt | 4 +- .../keyevent/ChooseKeyCodeViewModel.kt | 2 +- .../keyevent/ConfigKeyEventActionFragment.kt | 2 +- .../keyevent/ConfigKeyEventActionViewModel.kt | 16 +-- .../actions/keyevent/ConfigKeyEventUseCase.kt | 2 +- .../PinchPickDisplayCoordinateFragment.kt | 2 +- .../actions/sound/ChooseSoundFileFragment.kt | 2 +- .../actions/sound/ChooseSoundFileUseCase.kt | 6 +- .../actions/sound/ChooseSoundFileViewModel.kt | 6 +- .../base/actions/sound/SoundsManager.kt | 12 +-- .../SwipePickDisplayCoordinateFragment.kt | 2 +- .../PickDisplayCoordinateFragment.kt | 2 +- .../uielement/ChooseUiElementScreen.kt | 2 +- .../uielement/InteractUiElementFragment.kt | 4 +- .../uielement/InteractUiElementScreen.kt | 2 +- .../uielement/InteractUiElementUseCase.kt | 8 +- .../uielement/InteractUiElementViewModel.kt | 18 ++-- .../keymapper/base/backup/BackupManager.kt | 12 +-- .../backup/BackupRestoreMappingsUseCase.kt | 8 +- .../base/backup/RestoreKeyMapsViewModel.kt | 4 +- .../constraints/ChooseConstraintFragment.kt | 4 +- .../constraints/ChooseConstraintScreen.kt | 2 +- .../constraints/ChooseConstraintViewModel.kt | 2 +- .../constraints/ConfigConstraintsViewModel.kt | 8 +- .../keymapper/base/constraints/Constraint.kt | 2 +- .../constraints/ConstraintErrorSnapshot.kt | 4 +- .../base/constraints/ConstraintSnapshot.kt | 2 +- .../base/constraints/ConstraintUiHelper.kt | 4 +- .../base/constraints/ConstraintsScreen.kt | 2 +- .../constraints/CreateConstraintUseCase.kt | 2 +- .../constraints/DisplayConstraintUseCase.kt | 4 +- .../base/groups/GroupConstraintRow.kt | 2 +- .../base/home/HomeKeyMapListScreen.kt | 8 +- .../keymapper/base/home/HomeViewModel.kt | 4 +- .../keymapper/base/home/KeyMapListAppBar.kt | 2 +- .../base/logging/DisplayLogUseCase.kt | 6 +- .../keymapper/base/logging/LogFragment.kt | 4 +- .../keymapper/base/logging/LogRepository.kt | 2 +- .../keymapper/base/logging/LogViewModel.kt | 6 +- .../base/onboarding/OnboardingUseCase.kt | 6 +- .../base/purchasing/PurchasingError.kt | 2 +- .../base/purchasing/PurchasingManager.kt | 4 +- .../RerouteKeyEventsUseCase.kt | 5 +- .../Android11BugWorkaroundSettingsFragment.kt | 4 +- .../AutomaticallyChangeImeSettings.kt | 2 +- .../base/settings/ConfigSettingsUseCase.kt | 4 +- .../DefaultOptionsSettingsFragment.kt | 4 +- .../settings/ImePickerSettingsFragment.kt | 2 +- .../base/settings/MainSettingsFragment.kt | 6 +- .../base/settings/SettingsViewModel.kt | 8 +- .../base/settings/ShizukuSettingsFragment.kt | 4 +- .../comparators/KeyMapActionsComparator.kt | 6 +- .../KeyMapConstraintsComparator.kt | 8 +- .../trigger/BaseConfigTriggerViewModel.kt | 14 +-- .../base/trigger/RecordTriggerUseCase.kt | 2 +- .../base/trigger/SetupGuiKeyboardUseCase.kt | 2 +- .../sds100/keymapper/base/trigger/Trigger.kt | 2 +- .../base/trigger/TriggerErrorSnapshot.kt | 6 +- .../keymapper/base/trigger/TriggerScreen.kt | 2 +- .../base/ui/apps/ChooseActivityFragment.kt | 2 +- .../base/ui/apps/ChooseActivityViewModel.kt | 4 +- .../base/ui/apps/ChooseAppFragment.kt | 4 +- .../keymapper/base/ui/apps/ChooseAppScreen.kt | 2 +- .../base/ui/apps/ChooseAppShortcutFragment.kt | 4 +- .../ui/apps/ChooseAppShortcutViewModel.kt | 6 +- .../base/ui/apps/ChooseAppViewModel.kt | 6 +- .../ui/apps/DisplayAppShortcutsUseCase.kt | 4 +- .../base/ui/apps/DisplayAppsUseCase.kt | 4 +- .../ChooseBluetoothDeviceFragment.kt | 4 +- .../ChooseBluetoothDeviceViewModel.kt | 2 +- .../base/ui/intents/ConfigIntentFragment.kt | 2 +- .../sds100/keymapper/base/util/ErrorUtils.kt | 2 +- .../sds100/keymapper/base/util/FilterUtils.kt | 2 +- .../keymapper/base/util/PreferenceDelegate.kt | 1 + .../keymapper/base/util/ui/DialogUtils.kt | 16 +-- .../keymapper/base/util/ui/PopupViewModel.kt | 2 +- .../base/util/ui/RecyclerViewFragment.kt | 4 +- .../keymapper/base/util/ui/ViewModelHelper.kt | 2 +- .../base/util/ui/compose/ComposeChipModel.kt | 4 +- .../sds100/keymapper/BackupManagerTest.kt | 6 +- .../keymapper/ConfigKeyMapUseCaseTest.kt | 4 +- .../actions/GetActionFailedUseCaseTest.kt | 2 +- .../actions/PerformActionsUseCaseTest.kt | 4 +- .../keymapper/keymaps/KeyMapControllerTest.kt | 2 +- ...riggerKeyMapFromOtherAppsControllerTest.kt | 2 +- .../system/devices/FakeDevicesAdapter.kt | 4 +- .../keymapper/system/files/FakeFileAdapter.kt | 4 +- .../sds100/keymapper/system/files/JavaFile.kt | 4 +- .../intents/ConfigIntentViewModelTest.kt | 2 +- common/build.gradle.kts | 18 ++++ .../keymapper/common}/util/CoroutineUtils.kt | 2 +- .../common/{ => util}/result/Result.kt | 2 +- .../common/{ => util}/state/State.kt | 2 +- data/build.gradle.kts | 4 +- .../keymapper/data/entities/EntityExtra.kt | 2 +- .../AccessibilityNodeRepository.kt | 2 +- .../repositories/FloatingButtonRepository.kt | 2 +- .../repositories/FloatingLayoutRepository.kt | 2 +- .../data/repositories/RoomKeyMapRepository.kt | 2 +- .../data/repositories/RoomLogRepository.kt | 2 +- mapping/.gitignore | 1 + mapping/build.gradle.kts | 44 ++++++++ mapping/consumer-rules.pro | 0 mapping/proguard-rules.pro | 21 ++++ .../mapping/ExampleInstrumentedTest.kt | 24 +++++ mapping/src/main/AndroidManifest.xml | 4 + .../keymapper/mapping}/keymaps/ClickType.kt | 2 +- .../mapping}/keymaps/ConfigKeyMapFragment.kt | 2 +- .../keymaps/ConfigKeyMapOptionsViewModel.kt | 10 +- .../mapping}/keymaps/ConfigKeyMapScreen.kt | 2 +- .../mapping}/keymaps/ConfigKeyMapUseCase.kt | 10 +- .../mapping}/keymaps/ConfigKeyMapViewModel.kt | 6 +- .../keymaps/CreateKeyMapShortcutActivity.kt | 2 +- .../keymaps/CreateKeyMapShortcutScreen.kt | 6 +- .../keymaps/CreateKeyMapShortcutUseCase.kt | 4 +- .../keymaps/CreateKeyMapShortcutViewModel.kt | 6 +- .../mapping}/keymaps/DisplayKeyMapUseCase.kt | 18 ++-- .../keymaps/FingerprintGestureType.kt | 2 +- .../FingerprintGesturesSupportedUseCase.kt | 2 +- .../keymaps/GetDefaultKeyMapOptionsUseCase.kt | 2 +- .../keymapper/mapping}/keymaps/KeyMap.kt | 2 +- .../mapping}/keymaps/KeyMapAppBarState.kt | 2 +- .../keymapper/mapping}/keymaps/KeyMapGroup.kt | 4 +- .../mapping}/keymaps/KeyMapListItemCreator.kt | 4 +- .../mapping}/keymaps/KeyMapListScreen.kt | 6 +- .../mapping}/keymaps/KeyMapListState.kt | 4 +- .../mapping}/keymaps/KeyMapListViewModel.kt | 100 ++++++++++-------- .../mapping}/keymaps/KeyMapOptionsScreen.kt | 4 +- .../mapping}/keymaps/KeyMapRepository.kt | 4 +- .../mapping}/keymaps/ListKeyMapsUseCase.kt | 10 +- .../mapping}/keymaps/PauseKeyMapsUseCase.kt | 2 +- .../mapping}/keymaps/ShortcutModel.kt | 2 +- .../keymapper/mapping}/keymaps/ShortcutRow.kt | 2 +- .../keymaps/SimpleMappingController.kt | 2 +- .../keymaps/detection/DetectKeyMapModel.kt | 2 +- .../keymaps/detection/DetectKeyMapsUseCase.kt | 6 +- .../DetectScreenOffKeyEventsController.kt | 6 +- .../detection/DpadMotionEventTracker.kt | 2 +- .../ParallelTriggerActionPerformer.kt | 2 +- .../SequenceTriggerActionPerformer.kt | 2 +- .../TriggerKeyMapFromOtherAppsController.kt | 2 +- .../keymapper/mapping/ExampleUnitTest.kt | 17 +++ settings.gradle.kts | 1 + .../github/sds100/keymapper/system/Shell.kt | 6 +- .../sds100/keymapper/system/SystemError.kt | 2 +- .../AccessibilityServiceAdapter.kt | 10 +- .../accessibility/IAccessibilityService.kt | 2 +- .../accessibility/MyAccessibilityService.kt | 6 +- .../system/accessibility/ServiceAdapter.kt | 2 +- .../airplanemode/AirplaneModeAdapter.kt | 2 +- .../AndroidAirplaneModeAdapter.kt | 4 +- .../system/apps/AndroidAppShortcutAdapter.kt | 10 +- .../apps/AndroidPackageManagerAdapter.kt | 10 +- .../system/apps/AppShortcutAdapter.kt | 4 +- .../system/apps/PackageManagerAdapter.kt | 4 +- .../bluetooth/AndroidBluetoothAdapter.kt | 6 +- .../system/bluetooth/BluetoothAdapter.kt | 2 +- .../system/camera/AndroidCameraAdapter.kt | 6 +- .../keymapper/system/camera/CameraAdapter.kt | 2 +- .../system/devices/AndroidDevicesAdapter.kt | 8 +- .../system/devices/DevicesAdapter.kt | 4 +- .../system/display/AndroidDisplayAdapter.kt | 6 +- .../system/display/DisplayAdapter.kt | 2 +- .../system/files/AndroidFileAdapter.kt | 6 +- .../system/files/DocumentFileWrapper.kt | 6 +- .../keymapper/system/files/FileAdapter.kt | 2 +- .../sds100/keymapper/system/files/IFile.kt | 2 +- .../inputmethod/AndroidInputMethodAdapter.kt | 16 +-- .../inputmethod/AutoSwitchImeController.kt | 8 +- .../system/inputmethod/InputMethodAdapter.kt | 2 +- .../system/inputmethod/KeyMapperImeHelper.kt | 12 +-- .../inputmethod/ToggleCompatibleImeUseCase.kt | 2 +- .../keymapper/system/intents/IntentAdapter.kt | 6 +- .../system/lock/AndroidLockScreenAdapter.kt | 4 +- .../system/lock/LockScreenAdapter.kt | 2 +- .../system/media/AndroidMediaAdapter.kt | 6 +- .../keymapper/system/media/MediaAdapter.kt | 2 +- .../system/navigation/OpenMenuHelper.kt | 4 +- .../system/network/AndroidNetworkAdapter.kt | 6 +- .../system/network/NetworkAdapter.kt | 2 +- .../keymapper/system/nfc/AndroidNfcAdapter.kt | 2 +- .../sds100/keymapper/system/nfc/NfcAdapter.kt | 2 +- .../notifications/NotificationController.kt | 4 +- .../NotificationReceiverAdapter.kt | 4 +- .../permissions/AndroidPermissionAdapter.kt | 10 +- .../AutoGrantPermissionController.kt | 2 +- .../system/permissions/PermissionAdapter.kt | 2 +- .../system/phone/AndroidPhoneAdapter.kt | 6 +- .../keymapper/system/phone/PhoneAdapter.kt | 2 +- .../system/ringtones/RingtoneAdapter.kt | 6 +- .../sds100/keymapper/system/root/SuAdapter.kt | 6 +- .../keymapper/system/shell/ShellAdapter.kt | 2 +- .../tiles/ToggleKeyMapperKeyboardTile.kt | 4 +- .../system/url/AndroidOpenUrlAdapter.kt | 2 +- .../keymapper/system/url/OpenUrlAdapter.kt | 2 +- .../sds100/keymapper/system/url/UrlUtils.kt | 6 +- .../system/volume/AndroidVolumeAdapter.kt | 8 +- .../keymapper/system/volume/VolumeAdapter.kt | 2 +- 215 files changed, 637 insertions(+), 507 deletions(-) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/CoroutineUtils.kt (95%) rename common/src/main/java/io/github/sds100/keymapper/common/{ => util}/result/Result.kt (99%) rename common/src/main/java/io/github/sds100/keymapper/common/{ => util}/state/State.kt (91%) create mode 100644 mapping/.gitignore create mode 100644 mapping/build.gradle.kts create mode 100644 mapping/consumer-rules.pro create mode 100644 mapping/proguard-rules.pro create mode 100644 mapping/src/androidTest/java/io/github/sds100/keymapper/mapping/ExampleInstrumentedTest.kt create mode 100644 mapping/src/main/AndroidManifest.xml rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/ClickType.kt (60%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/ConfigKeyMapFragment.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/ConfigKeyMapOptionsViewModel.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/ConfigKeyMapScreen.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/ConfigKeyMapUseCase.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/ConfigKeyMapViewModel.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/CreateKeyMapShortcutActivity.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/CreateKeyMapShortcutScreen.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/CreateKeyMapShortcutUseCase.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/CreateKeyMapShortcutViewModel.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/DisplayKeyMapUseCase.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/FingerprintGestureType.kt (66%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/FingerprintGesturesSupportedUseCase.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/GetDefaultKeyMapOptionsUseCase.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/KeyMap.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/KeyMapAppBarState.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/KeyMapGroup.kt (64%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/KeyMapListItemCreator.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/KeyMapListScreen.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/KeyMapListState.kt (68%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/KeyMapListViewModel.kt (87%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/KeyMapOptionsScreen.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/KeyMapRepository.kt (86%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/ListKeyMapsUseCase.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/PauseKeyMapsUseCase.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/ShortcutModel.kt (77%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/ShortcutRow.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/SimpleMappingController.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/detection/DetectKeyMapModel.kt (79%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/detection/DetectKeyMapsUseCase.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/detection/DetectScreenOffKeyEventsController.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/detection/DpadMotionEventTracker.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/detection/ParallelTriggerActionPerformer.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/detection/SequenceTriggerActionPerformer.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt (95%) create mode 100644 mapping/src/test/java/io/github/sds100/keymapper/mapping/ExampleUnitTest.kt diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 407cd6e4f3..50892488c5 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -40,6 +40,7 @@ android { dependencies { implementation(project(":common")) implementation(project(":system")) + implementation(project(":mapping")) implementation(libs.jakewharton.timber) diff --git a/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt b/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt index 02fe483c57..1796a3141b 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt @@ -4,8 +4,8 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.UseCases -import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.common.util.firstBlocking +import io.github.sds100.keymapper.mapping.keymaps.PauseKeyMapsUseCase import javax.inject.Inject // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API @@ -13,13 +13,11 @@ import javax.inject.Inject class PauseMappingsBroadcastReceiver : BroadcastReceiver() { @Inject - private lateinit var pauseKeyMapsUseCase: PauseKeyMapsUseCase + private lateinit var useCase: PauseKeyMapsUseCase override fun onReceive(context: Context?, intent: Intent?) { context ?: return - val useCase = UseCases.pauseKeyMaps(context) - when (intent?.action) { Api.ACTION_PAUSE_MAPPINGS -> useCase.pause() Api.ACTION_RESUME_MAPPINGS -> useCase.resume() diff --git a/base/build.gradle.kts b/base/build.gradle.kts index ea4692c0a0..f16b199a09 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -63,6 +63,8 @@ dependencies { implementation(project(":api")) implementation(project(":data")) implementation(project(":system")) + implementation(project(":systemstubs")) + implementation(project(":mapping")) // TODO delete the unused libraries and plugins diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt index 0bc8811f9a..e0c8795543 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt @@ -35,7 +35,7 @@ import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter import io.github.sds100.keymapper.system.permissions.RequestPermissionDelegate import io.github.sds100.keymapper.trigger.RecordTriggerController -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.launchIn diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt index f3d01d44e6..ea339b4933 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.actions -import io.github.sds100.keymapper.common.result.success -import io.github.sds100.keymapper.common.result.then -import io.github.sds100.keymapper.common.result.valueOrNull +import io.github.sds100.keymapper.common.util.result.success +import io.github.sds100.keymapper.common.util.result.then +import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt index 316b0cfa69..33d4b07586 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt @@ -3,12 +3,12 @@ package io.github.sds100.keymapper.base.actions import androidx.core.net.toUri import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType import io.github.sds100.keymapper.actions.uielement.NodeInteractionType -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.success -import io.github.sds100.keymapper.common.result.then -import io.github.sds100.keymapper.common.result.valueOrNull +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.success +import io.github.sds100.keymapper.common.util.result.then +import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.data.db.typeconverter.ConstantTypeConverters import io.github.sds100.keymapper.data.db.typeconverter.NodeInteractionTypeSetTypeConverter import io.github.sds100.keymapper.data.entities.ActionEntity diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt index 97c1934444..8cf20e3f13 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.actions.sound.SoundsManager -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.apps.PackageManagerAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt index aac9f90aef..25207034bf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt @@ -6,7 +6,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Android import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType -import io.github.sds100.keymapper.common.result.handle +import io.github.sds100.keymapper.common.util.result.handle import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.devices.InputDeviceUtils diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt index 9549981a5d..a09a353797 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt @@ -42,7 +42,7 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.ui.LinkType import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.util.ui.compose.DraggableItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt index 04f55579ae..fcce3db246 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt @@ -26,10 +26,10 @@ import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.setupNavigation import io.github.sds100.keymapper.base.util.ui.showPopups -import io.github.sds100.keymapper.base.util.viewLifecycleScope +import io.github.sds100.keymapper.common.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt index 17abbb2d8d..0af3a84ffd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt @@ -40,7 +40,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.util.ui.compose.SearchAppBarActions import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemFixedHeight diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index 292bf2efc9..0455d8d4ed 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.containsQuery import io.github.sds100.keymapper.base.util.getFullMessage import io.github.sds100.keymapper.base.util.ui.DialogResponse diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index e9e833e235..4003604e9e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -1,19 +1,19 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.onFailure import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.dataOrNull import io.github.sds100.keymapper.base.util.getFullMessage import io.github.sds100.keymapper.base.util.isFixable -import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.common.util.state.mapData import io.github.sds100.keymapper.base.util.ui.ChooseAppStoreModel import io.github.sds100.keymapper.base.util.ui.DialogResponse import io.github.sds100.keymapper.base.util.ui.LinkType diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt index 7c0ec05934..d7a4040819 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.actions import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result import kotlinx.coroutines.flow.Flow interface DisplayActionUseCase : GetActionErrorUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt index 6d19e36cbd..dfc0d6574b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.actions import android.content.pm.PackageManager import android.os.Build -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraLens diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt index 7eb875eb0b..fee6bf533c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt @@ -7,21 +7,19 @@ import android.view.KeyEvent import android.view.accessibility.AccessibilityNodeInfo import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.sound.SoundsManager -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.common.result.otherwise -import io.github.sds100.keymapper.common.result.success -import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.util.result.otherwise +import io.github.sds100.keymapper.common.util.result.success +import io.github.sds100.keymapper.common.util.result.then import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.accessibility.AccessibilityNodeAction import io.github.sds100.keymapper.system.accessibility.AccessibilityNodeModel import io.github.sds100.keymapper.system.accessibility.IAccessibilityService -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.airplanemode.AirplaneModeAdapter import io.github.sds100.keymapper.system.apps.AppShortcutAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter @@ -32,9 +30,7 @@ import io.github.sds100.keymapper.system.display.DisplayAdapter import io.github.sds100.keymapper.system.display.Orientation import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.system.inputevents.InputEventInjector import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.intents.IntentAdapter @@ -50,18 +46,16 @@ import io.github.sds100.keymapper.system.phone.PhoneAdapter import io.github.sds100.keymapper.system.popup.PopupMessageAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.system.shell.ShellAdapter import io.github.sds100.keymapper.system.url.OpenUrlAdapter import io.github.sds100.keymapper.system.volume.RingerMode -import io.github.sds100.keymapper.system.volume.VolumeAdapter import io.github.sds100.keymapper.system.volume.VolumeStream import io.github.sds100.keymapper.base.util.InputEventType import io.github.sds100.keymapper.base.util.ServiceEvent -import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.common.util.state.dataOrNull +import io.github.sds100.keymapper.common.util.firstBlocking import io.github.sds100.keymapper.base.util.getFullMessage import io.github.sds100.keymapper.base.util.getWordBoundaries -import io.github.sds100.keymapper.common.state.ifIsData +import io.github.sds100.keymapper.common.util.state.ifIsData import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay @@ -73,16 +67,11 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import splitties.bitflags.withFlag import timber.log.Timber -import dagger.hilt.android.qualifiers.ApplicationContext -import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapper -import io.github.sds100.keymapper.system.IAccessibilityService import io.github.sds100.keymapper.system.Shell -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.audio.AudioAdapter import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjectorImpl import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapter import io.github.sds100.keymapper.base.util.SettingsRepository -import io.github.sds100.keymapper.system.power.PowerAdapter import javax.inject.Inject import javax.inject.Singleton diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt index 7e99b87876..2362216199 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.actions -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.base.util.ServiceEvent diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt index 7d92ac2c99..11a296a7c0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt @@ -7,8 +7,8 @@ import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt index e79e73c8af..9678921d86 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.base.util.filterByQuery import io.github.sds100.keymapper.base.util.ui.DefaultSimpleListItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt index 965d24c402..68d30da4c5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt @@ -20,7 +20,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.FragmentConfigKeyEventBinding import io.github.sds100.keymapper.ui.utils.putJsonSerializable import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.str import io.github.sds100.keymapper.base.util.ui.configuredCheckBox import io.github.sds100.keymapper.base.util.ui.setupNavigation diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt index 330436296b..b2e135e615 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -8,14 +8,14 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.errorOrNull -import io.github.sds100.keymapper.common.result.handle -import io.github.sds100.keymapper.common.result.isSuccess -import io.github.sds100.keymapper.common.result.success -import io.github.sds100.keymapper.common.result.valueOrNull +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.errorOrNull +import io.github.sds100.keymapper.common.util.result.handle +import io.github.sds100.keymapper.common.util.result.isSuccess +import io.github.sds100.keymapper.common.util.result.success +import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt index f2e4072094..b0b8aeba13 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt @@ -4,7 +4,7 @@ import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt index 274e4f7ceb..6408facbed 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt @@ -25,7 +25,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.FragmentPinchPickCoordinatesBinding import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.str import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt index 1b24ba0494..479bd06e88 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt @@ -25,7 +25,7 @@ import io.github.sds100.keymapper.databinding.FragmentChooseSoundFileBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.filterNotNull diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt index 78bbe1f52f..d0d9efd032 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.actions.sound -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import io.github.sds100.keymapper.system.files.FileAdapter import kotlinx.coroutines.flow.StateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt index 2e4830a05a..393d2d7afd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt @@ -5,9 +5,9 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.common.result.valueOrNull +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.base.util.getFullMessage import io.github.sds100.keymapper.base.util.ui.DefaultSimpleListItem import io.github.sds100.keymapper.base.util.ui.PopupUi diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt index e2bfa08547..0f3efa9c78 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt @@ -1,11 +1,11 @@ package io.github.sds100.keymapper.base.actions.sound -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.util.result.then import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.system.files.IFile import kotlinx.coroutines.CoroutineScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt index 9409027cfb..bb12cc8785 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt @@ -23,7 +23,7 @@ import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.databinding.FragmentSwipePickCoordinatesBinding import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.encodeToString diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt index 88d665857a..014d9084a6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt @@ -23,7 +23,7 @@ import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.databinding.FragmentPickCoordinateBinding import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.encodeToString diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt index e72508efa8..717ab86f30 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt @@ -51,7 +51,7 @@ import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.ui.compose.CheckBoxText import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperDropdownMenu import io.github.sds100.keymapper.base.util.ui.compose.SearchAppBarActions diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt index b24ef2fbc6..c857021abc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt @@ -26,9 +26,9 @@ import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.showPopups -import io.github.sds100.keymapper.base.util.viewLifecycleScope +import io.github.sds100.keymapper.common.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt index 6e28263a36..3523adc07b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt @@ -73,7 +73,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.base.ui.apps.ChooseAppScreen -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.drawable import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperDropdownMenu diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt index 9754f984be..d6504eca27 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt @@ -1,16 +1,16 @@ package io.github.sds100.keymapper.base.actions.uielement import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.onFailure +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.onFailure import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.base.util.ServiceEvent -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.mapData import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt index 6c12fb20d8..e610ddeac6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt @@ -8,18 +8,18 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.then -import io.github.sds100.keymapper.common.result.valueOrNull +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.then +import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.containsQuery -import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.common.state.ifIsData -import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.common.util.state.dataOrNull +import io.github.sds100.keymapper.common.util.state.ifIsData +import io.github.sds100.keymapper.common.util.state.mapData import io.github.sds100.keymapper.base.util.ui.PopupUi import io.github.sds100.keymapper.base.util.ui.PopupViewModel import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt index 8ad0d38bee..1257a3e42b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt @@ -16,11 +16,11 @@ import com.google.gson.JsonSyntaxException import com.google.gson.stream.MalformedJsonException import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.actions.sound.SoundsManager -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.then import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.db.AppDatabase @@ -55,7 +55,7 @@ import io.github.sds100.keymapper.system.files.IFile import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider import io.github.sds100.keymapper.base.util.DefaultUuidGenerator import io.github.sds100.keymapper.base.util.DispatcherProvider -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.TreeNode import io.github.sds100.keymapper.base.util.UuidGenerator import io.github.sds100.keymapper.base.util.breadFirstTraversal diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt index 87e9f49390..895ff7f48e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.backup -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.then import io.github.sds100.keymapper.system.files.FileAdapter import kotlinx.coroutines.flow.Flow import timber.log.Timber diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt index 1833516416..a9cbf41612 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt @@ -3,8 +3,8 @@ package io.github.sds100.keymapper.base.backup import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.base.util.getFullMessage import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt index 43ee2f7b24..47fa46421c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt @@ -26,10 +26,10 @@ import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.setupNavigation import io.github.sds100.keymapper.base.util.ui.showPopups -import io.github.sds100.keymapper.base.util.viewLifecycleScope +import io.github.sds100.keymapper.common.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt index b4ef1098d6..9fb920392e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt @@ -47,7 +47,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemFixedHeight import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt index 3bccbcaccf..423200736e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.camera.CameraLensUtils import io.github.sds100.keymapper.system.display.Orientation -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.containsQuery import io.github.sds100.keymapper.base.util.getFullMessage import io.github.sds100.keymapper.base.util.ui.NavDestination diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index 6c6627cf5c..e63ccc30c8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -3,16 +3,16 @@ package io.github.sds100.keymapper.base.constraints import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.dataOrNull import io.github.sds100.keymapper.base.util.getFullMessage import io.github.sds100.keymapper.base.util.isFixable -import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.common.util.state.mapData import io.github.sds100.keymapper.base.util.ui.NavDestination import io.github.sds100.keymapper.base.util.ui.NavigationViewModel import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt index d2fb7c8e81..c1a04da790 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.constraints -import io.github.sds100.keymapper.common.result.valueOrNull +import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.data.entities.ConstraintEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt index d64760f219..7100a48726 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt @@ -2,8 +2,8 @@ package io.github.sds100.keymapper.base.constraints import android.content.pm.PackageManager import android.os.Build -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt index dbf3c40dad..a0ba0c3069 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt @@ -15,7 +15,7 @@ import io.github.sds100.keymapper.system.network.NetworkAdapter import io.github.sds100.keymapper.system.phone.CallState import io.github.sds100.keymapper.system.phone.PhoneAdapter import io.github.sds100.keymapper.system.power.PowerAdapter -import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.common.util.firstBlocking import timber.log.Timber import java.time.LocalTime diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt index f950ee1c20..26f7a1c46e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt @@ -3,8 +3,8 @@ package io.github.sds100.keymapper.base.constraints import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Android import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.handle -import io.github.sds100.keymapper.common.result.valueIfFailure +import io.github.sds100.keymapper.common.util.result.handle +import io.github.sds100.keymapper.common.util.result.valueIfFailure import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.display.Orientation import io.github.sds100.keymapper.base.util.TimeUtils diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt index c51bba888c..0684647c89 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt @@ -42,7 +42,7 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.drawable import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt index bc342fb8f4..2ea51ff2ab 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.constraints import android.content.pm.PackageManager import android.os.Build -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.camera.CameraAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt index 48aa33a450..f717dc9d06 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.constraints import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result interface DisplayConstraintUseCase : GetConstraintErrorUseCase { fun getAppName(packageName: String): Result diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt index 8c33f5d303..ab04ea4548 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt @@ -39,7 +39,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.base.util.drawable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt index eeba71317a..91e9496b78 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt @@ -56,13 +56,13 @@ import com.canopas.lib.showcase.IntroShowcase import io.github.sds100.keymapper.R import io.github.sds100.keymapper.backup.ImportExportState import io.github.sds100.keymapper.backup.RestoreType -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState import io.github.sds100.keymapper.base.keymaps.KeyMapList -import io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel +import io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel import io.github.sds100.keymapper.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.sorting.SortBottomSheet import io.github.sds100.keymapper.system.files.FileUtils @@ -70,7 +70,7 @@ import io.github.sds100.keymapper.trigger.DpadTriggerSetupBottomSheet import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.base.util.ShareUtils -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.drawable import io.github.sds100.keymapper.base.util.ui.compose.CollapsableFloatingActionButton import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel @@ -83,7 +83,7 @@ import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe @Composable fun HomeKeyMapListScreen( modifier: Modifier = Modifier, - viewModel: KeyMapListViewModel, + viewModel: io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel, snackbarState: SnackbarHostState, onSettingsClick: () -> Unit, onAboutClick: () -> Unit, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt index 58005552e1..6c06a27d9e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt @@ -13,7 +13,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.backup.BackupRestoreMappingsUseCase import io.github.sds100.keymapper.floating.ListFloatingLayoutsUseCase import io.github.sds100.keymapper.floating.ListFloatingLayoutsViewModel -import io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel +import io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel import io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.onboarding.OnboardingUseCase @@ -71,7 +71,7 @@ class HomeViewModel @Inject constructor( ) val keyMapListViewModel by lazy { - KeyMapListViewModel( + io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel( viewModelScope, listKeyMaps, resourceProvider, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt index 337cb040d2..23b59f3f17 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt @@ -91,7 +91,7 @@ import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.constraints.ConstraintMode diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt index a5536b616c..4acae4ad35 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt @@ -3,9 +3,9 @@ package io.github.sds100.keymapper.base.logging import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.clipboard.ClipboardAdapter import io.github.sds100.keymapper.system.files.FileAdapter -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.ifIsData -import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.ifIsData +import io.github.sds100.keymapper.common.util.state.mapData import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt index bed6b5677a..ab26c179f7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt @@ -19,8 +19,8 @@ import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.logEntry import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt index 562f0b8b50..ad4991cd17 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.logging import io.github.sds100.keymapper.data.entities.LogEntryEntity -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt index 07b19bca45..7a658257d1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt @@ -5,9 +5,9 @@ import androidx.lifecycle.viewModelScope import com.michaelflisar.dragselectrecyclerview.DragSelectionProcessor import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.ifIsData -import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.ifIsData +import io.github.sds100.keymapper.common.util.state.mapData import io.github.sds100.keymapper.base.util.ui.MultiSelectProvider import io.github.sds100.keymapper.base.util.ui.PopupUi import io.github.sds100.keymapper.base.util.ui.PopupViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt index e5041aefe9..b026d7aae1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt @@ -7,8 +7,8 @@ import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.canUseImeToPerform import io.github.sds100.keymapper.actions.canUseShizukuToPerform -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.handle +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.handle import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.data.repositories.PreferenceRepository @@ -24,7 +24,7 @@ import io.github.sds100.keymapper.system.leanback.LeanbackAdapter import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.base.util.PrefDelegate -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.VersionHelper import io.github.sds100.keymapper.base.util.ResourceProvider import io.github.sds100.keymapper.base.util.SettingsRepository diff --git a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt index 4d20674641..9d95c8feef 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.purchasing -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error sealed class PurchasingError : Error() { data object PurchasingNotImplemented : PurchasingError() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt index 289f03a58e..fd9a4d5555 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.purchasing -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt index 15bf9dd42f..ce884f971d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -1,16 +1,13 @@ package io.github.sds100.keymapper.base.reroutekeyevents -import android.content.Context import android.os.Build -import dagger.hilt.android.qualifiers.ApplicationContext -import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapper import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper -import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.common.util.firstBlocking import io.github.sds100.keymapper.base.util.SettingsRepository import kotlinx.coroutines.flow.map import kotlinx.coroutines.runBlocking diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt index f36f373391..05e81fa007 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt @@ -11,12 +11,12 @@ import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.system.leanback.LeanbackUtils import io.github.sds100.keymapper.system.url.UrlUtils import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.str import io.github.sds100.keymapper.base.util.ui.ChooseAppStoreModel import io.github.sds100.keymapper.base.util.ui.PopupUi import io.github.sds100.keymapper.base.util.ui.showPopup -import io.github.sds100.keymapper.base.util.viewLifecycleScope +import io.github.sds100.keymapper.common.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest class Android11BugWorkaroundSettingsFragment : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt index 7e73e75356..b8ea11ef10 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt @@ -12,7 +12,7 @@ import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils -import io.github.sds100.keymapper.base.util.viewLifecycleScope +import io.github.sds100.keymapper.common.util.viewLifecycleScope class AutomaticallyChangeImeSettings : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt index d25502c550..b572a4c7ab 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.settings import androidx.datastore.preferences.core.Preferences import io.github.sds100.keymapper.actions.sound.SoundFileInfo import io.github.sds100.keymapper.actions.sound.SoundsManager -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.PreferenceRepository @@ -18,7 +18,7 @@ import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.channelFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt index c283aa08b8..f87b480072 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt @@ -9,10 +9,10 @@ import androidx.preference.isEmpty import io.github.sds100.keymapper.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.SliderMaximums import io.github.sds100.keymapper.base.util.ui.SliderMinimums -import io.github.sds100.keymapper.base.util.viewLifecycleScope +import io.github.sds100.keymapper.common.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest class DefaultOptionsSettingsFragment : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt index bdd69e94bf..ad7438f11b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt @@ -11,7 +11,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils -import io.github.sds100.keymapper.base.util.viewLifecycleScope +import io.github.sds100.keymapper.common.util.viewLifecycleScope class ImePickerSettingsFragment : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt index dc132de8bc..0b0507f0da 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt @@ -23,11 +23,11 @@ import io.github.sds100.keymapper.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils -import io.github.sds100.keymapper.base.util.firstBlocking -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.firstBlocking +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.str import io.github.sds100.keymapper.base.util.strArray -import io.github.sds100.keymapper.base.util.viewLifecycleScope +import io.github.sds100.keymapper.common.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import splitties.alertdialog.appcompat.alertDialog import splitties.alertdialog.appcompat.messageResource diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt index 88074da83a..088a8c3d12 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt @@ -5,11 +5,11 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.common.result.otherwise +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.util.result.otherwise import io.github.sds100.keymapper.base.util.SharedPrefsDataStoreWrapper -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.getFullMessage import io.github.sds100.keymapper.base.util.ui.DialogResponse import io.github.sds100.keymapper.base.util.ui.MultiChoiceItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt index 6a4fb33cd9..31a825fee2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt @@ -8,9 +8,9 @@ import androidx.preference.isEmpty import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.url.UrlUtils import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.str -import io.github.sds100.keymapper.base.util.viewLifecycleScope +import io.github.sds100.keymapper.common.util.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt index fec4c1d4a0..e402303587 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt @@ -2,9 +2,9 @@ package io.github.sds100.keymapper.base.sorting.comparators import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.DisplayActionUseCase -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.valueOrNull +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.base.keymaps.KeyMap class KeyMapActionsComparator( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt index a4a33bcc02..c06a4867e8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.sorting.comparators -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.then -import io.github.sds100.keymapper.common.result.valueOrNull +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.then +import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.DisplayConstraintUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index 2fc27b6fb9..5bb4883171 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -9,9 +9,9 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapOptionsViewModel import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase @@ -27,10 +27,10 @@ import io.github.sds100.keymapper.purchasing.ProductId import io.github.sds100.keymapper.purchasing.PurchasingManager import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.common.state.ifIsData -import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.dataOrNull +import io.github.sds100.keymapper.common.util.state.ifIsData +import io.github.sds100.keymapper.common.util.state.mapData import io.github.sds100.keymapper.base.util.ui.CheckBoxListItem import io.github.sds100.keymapper.base.util.ui.DialogResponse import io.github.sds100.keymapper.base.util.ui.LinkType diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt index 141bb6ce9d..ea4b0b6b91 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.trigger import android.view.KeyEvent -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt index d1d258f8cb..ad2e8cf1cf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.trigger -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.system.apps.PackageInfo import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.apps.getPackageInfoFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt index c2b63c3d66..84d287ad6e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.trigger -import io.github.sds100.keymapper.common.result.valueOrNull +import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.data.entities.AssistantTriggerKeyEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.FingerprintTriggerKeyEntity diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt index 6d4832f9fc..0690e9ebf0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt @@ -2,9 +2,9 @@ package io.github.sds100.keymapper.base.trigger import android.os.Build import android.view.KeyEvent -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.requiresImeKeyEventForwardingInPhoneCall import io.github.sds100.keymapper.purchasing.ProductId diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt index 2622da25ca..b86809bfd9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt @@ -43,7 +43,7 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.ui.LinkType import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.util.ui.compose.DraggableItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityFragment.kt index e413c5970c..58551e3b7e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityFragment.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.ui.apps import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.base.util.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityViewModel.kt index d795576002..afb42126c2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityViewModel.kt @@ -3,8 +3,8 @@ package io.github.sds100.keymapper.base.ui.apps import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.common.result.valueOrNull -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.filterByQuery import io.github.sds100.keymapper.base.util.ui.IconInfo import kotlinx.coroutines.Dispatchers diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppFragment.kt index 09ad9be027..46baae1e39 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppFragment.kt @@ -8,11 +8,11 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.databinding.FragmentChooseAppBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.RecyclerViewFragment import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppScreen.kt index 6be6a8f25c..704e5b558c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppScreen.kt @@ -32,7 +32,7 @@ import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.util.drawable import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutFragment.kt index d4c9bc220d..b2c82cd5d4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutFragment.kt @@ -9,12 +9,12 @@ import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.system.apps.AppShortcutInfo import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment import io.github.sds100.keymapper.base.util.ui.showPopups diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutViewModel.kt index 2c6b3e9a4b..3b781ef1ba 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutViewModel.kt @@ -5,9 +5,9 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.valueOrNull -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.mapData import io.github.sds100.keymapper.base.util.filterByQuery import io.github.sds100.keymapper.base.util.ui.IconInfo import io.github.sds100.keymapper.base.util.ui.PopupUi diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppViewModel.kt index 69651e63dd..95404e4be2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppViewModel.kt @@ -3,9 +3,9 @@ package io.github.sds100.keymapper.base.ui.apps import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.common.result.valueOrNull -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.mapData import io.github.sds100.keymapper.system.apps.PackageInfo import io.github.sds100.keymapper.base.util.filterByQuery import io.github.sds100.keymapper.base.util.ui.DefaultSimpleListItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppShortcutsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppShortcutsUseCase.kt index d04b1169bf..f56f30673c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppShortcutsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppShortcutsUseCase.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.ui.apps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.system.apps.AppShortcutAdapter import io.github.sds100.keymapper.system.apps.AppShortcutInfo import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppsUseCase.kt index d0c10e1041..f0f4b9c704 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppsUseCase.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.ui.apps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.system.apps.PackageInfo import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceFragment.kt index bf462bb835..1fb94fc8ce 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceFragment.kt @@ -4,12 +4,12 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.fixError import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.ListItem import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceViewModel.kt index 09bce0e54e..6eb3c3d060 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceViewModel.kt @@ -4,7 +4,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.bluetooth.ChooseBluetoothDeviceUseCase import io.github.sds100.keymapper.base.util.ui.DefaultSimpleListItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentFragment.kt index 23081c4be0..f7e6159296 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentFragment.kt @@ -26,7 +26,7 @@ import io.github.sds100.keymapper.system.intents.BoolIntentExtraListItem import io.github.sds100.keymapper.system.intents.GenericIntentExtraListItem import io.github.sds100.keymapper.system.intents.IntentExtraListItem import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.ui.setupNavigation import io.github.sds100.keymapper.base.util.ui.showPopups import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt index d3d8b7ffa6..d0f0b0f896 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.util import android.content.pm.PackageManager import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.purchasing.ProductId import io.github.sds100.keymapper.purchasing.PurchasingError import io.github.sds100.keymapper.system.BuildUtils diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt index 104eb392b5..c22f914028 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.util -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.ui.ISearchable import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/PreferenceDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/PreferenceDelegate.kt index cf2e1245dc..b48b3440dc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/PreferenceDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/PreferenceDelegate.kt @@ -1,6 +1,7 @@ package io.github.sds100.keymapper.base.util import androidx.datastore.preferences.core.Preferences +import io.github.sds100.keymapper.common.util.firstBlocking import io.github.sds100.keymapper.data.repositories.PreferenceRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/DialogUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/DialogUtils.kt index 9a0116dec3..b7031feeeb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/DialogUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/DialogUtils.kt @@ -14,17 +14,17 @@ import androidx.lifecycle.lifecycleScope import com.google.android.material.textfield.TextInputLayout import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.errorOrNull -import io.github.sds100.keymapper.common.result.isSuccess -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.errorOrNull +import io.github.sds100.keymapper.common.util.result.isSuccess +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.databinding.DialogEdittextNumberBinding import io.github.sds100.keymapper.databinding.DialogEdittextStringBinding import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.resumeIfNotCompleted +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.resumeIfNotCompleted import kotlinx.coroutines.CancellableContinuation import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt index 9f08e73529..48aa3a06d1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt @@ -13,7 +13,7 @@ import androidx.lifecycle.OnLifecycleEvent import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.DialogChooseAppStoreBinding import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt index ca16975ebd..80514929a5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt @@ -20,8 +20,8 @@ import androidx.savedstate.SavedStateRegistry import com.airbnb.epoxy.EpoxyRecyclerView import com.google.android.material.bottomappbar.BottomAppBar import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt index a753dd91cf..70902a750b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.util.ui import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.base.util.getFullMessage diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeChipModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeChipModel.kt index 93dc747a61..c50b4b611b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeChipModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeChipModel.kt @@ -1,5 +1,7 @@ package io.github.sds100.keymapper.base.util.ui.compose +import io.github.sds100.keymapper.common.util.result.Error + sealed class ComposeChipModel { abstract val id: String abstract val text: String @@ -13,7 +15,7 @@ sealed class ComposeChipModel { data class Error( override val id: String, override val text: String, - val error: io.github.sds100.keymapper.common.result.Error, + val error: io.github.sds100.keymapper.common.util.result.Error, val isFixable: Boolean = true, ) : ComposeChipModel() } diff --git a/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt b/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt index ca9b2b6392..c66a3ebdf0 100644 --- a/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt @@ -8,8 +8,8 @@ import io.github.sds100.keymapper.actions.sound.SoundsManager import io.github.sds100.keymapper.backup.BackupContent import io.github.sds100.keymapper.backup.BackupManagerImpl import io.github.sds100.keymapper.backup.RestoreType -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Success import io.github.sds100.keymapper.data.db.AppDatabase import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.data.entities.EntityExtra @@ -26,7 +26,7 @@ import io.github.sds100.keymapper.base.keymaps.KeyMapRepository import io.github.sds100.keymapper.system.files.FakeFileAdapter import io.github.sds100.keymapper.system.files.IFile import io.github.sds100.keymapper.system.files.JavaFile -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.UuidGenerator import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt index 24d169112c..5520bdb0f0 100644 --- a/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt @@ -15,8 +15,8 @@ import io.github.sds100.keymapper.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.dataOrNull import io.github.sds100.keymapper.base.util.singleKeyTrigger import io.github.sds100.keymapper.base.util.triggerKey import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt index 370ded7dc2..dd66de8f34 100644 --- a/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.actions import android.view.KeyEvent -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter diff --git a/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt index ed7f158e07..cf63b02434 100644 --- a/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.actions import android.view.InputDevice import android.view.KeyEvent -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.system.devices.FakeDevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.popup.PopupMessageAdapter import io.github.sds100.keymapper.base.util.InputEventType -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.test.TestScope diff --git a/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt index 2f29f3474b..a222a63b01 100644 --- a/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt @@ -7,7 +7,7 @@ import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.ActionErrorSnapshot import io.github.sds100.keymapper.actions.PerformActionsUseCase import io.github.sds100.keymapper.actions.RepeatMode -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.constraints.ConstraintSnapshot diff --git a/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt index 2496afce44..eca0f14610 100644 --- a/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt @@ -5,7 +5,7 @@ import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.ActionErrorSnapshot import io.github.sds100.keymapper.actions.PerformActionsUseCase import io.github.sds100.keymapper.actions.RepeatMode -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.TriggerKeyMapFromOtherAppsController diff --git a/base/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt b/base/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt index d11a70a9d9..3727e1b052 100644 --- a/base/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt +++ b/base/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system.devices -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/base/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt b/base/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt index 50d3ad678c..8b268465d7 100644 --- a/base/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt +++ b/base/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.files -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import kotlinx.coroutines.runBlocking import org.junit.rules.TemporaryFolder import java.io.File diff --git a/base/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt b/base/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt index e8b525a83d..0bad65a712 100644 --- a/base/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt +++ b/base/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system.files import com.anggrayudi.storage.file.recreateFile -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import timber.log.Timber import java.io.File import java.io.InputStream diff --git a/base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt b/base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt index 675135ce35..9f76312dbd 100644 --- a/base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.system.intents import android.content.Intent import androidx.arch.core.executor.testing.InstantTaskExecutorRule import io.github.sds100.keymapper.base.ui.intents.ConfigIntentViewModel -import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.common.util.firstBlocking import io.github.sds100.keymapper.base.util.ui.FakeResourceProvider import io.github.sds100.keymapper.base.util.ui.MultiChoiceItem import io.github.sds100.keymapper.base.util.ui.PopupUi diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 2d455c0252..51adece345 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -1,6 +1,8 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.compose) + alias(libs.plugins.jlleitschuh.gradle.ktlint) } android { @@ -32,4 +34,20 @@ android { } dependencies { + // kotlin stuff + implementation(libs.kotlinx.coroutines.android) + implementation(libs.kotlinx.serialization.json) + + // androidx + implementation(libs.androidx.legacy.support.core.ui) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.activity.ktx) + implementation(libs.androidx.fragment.ktx) + implementation(libs.bundles.androidx.lifecycle) + implementation(libs.bundles.androidx.navigation) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.recyclerview) + implementation(libs.androidx.preference.ktx) + implementation(libs.androidx.constraintlayout) + implementation(libs.androidx.lifecycle.extensions) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/CoroutineUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/CoroutineUtils.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/util/CoroutineUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/CoroutineUtils.kt index e9324727c9..0403b73cf4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/CoroutineUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/CoroutineUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import androidx.fragment.app.Fragment import androidx.lifecycle.Lifecycle diff --git a/common/src/main/java/io/github/sds100/keymapper/common/result/Result.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/result/Result.kt similarity index 99% rename from common/src/main/java/io/github/sds100/keymapper/common/result/Result.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/result/Result.kt index 37f11c065b..cb11b1ec42 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/result/Result.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/result/Result.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.result +package io.github.sds100.keymapper.common.util.result /** * Inspired from @antonyharfield great example! diff --git a/common/src/main/java/io/github/sds100/keymapper/common/state/State.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/state/State.kt similarity index 91% rename from common/src/main/java/io/github/sds100/keymapper/common/state/State.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/state/State.kt index fb424f9d77..cfc1a42759 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/state/State.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/state/State.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.state +package io.github.sds100.keymapper.common.util.state sealed class State { diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 8872652b68..987835ff52 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -10,10 +10,10 @@ plugins { android { namespace = "io.github.sds100.keymapper.data" - compileSdk = 35 + compileSdk = libs.versions.compile.sdk.get().toInt() defaultConfig { - minSdk = 21 + minSdk = libs.versions.min.sdk.get().toInt() testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") diff --git a/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt index d986593766..3f7fb8e160 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt @@ -4,7 +4,7 @@ import android.os.Parcelable import com.github.salomonbrys.kotson.byString import com.github.salomonbrys.kotson.jsonDeserializer import com.google.gson.annotations.SerializedName -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Success import kotlinx.parcelize.Parcelize @Parcelize diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt index 8cd11a4c83..18179e4e29 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.data.repositories import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt index e9c468b1f1..2f6e117b0a 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt @@ -5,7 +5,7 @@ import io.github.sds100.keymapper.data.entities.FloatingButtonEntity import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider import io.github.sds100.keymapper.base.util.DispatcherProvider -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt index 5ca2c00171..afc783fb02 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.data.entities.FloatingLayoutEntity import io.github.sds100.keymapper.data.entities.FloatingLayoutEntityWithButtons import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider import io.github.sds100.keymapper.base.util.DispatcherProvider -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt index ac34085621..f604da80c8 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt @@ -8,7 +8,7 @@ import io.github.sds100.keymapper.data.migration.fingerprintmaps.FingerprintToKe import io.github.sds100.keymapper.base.keymaps.KeyMapRepository import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider import io.github.sds100.keymapper.base.util.DispatcherProvider -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.splitIntoBatches import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt index 27f409150c..5753055544 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.data.repositories import io.github.sds100.keymapper.data.db.dao.LogEntryDao import io.github.sds100.keymapper.data.entities.LogEntryEntity import io.github.sds100.keymapper.logging.LogRepository -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/mapping/.gitignore b/mapping/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/mapping/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/mapping/build.gradle.kts b/mapping/build.gradle.kts new file mode 100644 index 0000000000..601194957b --- /dev/null +++ b/mapping/build.gradle.kts @@ -0,0 +1,44 @@ +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) +} + +android { + namespace = "io.github.sds100.keymapper.mapping" + compileSdk = libs.versions.compile.sdk.get().toInt() + + defaultConfig { + minSdk = libs.versions.min.sdk.get().toInt() + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } +} + +dependencies { + implementation(project(":common")) + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.appcompat) + testImplementation(libs.junit) + + androidTestImplementation(libs.androidx.test.ext.junit) + androidTestImplementation(libs.androidx.espresso.core) +} \ No newline at end of file diff --git a/mapping/consumer-rules.pro b/mapping/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/mapping/proguard-rules.pro b/mapping/proguard-rules.pro new file mode 100644 index 0000000000..481bb43481 --- /dev/null +++ b/mapping/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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/mapping/src/androidTest/java/io/github/sds100/keymapper/mapping/ExampleInstrumentedTest.kt b/mapping/src/androidTest/java/io/github/sds100/keymapper/mapping/ExampleInstrumentedTest.kt new file mode 100644 index 0000000000..2f3ba46836 --- /dev/null +++ b/mapping/src/androidTest/java/io/github/sds100/keymapper/mapping/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package io.github.sds100.keymapper.mapping + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("io.github.sds100.keymapper.mapping.test", appContext.packageName) + } +} \ No newline at end of file diff --git a/mapping/src/main/AndroidManifest.xml b/mapping/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..a5918e68ab --- /dev/null +++ b/mapping/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ClickType.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ClickType.kt similarity index 60% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/ClickType.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ClickType.kt index 260acb2d0e..893b0b1ea4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ClickType.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ClickType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps enum class ClickType { SHORT_PRESS, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapFragment.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapFragment.kt index 81b9b1bace..56e75dc22f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.os.Bundle import android.view.LayoutInflater diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapOptionsViewModel.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapOptionsViewModel.kt index 0ae3192f65..0202018bfa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapOptionsViewModel.kt @@ -1,14 +1,14 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.graphics.Color import android.graphics.drawable.Drawable import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionUiHelper -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.dataOrNull import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.common.util.state.mapData import io.github.sds100.keymapper.base.util.ui.PopupUi import io.github.sds100.keymapper.base.util.ui.PopupViewModel import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapScreen.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapScreen.kt index 7c041331e1..e555691dff 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import androidx.activity.compose.BackHandler import androidx.compose.foundation.layout.Arrangement diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapUseCase.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapUseCase.kt index 9a8c03202a..f887e9cd1a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapUseCase.kt @@ -1,13 +1,13 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.RepeatMode -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.dataOrNull -import io.github.sds100.keymapper.common.state.ifIsData +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.dataOrNull +import io.github.sds100.keymapper.common.util.state.ifIsData import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.constraints.ConstraintState diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapViewModel.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapViewModel.kt index adf8fc86cf..d415e1552d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.os.Bundle import androidx.lifecycle.ViewModel @@ -16,9 +16,9 @@ import io.github.sds100.keymapper.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.ui.utils.getJsonSerializable import io.github.sds100.keymapper.ui.utils.putJsonSerializable -import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.common.util.state.dataOrNull import io.github.sds100.keymapper.base.util.firstBlocking -import io.github.sds100.keymapper.common.state.ifIsData +import io.github.sds100.keymapper.common.util.state.ifIsData import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutActivity.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutActivity.kt index 37f382b6f8..70020bf392 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutActivity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.os.Bundle import androidx.activity.SystemBarStyle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutScreen.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutScreen.kt index 0265728052..2827c61ba8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedContent @@ -38,7 +38,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.groups.GroupBreadcrumbRow @@ -46,7 +46,7 @@ import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.groups.GroupRow import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.drawable import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutUseCase.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutUseCase.kt index da37b6b2ba..67ce15e2a1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutUseCase.kt @@ -1,11 +1,11 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.content.Intent import android.graphics.drawable.Drawable import androidx.core.os.bundleOf import io.github.sds100.keymapper.R import io.github.sds100.keymapper.api.Api -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.system.apps.AppShortcutAdapter import io.github.sds100.keymapper.base.util.ResourceProvider import javax.inject.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutViewModel.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutViewModel.kt index 907ecdb9eb..d692856d0b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.content.Intent import android.graphics.Color @@ -17,8 +17,8 @@ import io.github.sds100.keymapper.constraints.ConstraintUiHelper import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.mapData import io.github.sds100.keymapper.base.util.ResourceProvider import io.github.sds100.keymapper.base.util.ui.TintType import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/DisplayKeyMapUseCase.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/DisplayKeyMapUseCase.kt index 77f4f0e819..7020c91842 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/DisplayKeyMapUseCase.kt @@ -1,16 +1,16 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.content.Context import android.graphics.drawable.Drawable import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.actions.DisplayActionUseCase import io.github.sds100.keymapper.actions.GetActionErrorUseCase -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.otherwise -import io.github.sds100.keymapper.common.result.then -import io.github.sds100.keymapper.common.result.valueIfFailure +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.otherwise +import io.github.sds100.keymapper.common.util.result.then +import io.github.sds100.keymapper.common.util.result.valueIfFailure import io.github.sds100.keymapper.constraints.DisplayConstraintUseCase import io.github.sds100.keymapper.constraints.GetConstraintErrorUseCase import io.github.sds100.keymapper.data.Keys @@ -29,8 +29,8 @@ import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.ringtone.RingtoneAdapter import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.dataOrNull import io.github.sds100.keymapper.base.util.ResourceProvider import io.github.sds100.keymapper.base.util.SettingsRepository import kotlinx.coroutines.TimeoutCancellationException diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGestureType.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/FingerprintGestureType.kt similarity index 66% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGestureType.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/FingerprintGestureType.kt index ce46fe7def..2d4584ccfa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGestureType.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/FingerprintGestureType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps enum class FingerprintGestureType { SWIPE_DOWN, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/FingerprintGesturesSupportedUseCase.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/FingerprintGesturesSupportedUseCase.kt index ebca3a24c7..4acc60286b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/FingerprintGesturesSupportedUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.content.Context import android.os.Build diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/GetDefaultKeyMapOptionsUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/GetDefaultKeyMapOptionsUseCase.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/GetDefaultKeyMapOptionsUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/GetDefaultKeyMapOptionsUseCase.kt index 11e3b89199..8739d46d52 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/GetDefaultKeyMapOptionsUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/GetDefaultKeyMapOptionsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMap.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMap.kt index b128fbafaa..4faf929ce4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMap.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.view.KeyEvent import io.github.sds100.keymapper.actions.Action diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapAppBarState.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapAppBarState.kt index 0121a47924..7e3c8043b6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapAppBarState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.groups.GroupListItemModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapGroup.kt similarity index 64% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapGroup.kt index 427b64b067..a5321f3e1f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapGroup.kt @@ -1,7 +1,7 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import io.github.sds100.keymapper.groups.Group -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State data class KeyMapGroup( val group: Group?, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListItemCreator.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListItemCreator.kt index 396091d471..6544f8096c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListItemCreator.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.outlined.ArrowForward @@ -6,7 +6,7 @@ import androidx.compose.material.icons.outlined.Add import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionErrorSnapshot import io.github.sds100.keymapper.actions.ActionUiHelper -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.constraints.ConstraintErrorSnapshot import io.github.sds100.keymapper.constraints.ConstraintState import io.github.sds100.keymapper.constraints.ConstraintUiHelper diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListScreen.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListScreen.kt index f5e011d3a8..428995170d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Arrangement @@ -54,12 +54,12 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.drawable import io.github.sds100.keymapper.base.util.ui.compose.CompactChip import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListState.kt similarity index 68% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListState.kt index 4bf69be721..0575c55528 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListState.kt @@ -1,7 +1,7 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import io.github.sds100.keymapper.trigger.KeyMapListItemModel -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State data class KeyMapListState( val appBarState: KeyMapAppBarState, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListViewModel.kt similarity index 87% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListViewModel.kt index 2ec7c6809d..f192e36b7e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -8,11 +8,11 @@ import io.github.sds100.keymapper.actions.ActionErrorSnapshot import io.github.sds100.keymapper.backup.BackupRestoreMappingsUseCase import io.github.sds100.keymapper.backup.ImportExportState import io.github.sds100.keymapper.backup.RestoreType -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.constraints.ConstraintErrorSnapshot import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.constraints.ConstraintUiHelper @@ -35,11 +35,11 @@ import io.github.sds100.keymapper.trigger.SetupGuiKeyboardState import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.dataOrNull import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.common.state.ifIsData -import io.github.sds100.keymapper.common.state.mapData +import io.github.sds100.keymapper.common.util.state.ifIsData +import io.github.sds100.keymapper.common.util.state.mapData import io.github.sds100.keymapper.base.util.ui.DialogResponse import io.github.sds100.keymapper.base.util.ui.MultiSelectProvider import io.github.sds100.keymapper.base.util.ui.NavDestination @@ -78,12 +78,12 @@ import kotlinx.coroutines.launch @OptIn(ExperimentalCoroutinesApi::class) class KeyMapListViewModel( private val coroutineScope: CoroutineScope, - private val listKeyMaps: ListKeyMapsUseCase, + private val listKeyMaps: io.github.sds100.keymapper.mapping.keymaps.ListKeyMapsUseCase, resourceProvider: ResourceProvider, private val setupGuiKeyboard: SetupGuiKeyboardUseCase, private val sortKeyMaps: SortKeyMapsUseCase, private val showAlertsUseCase: ShowHomeScreenAlertsUseCase, - private val pauseKeyMaps: PauseKeyMapsUseCase, + private val pauseKeyMaps: io.github.sds100.keymapper.mapping.keymaps.PauseKeyMapsUseCase, private val backupRestore: BackupRestoreMappingsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val onboarding: OnboardingUseCase, @@ -104,19 +104,24 @@ class KeyMapListViewModel( val multiSelectProvider: MultiSelectProvider = MultiSelectProvider() - private val listItemCreator = KeyMapListItemCreator(listKeyMaps, resourceProvider) + private val listItemCreator = + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListItemCreator( + listKeyMaps, + resourceProvider + ) private val constraintUiHelper = ConstraintUiHelper(listKeyMaps, resourceProvider) - private val initialState = KeyMapListState( - appBarState = KeyMapAppBarState.RootGroup( - subGroups = emptyList(), - warnings = emptyList(), - isPaused = false, - ), - listItems = State.Loading, - showCreateKeyMapTapTarget = false, - ) - private val _state: MutableStateFlow = MutableStateFlow(initialState) + private val initialState = + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListState( + appBarState = _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.RootGroup( + subGroups = emptyList(), + warnings = emptyList(), + isPaused = false, + ), + listItems = State.Loading, + showCreateKeyMapTapTarget = false, + ) + private val _state: MutableStateFlow = MutableStateFlow(initialState) val state = _state.asStateFlow() var showFabText: Boolean by mutableStateOf(true) @@ -138,7 +143,7 @@ class KeyMapListViewModel( private val keyMapGroupStateFlow = listKeyMaps.keyMapGroup.stateIn( coroutineScope, SharingStarted.Eagerly, - KeyMapGroup( + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapGroup( group = null, subGroups = emptyList(), keyMaps = State.Loading, @@ -167,7 +172,7 @@ class KeyMapListViewModel( ServiceState.CRASHED -> add( HomeWarningListItem( - ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM, + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM, getString(R.string.home_error_accessibility_service_is_crashed), ), ) @@ -175,7 +180,7 @@ class KeyMapListViewModel( ServiceState.DISABLED -> add( HomeWarningListItem( - ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM, + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM, getString(R.string.home_error_accessibility_service_is_disabled), ), ) @@ -186,7 +191,7 @@ class KeyMapListViewModel( if (isBatteryOptimised) { add( HomeWarningListItem( - ID_BATTERY_OPTIMISATION_LIST_ITEM, + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_BATTERY_OPTIMISATION_LIST_ITEM, getString(R.string.home_error_is_battery_optimised), ), ) @@ -195,7 +200,7 @@ class KeyMapListViewModel( if (showNotificationPermissionAlert) { add( HomeWarningListItem( - ID_NOTIFICATION_PERMISSION_DENIED_LIST_ITEM, + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_NOTIFICATION_PERMISSION_DENIED_LIST_ITEM, getString(R.string.home_error_notification_permission), ), ) @@ -204,7 +209,7 @@ class KeyMapListViewModel( if (isLoggingEnabled) { add( HomeWarningListItem( - ID_LOGGING_ENABLED_LIST_ITEM, + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_LOGGING_ENABLED_LIST_ITEM, getString(R.string.home_error_logging_enabled), ), ) @@ -312,7 +317,7 @@ class KeyMapListViewModel( ) @OptIn(ExperimentalCoroutinesApi::class) - val appBarStateFlow: Flow = + val appBarStateFlow: Flow = multiSelectProvider.state.flatMapLatest { selectionState -> when (selectionState) { is SelectionState.Selecting -> selectionAppBarState @@ -342,7 +347,12 @@ class KeyMapListViewModel( } } - _state.value = KeyMapListState(appBarState, listState, showCreateKeyMapTapTarget) + _state.value = + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListState( + appBarState, + listState, + showCreateKeyMapTapTarget + ) } } @@ -354,12 +364,12 @@ class KeyMapListViewModel( } private fun buildSelectingAppBarState( - keyMapGroup: KeyMapGroup, + keyMapGroup: io.github.sds100.keymapper.mapping.keymaps.KeyMapGroup, selectionState: SelectionState.Selecting, groupListItems: List, breadcrumbListItems: List, showThisGroup: Boolean, - ): KeyMapAppBarState.Selecting { + ): io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.Selecting { var selectedKeyMapsEnabled: SelectedKeyMapsEnabled? = null val keyMaps = keyMapGroup.keyMaps.dataOrNull() ?: emptyList() @@ -382,7 +392,7 @@ class KeyMapListViewModel( } } - return KeyMapAppBarState.Selecting( + return _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.Selecting( selectionCount = selectionState.selectedIds.size, selectedKeyMapsEnabled = selectedKeyMapsEnabled ?: SelectedKeyMapsEnabled.NONE, isAllSelected = selectionState.selectedIds.size == keyMaps.size, @@ -393,12 +403,12 @@ class KeyMapListViewModel( } private fun buildGroupAppBarState( - keyMapGroup: KeyMapGroup, + keyMapGroup: _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapGroup, warnings: List, isPaused: Boolean, constraintErrorSnapshot: ConstraintErrorSnapshot, isEditingGroupName: Boolean, - ): KeyMapAppBarState { + ): _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState { val subGroupListItems = keyMapGroup.subGroups.map { group -> buildGroupListItem(group) } @@ -412,13 +422,13 @@ class KeyMapListViewModel( } if (keyMapGroup.group == null) { - return KeyMapAppBarState.RootGroup( + return _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.RootGroup( subGroups = subGroupListItems, warnings = warnings, isPaused = isPaused, ) } else { - return KeyMapAppBarState.ChildGroup( + return _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.ChildGroup( groupName = keyMapGroup.group.name, constraints = listItemCreator.buildConstraintChipList( keyMapGroup.group.constraintState, @@ -579,7 +589,7 @@ class KeyMapListViewModel( fun onSelectAllClick() { state.value.also { state -> - if (state.appBarState is KeyMapAppBarState.Selecting) { + if (state.appBarState is _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.Selecting) { if (state.appBarState.isAllSelected) { multiSelectProvider.stopSelecting() } else { @@ -666,7 +676,7 @@ class KeyMapListViewModel( fun onFixWarningClick(id: String) { coroutineScope.launch { when (id) { - ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM -> { + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM -> { val explanationResponse = ViewModelHelper.showAccessibilityServiceExplanationDialog( resourceProvider = this@KeyMapListViewModel, @@ -685,7 +695,7 @@ class KeyMapListViewModel( } } - ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM -> + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM -> ViewModelHelper.handleKeyMapperCrashedDialog( resourceProvider = this@KeyMapListViewModel, popupViewModel = this@KeyMapListViewModel, @@ -693,9 +703,9 @@ class KeyMapListViewModel( ignoreCrashed = showAlertsUseCase::acknowledgeCrashed, ) - ID_BATTERY_OPTIMISATION_LIST_ITEM -> showAlertsUseCase.disableBatteryOptimisation() - ID_LOGGING_ENABLED_LIST_ITEM -> showAlertsUseCase.disableLogging() - ID_NOTIFICATION_PERMISSION_DENIED_LIST_ITEM -> showNotificationPermissionAlertDialog() + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_BATTERY_OPTIMISATION_LIST_ITEM -> showAlertsUseCase.disableBatteryOptimisation() + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_LOGGING_ENABLED_LIST_ITEM -> showAlertsUseCase.disableLogging() + _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_NOTIFICATION_PERMISSION_DENIED_LIST_ITEM -> showNotificationPermissionAlertDialog() } } } @@ -785,7 +795,7 @@ class KeyMapListViewModel( return true } - state.value.appBarState is KeyMapAppBarState.ChildGroup -> { + state.value.appBarState is _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.ChildGroup -> { if (!isEditingGroupName.value) { coroutineScope.launch { listKeyMaps.popGroup() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapOptionsScreen.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapOptionsScreen.kt index 3901477025..f8b87432ba 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapOptionsScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.content.ClipData import androidx.compose.animation.AnimatedVisibility @@ -43,7 +43,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.ui.SliderMaximums import io.github.sds100.keymapper.base.util.ui.SliderMinimums import io.github.sds100.keymapper.base.util.ui.SliderStepSizes diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapRepository.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapRepository.kt similarity index 86% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapRepository.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapRepository.kt index f4b6356812..5b2f6a54f2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapRepository.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapRepository.kt @@ -1,7 +1,7 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import io.github.sds100.keymapper.data.entities.KeyMapEntity -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.flow.Flow interface KeyMapRepository { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ListKeyMapsUseCase.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ListKeyMapsUseCase.kt index f138ee082b..4b850fc3da 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ListKeyMapsUseCase.kt @@ -1,12 +1,12 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.R import io.github.sds100.keymapper.backup.BackupManager import io.github.sds100.keymapper.backup.BackupManagerImpl import io.github.sds100.keymapper.backup.BackupUtils -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.ConstraintEntityMapper import io.github.sds100.keymapper.constraints.ConstraintMode @@ -19,8 +19,8 @@ import io.github.sds100.keymapper.groups.Group import io.github.sds100.keymapper.groups.GroupEntityMapper import io.github.sds100.keymapper.groups.GroupFamily import io.github.sds100.keymapper.system.files.FileAdapter -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.dataOrNull import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/PauseKeyMapsUseCase.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/PauseKeyMapsUseCase.kt index 041bf66670..e36b4918e9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/PauseKeyMapsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutModel.kt similarity index 77% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutModel.kt index aad1008728..3159aa00a1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutRow.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutRow.kt index 9bdbd7fac3..84f1c72325 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutRow.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.Arrangement diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/SimpleMappingController.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/SimpleMappingController.kt index ce76f1942f..9be82852e8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/SimpleMappingController.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.mapping.keymaps import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.PerformActionsUseCase diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectKeyMapModel.kt similarity index 79% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectKeyMapModel.kt index b732403cc2..f7a8aa9bbd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectKeyMapModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps.detection +package io.github.sds100.keymapper.mapping.keymaps.detection import io.github.sds100.keymapper.constraints.ConstraintState import io.github.sds100.keymapper.base.keymaps.KeyMap diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectKeyMapsUseCase.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectKeyMapsUseCase.kt index 685beaff52..3a680b6e6f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectKeyMapsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps.detection +package io.github.sds100.keymapper.mapping.keymaps.detection import android.accessibilityservice.AccessibilityService import android.os.SystemClock @@ -30,8 +30,8 @@ import io.github.sds100.keymapper.system.vibrator.VibratorAdapter import io.github.sds100.keymapper.system.volume.VolumeAdapter import io.github.sds100.keymapper.trigger.FingerprintTriggerKey import io.github.sds100.keymapper.base.util.InputEventType -import io.github.sds100.keymapper.common.state.State -import io.github.sds100.keymapper.common.state.dataOrNull +import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.util.state.dataOrNull import io.github.sds100.keymapper.base.util.ResourceProvider import io.github.sds100.keymapper.base.util.SettingsRepository import kotlinx.coroutines.CoroutineScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectScreenOffKeyEventsController.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectScreenOffKeyEventsController.kt index b13fe1e08d..3388b8c7bc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectScreenOffKeyEventsController.kt @@ -1,14 +1,14 @@ -package io.github.sds100.keymapper.base.keymaps.detection +package io.github.sds100.keymapper.mapping.keymaps.detection import android.view.InputDevice import android.view.KeyEvent -import io.github.sds100.keymapper.common.result.valueOrNull +import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DpadMotionEventTracker.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DpadMotionEventTracker.kt index df0b59f33d..7746364f5b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DpadMotionEventTracker.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps.detection +package io.github.sds100.keymapper.mapping.keymaps.detection import android.view.InputDevice import android.view.KeyEvent diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/ParallelTriggerActionPerformer.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/ParallelTriggerActionPerformer.kt index c4bfd63cd1..5cba444b56 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/ParallelTriggerActionPerformer.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps.detection +package io.github.sds100.keymapper.mapping.keymaps.detection import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.ActionData diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/SequenceTriggerActionPerformer.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/SequenceTriggerActionPerformer.kt index 04334eb666..7438117cc4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/SequenceTriggerActionPerformer.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps.detection +package io.github.sds100.keymapper.mapping.keymaps.detection import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.PerformActionsUseCase diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt index 2b61bc4705..8b6565bd7b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.keymaps.detection +package io.github.sds100.keymapper.mapping.keymaps.detection import io.github.sds100.keymapper.actions.PerformActionsUseCase import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase diff --git a/mapping/src/test/java/io/github/sds100/keymapper/mapping/ExampleUnitTest.kt b/mapping/src/test/java/io/github/sds100/keymapper/mapping/ExampleUnitTest.kt new file mode 100644 index 0000000000..f91e26d3b4 --- /dev/null +++ b/mapping/src/test/java/io/github/sds100/keymapper/mapping/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package io.github.sds100.keymapper.mapping + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index eb729a3931..e62231a8cc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -30,3 +30,4 @@ include(":api") include(":system") include(":common") include(":data") +include(":mapping") diff --git a/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt b/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt index 24e95fec52..4af8bf1251 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import io.github.sds100.keymapper.system.shell.ShellAdapter import java.io.IOException import java.io.InputStream diff --git a/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt b/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt index 59a34755e0..87a3944a67 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.Error +import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.base.util.ui.ResourceProvider diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt index 4e68c091eb..f7ddd1c811 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt @@ -11,11 +11,11 @@ import android.os.Looper import android.provider.Settings import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.permissions.Permission diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt index 85259ea49c..23a7d0d05a 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.system.accessibility import android.os.Build import androidx.annotation.RequiresApi import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.base.util.InputEventType import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt index 07f43bdf72..9de93a3735 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt @@ -27,9 +27,9 @@ import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback import io.github.sds100.keymapper.api.KeyEventRelayService import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapperImpl -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt index 99c369a3c7..0371aadab3 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.accessibility -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.base.util.ServiceEvent import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt index c6bc8315fa..168caa5bed 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.airplanemode -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result interface AirplaneModeAdapter { fun isEnabled(): Boolean diff --git a/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt index b0aed8c841..630bc9ee34 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt @@ -2,8 +2,8 @@ package io.github.sds100.keymapper.system.airplanemode import android.content.Context import android.provider.Settings -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.root.SuAdapter import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt index 509a8e4374..0112b93657 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt @@ -14,11 +14,11 @@ import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.graphics.drawable.IconCompat import androidx.core.graphics.drawable.toBitmap import io.github.sds100.keymapper.api.LaunchKeyMapShortcutActivity -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.success -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.success +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import java.util.UUID diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt index 0ac8707505..01ec62b15e 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt @@ -21,11 +21,11 @@ import android.provider.MediaStore import android.provider.Settings import androidx.core.content.ContextCompat import androidx.core.content.pm.PackageInfoCompat -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.success -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.success +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt index bb30ce834b..a99b9324b0 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt @@ -4,8 +4,8 @@ import android.content.Intent import android.graphics.drawable.Drawable import android.os.Bundle import androidx.core.content.pm.ShortcutInfoCompat -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.flow.Flow interface AppShortcutAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt index cffaf6c5dd..5476454dcf 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system.apps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.callbackFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt index fee216e7c0..e06ce9c59c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt @@ -10,9 +10,9 @@ import android.content.IntentFilter import android.content.pm.PackageManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt index 96df7e4683..d26afba0aa 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.bluetooth -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import kotlinx.coroutines.flow.Flow interface BluetoothAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt index 4974c0c8d4..614a6aac63 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt @@ -7,9 +7,9 @@ import android.hardware.camera2.CameraManager import android.os.Build import androidx.annotation.RequiresApi import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.map diff --git a/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt index 4facdd952c..aad54543c0 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.camera -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import kotlinx.coroutines.flow.Flow interface CameraAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt index b089df9543..e4b9b00375 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt @@ -7,13 +7,13 @@ import android.hardware.input.InputManager import android.os.Handler import android.view.InputDevice import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.ifIsData import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt index 56b93dee8d..83c78f41fd 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system.devices -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.common.state.State +import io.github.sds100.keymapper.common.util.state.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt index 6e855581a0..38f4b8a93c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt @@ -9,9 +9,9 @@ import android.provider.Settings import android.view.Surface import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.base.util.SizeKM import io.github.sds100.keymapper.base.util.getRealDisplaySize diff --git a/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt index 9b1578af42..8b74549ba7 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.display -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.base.util.SizeKM import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt index d166b36b23..fbe285db4c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt @@ -11,9 +11,9 @@ import androidx.core.net.toUri import androidx.documentfile.provider.DocumentFile import com.anggrayudi.storage.file.toDocumentFile import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import net.lingala.zip4j.ZipFile diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt index 5525d4c401..9cfa11b04a 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt @@ -12,9 +12,9 @@ import com.anggrayudi.storage.file.openInputStream import com.anggrayudi.storage.file.openOutputStream import com.anggrayudi.storage.file.recreateFile import com.anggrayudi.storage.media.FileDescription -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.io.File diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt index 144bb9da1e..e99a88b17f 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.files -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import java.io.InputStream interface FileAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt index 5121a6717d..96ff113731 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.files -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import java.io.File import java.io.InputStream import java.io.OutputStream diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt index 9c170b34a1..3ac5465379 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt @@ -14,14 +14,14 @@ import android.view.inputmethod.InputMethodManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.common.result.otherwise -import io.github.sds100.keymapper.common.result.then -import io.github.sds100.keymapper.common.result.valueOrNull +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.util.result.otherwise +import io.github.sds100.keymapper.common.util.result.then +import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.SystemError diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt index 8aa48968bb..11bdf69a1c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt @@ -1,10 +1,10 @@ package io.github.sds100.keymapper.system.inputmethod import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.common.result.otherwise +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.util.result.otherwise import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.PreferenceRepository diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt index 0ff6145f19..9a4d3ffd86 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.inputmethod -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt index cca594bcb7..e87d67ddd0 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt @@ -1,12 +1,12 @@ package io.github.sds100.keymapper.system.inputmethod import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.common.result.suspendThen -import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.util.result.suspendThen +import io.github.sds100.keymapper.common.util.result.then import io.github.sds100.keymapper.base.util.firstBlocking import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt index 4ff13c9d40..d0c08b110a 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.inputmethod -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt index 0bb0e1db75..f0d529c4b3 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt @@ -3,9 +3,9 @@ package io.github.sds100.keymapper.system.intents import android.content.Context import android.content.Intent import dagger.hilt.android.qualifiers.ApplicationContext -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import javax.inject.Inject import javax.inject.Singleton diff --git a/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt index 47a06ddb0e..50171d2fc3 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt @@ -10,8 +10,8 @@ import android.os.Build import androidx.annotation.RequiresApi import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update diff --git a/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt index 67e3848aef..40abf00630 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.lock import android.os.Build import androidx.annotation.RequiresApi -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt index c11f73f8a0..193e629076 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt @@ -12,9 +12,9 @@ import android.os.Build import android.view.KeyEvent import androidx.annotation.RequiresApi import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import io.github.sds100.keymapper.system.volume.VolumeStream import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt index d2fa9cdb62..a7e31c0420 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.media import android.os.Build import androidx.annotation.RequiresApi -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.system.volume.VolumeStream import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt b/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt index 45119be4b3..c66a9cc006 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt @@ -2,8 +2,8 @@ package io.github.sds100.keymapper.system.navigation import android.view.KeyEvent import androidx.core.view.accessibility.AccessibilityNodeInfoCompat -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.success +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.success import io.github.sds100.keymapper.system.accessibility.AccessibilityNodeAction import io.github.sds100.keymapper.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.system.inputevents.InputEventInjector diff --git a/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt index 44aa82422d..51fb4ba1cd 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt @@ -9,9 +9,9 @@ import android.os.Build import android.telephony.TelephonyManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import io.github.sds100.keymapper.system.root.SuAdapter import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt index f91ca9df2a..f1577d9fdb 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.network -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt index 401d2abe50..9120ea175c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.system.nfc import android.content.Context import android.nfc.NfcManager import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.system.root.SuAdapter import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject diff --git a/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt index d90ecb9ad3..2d33a6b22a 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.nfc -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result interface NfcAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt index f3dcf596e7..46b24caab4 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt @@ -5,8 +5,8 @@ import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import io.github.sds100.keymapper.base.BaseMainActivity import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.system.accessibility.ControlAccessibilityServiceUseCase diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt index 87c291ee1c..109f3b631f 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt @@ -11,8 +11,8 @@ import android.os.Looper import android.provider.Settings import androidx.core.app.NotificationManagerCompat import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.ServiceAdapter diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt index 13799a31cf..0836a36846 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt @@ -16,11 +16,11 @@ import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat import androidx.core.content.getSystemService import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess -import io.github.sds100.keymapper.common.result.success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.util.result.success import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.shizuku.ShizukuUtils diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt index db2d60e867..6ad616d10f 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.permissions import android.Manifest import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.system.popup.PopupMessageAdapter import io.github.sds100.keymapper.base.util.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt index 7e1dfb8450..40c229d692 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.permissions -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt index 8aa41715d2..aaee32972f 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt @@ -9,9 +9,9 @@ import android.telecom.TelecomManager import android.telephony.PhoneStateListener import android.telephony.TelephonyManager import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch diff --git a/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt index bfcd8d20c0..66eb546930 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.phone -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt index e61e91a869..d5268a419a 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt @@ -5,9 +5,9 @@ import android.media.Ringtone import android.media.RingtoneManager import android.os.Build import androidx.core.net.toUri -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success class AndroidRingtoneAdapter(context: Context) : RingtoneAdapter { private val ctx: Context = context.applicationContext diff --git a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt index 9fcb35e180..22149bc061 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system.root -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.Shell diff --git a/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt index 6a4e6a167a..218b922197 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.shell -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result diff --git a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt b/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt index f124f51f32..da4d5ec42b 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt @@ -12,8 +12,8 @@ import androidx.lifecycle.lifecycleScope import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.UseCases -import io.github.sds100.keymapper.common.result.onFailure -import io.github.sds100.keymapper.common.result.onSuccess +import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.base.util.getFullMessage import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.util.str diff --git a/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt index 1c2b8fdc2f..52608da9b2 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt @@ -4,7 +4,7 @@ import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result @Singleton class AndroidOpenUrlAdapter @Inject constructor( diff --git a/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt index 9462a2510b..c6478b4b9d 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.url -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result interface OpenUrlAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt index 6f70609379..ec09f4cc6c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt @@ -4,9 +4,9 @@ import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import androidx.core.net.toUri -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.success +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.success diff --git a/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt index 6f846c7352..4d263a86bf 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt @@ -6,10 +6,10 @@ import android.media.AudioManager import android.os.Build import androidx.annotation.RequiresApi import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.result.Error -import io.github.sds100.keymapper.common.result.Result -import io.github.sds100.keymapper.common.result.Success -import io.github.sds100.keymapper.common.result.then +import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.util.result.then import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt index 84459d205e..fb01a75936 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.volume -import io.github.sds100.keymapper.common.result.Result +import io.github.sds100.keymapper.common.util.result.Result interface VolumeAdapter { From 8b0183459157cdf091ef2ae2542a97f67f00338b Mon Sep 17 00:00:00 2001 From: sds100 Date: Sat, 17 May 2025 15:35:10 +0200 Subject: [PATCH 17/71] #1711 WIP: move more files --- .../base/actions/ActionOptionsBottomSheet.kt | 2 + .../keymapper/base/actions/ActionUiHelper.kt | 6 +- .../keymapper/base/actions/ActionsScreen.kt | 1 + .../base/actions/ChooseActionFragment.kt | 1 - .../base/actions/ChooseActionViewModel.kt | 5 +- .../base/actions/ConfigActionsViewModel.kt | 5 + .../base/actions/CreateActionDelegate.kt | 3 + .../base/actions/CreateActionUseCase.kt | 4 +- .../base/actions/DisplayActionUseCase.kt | 1 + .../actions/FlashlightActionBottomSheet.kt | 2 + .../base/actions/HttpRequestBottomSheet.kt | 1 + .../actions/keyevent/ChooseKeyCodeFragment.kt | 4 +- .../pinchscreen/PinchPickCoordinateResult.kt | 6 +- .../PinchPickDisplayCoordinateViewModel.kt | 1 + .../uielement/ChooseUiElementScreen.kt | 1 + .../uielement/InteractUiElementScreen.kt | 3 +- .../uielement/InteractUiElementViewModel.kt | 2 +- .../base/constraints/ConstraintMode.kt | 6 - .../ChooseBluetoothDeviceFragment.kt | 2 +- .../ChooseBluetoothDeviceViewModel.kt | 2 +- .../apps/AppActivityListItem.kt | 2 +- .../apps/AppShortcutListItem.kt | 2 +- .../apps/ChooseActivityFragment.kt | 2 +- .../apps/ChooseActivityViewModel.kt | 2 +- .../{ui => system}/apps/ChooseAppFragment.kt | 2 +- .../{ui => system}/apps/ChooseAppScreen.kt | 2 +- .../apps/ChooseAppShortcutFragment.kt | 2 +- .../apps/ChooseAppShortcutResult.kt | 2 +- .../apps/ChooseAppShortcutViewModel.kt | 2 +- .../{ui => system}/apps/ChooseAppViewModel.kt | 2 +- .../apps/DisplayAppShortcutsUseCase.kt | 2 +- .../{ui => system}/apps/DisplayAppsUseCase.kt | 2 +- .../intents/ConfigIntentFragment.kt | 2 +- .../intents/ConfigIntentResult.kt | 2 +- .../intents/ConfigIntentViewModel.kt | 2 +- .../sds100/keymapper/base/util/ui/ListItem.kt | 5 - .../util/ui/compose/icons/KeyMapperIcons.kt | 3 - .../main/res/layout/fragment_choose_app.xml | 2 +- .../res/layout/fragment_config_intent.xml | 2 +- base/src/main/res/navigation/nav_app.xml | 10 +- .../intents/ConfigIntentViewModelTest.kt | 2 +- .../keymapper/common}/ui/BindingAdapters.kt | 2 +- .../keymapper/common}/ui/CheckBoxListItem.kt | 2 +- .../common}/ui/ChooseAppStoreModel.kt | 2 +- .../common}/ui/DefaultSimpleListItem.kt | 2 +- .../keymapper/common}/ui/DialogUtils.kt | 2 +- .../ui/EpoxyRecyclerViewModelHelper.kt | 2 +- .../keymapper/common}/ui/ISearchable.kt | 2 +- .../sds100/keymapper/common}/ui/IconInfo.kt | 2 +- .../sds100/keymapper/common}/ui/LinkType.kt | 2 +- .../sds100/keymapper/common/ui/ListItem.kt | 5 + .../keymapper/common}/ui/MultiChoiceItem.kt | 2 +- .../common}/ui/MultiSelectProvider.kt | 2 +- .../keymapper/common}/ui/NavDestination.kt | 6 +- .../sds100/keymapper/common}/ui/NavResult.kt | 2 +- .../keymapper/common}/ui/NavigateEvent.kt | 2 +- .../keymapper/common}/ui/NavigationUtils.kt | 2 +- .../common}/ui/NavigationViewModel.kt | 20 +- .../common}/ui/OnPopupResponseEvent.kt | 2 +- .../sds100/keymapper/common}/ui/PopupUi.kt | 2 +- .../keymapper/common}/ui/PopupViewModel.kt | 2 +- .../common}/ui/RadioButtonPairListItem.kt | 2 +- .../common}/ui/RadioButtonTripleListItem.kt | 2 +- .../common}/ui/RecyclerViewFragment.kt | 2 +- .../keymapper/common}/ui/RecyclerViewUtils.kt | 2 +- .../keymapper/common}/ui/ResourceExt.kt | 2 +- .../keymapper/common}/ui/ResourceProvider.kt | 5 +- .../common}/ui/SectionHeaderListItem.kt | 2 +- .../keymapper/common}/ui/SelectionState.kt | 2 +- .../keymapper/common}/ui/ShowPopupEvent.kt | 2 +- .../common}/ui/SimpleRecyclerViewFragment.kt | 3 +- .../keymapper/common}/ui/SliderMaximums.kt | 2 +- .../keymapper/common}/ui/SliderMinimums.kt | 2 +- .../keymapper/common}/ui/SliderStepSizes.kt | 2 +- .../keymapper/common}/ui/SnackBarUtils.kt | 2 +- .../keymapper/common}/ui/SquareImageButton.kt | 2 +- .../keymapper/common}/ui/TextListItem.kt | 2 +- .../sds100/keymapper/common}/ui/TintType.kt | 2 +- .../keymapper/common}/ui/ViewModelHelper.kt | 2 +- .../common}/ui/compose/CheckBoxText.kt | 2 +- .../CollapsableFloatingActionButton.kt | 2 +- .../common}/ui/compose/CompactChip.kt | 2 +- .../common}/ui/compose/ComposeChipModel.kt | 4 +- .../common}/ui/compose/ComposeDialogs.kt | 2 +- .../common}/ui/compose/ComposeIconInfo.kt | 2 +- .../common}/ui/compose/DragDropState.kt | 2 +- .../common}/ui/compose/DraggableItem.kt | 2 +- .../ui/compose/KeyMapperDropdownMenu.kt | 2 +- .../ui/compose/KeyMapperSliderThumb.kt | 2 +- .../common}/ui/compose/KeyMapperTapTarget.kt | 2 +- .../common}/ui/compose/ListItemFixError.kt | 2 +- .../common}/ui/compose/OptionsHeaderRow.kt | 2 +- .../common}/ui/compose/RadioButtonText.kt | 2 +- .../common}/ui/compose/SearchAppBarActions.kt | 2 +- .../common}/ui/compose/SimpleListItem.kt | 2 +- .../common}/ui/compose/SimpleListItemModel.kt | 2 +- .../common}/ui/compose/SliderOptionText.kt | 2 +- .../common}/ui/compose/UriHandlerUtils.kt | 2 +- .../common}/ui/compose/WindowSizeClassExt.kt | 2 +- .../common}/ui/compose/icons/AdGroup.kt | 2 +- .../common}/ui/compose/icons/HomeIotDevice.kt | 2 +- .../common}/ui/compose/icons/Import.kt | 2 +- .../common}/ui/compose/icons/InstantMix.kt | 2 +- .../common}/ui/compose/icons/JumpToElement.kt | 2 +- .../common/ui/compose/icons/KeyMapperIcons.kt | 3 + .../common}/ui/compose/icons/MatchWord.kt | 2 +- .../common}/ui/compose/icons/NfcOff.kt | 2 +- .../common}/ui/compose/icons/TextSelectEnd.kt | 2 +- .../icons/TextSelectMoveForwardCharacter.kt | 2 +- .../common}/ui/compose/icons/TopPanelClose.kt | 2 +- .../common}/ui/compose/icons/TopPanelOpen.kt | 2 +- .../keymapper/common}/util/BundleUtils.kt | 0 .../common}/util/DispatcherProvider.kt | 2 +- .../keymapper/common}/util/DisplayUtils.kt | 2 +- .../keymapper/common}/util/ErrorUtils.kt | 2 +- .../keymapper/common}/util/FilterUtils.kt | 2 +- .../keymapper/common}/util/InputEventType.kt | 2 +- .../keymapper/common}/util/ListUtils.kt | 2 +- .../keymapper/common}/util/LoggingUtils.kt | 2 +- .../sds100/keymapper/common}/util/MapUtils.kt | 2 +- .../keymapper/common}/util/MathUtils.kt | 2 +- .../common}/util/PreferenceDelegate.kt | 2 +- .../keymapper/common}/util/ServiceEvent.kt | 2 +- .../keymapper/common}/util/ShareUtils.kt | 2 +- .../util/SharedPrefsDataStoreWrapper.kt | 2 +- .../sds100/keymapper/common}/util/SizeKM.kt | 2 +- .../keymapper/common}/util/StringUtils.kt | 2 +- .../keymapper/common}/util/TimeUtils.kt | 2 +- .../sds100/keymapper/common}/util/TreeNode.kt | 2 +- .../keymapper/common}/util/UserHandleUtils.kt | 2 +- .../keymapper/common}/util/UuidGenerator.kt | 2 +- .../keymapper/common}/util/VersionHelper.kt | 2 +- mapping/build.gradle.kts | 22 +- .../keymapper/mapping}/actions/Action.kt | 2 +- .../mapping}/actions/ActionCategory.kt | 2 +- .../keymapper/mapping}/actions/ActionData.kt | 5 +- .../actions/ActionDataEntityMapper.kt | 2 +- .../mapping}/actions/ActionErrorSnapshot.kt | 2 +- .../keymapper/mapping}/actions/ActionId.kt | 2 +- .../keymapper/mapping}/actions/ActionUtils.kt | 2 +- .../mapping}/actions/GetActionErrorUseCase.kt | 2 +- .../mapping}/actions/HoldDownMode.kt | 2 +- .../actions/IsActionSupportedUseCase.kt | 2 +- .../mapping}/actions/PerformActionsUseCase.kt | 2 +- .../mapping/actions/PinchScreenType.kt | 6 + .../keymapper/mapping}/actions/RepeatMode.kt | 2 +- .../mapping}/actions/TestActionUseCase.kt | 2 +- .../constraints/ChooseConstraintFragment.kt | 2 +- .../constraints/ChooseConstraintScreen.kt | 2 +- .../constraints/ChooseConstraintViewModel.kt | 2 +- .../constraints/ConfigConstraintsViewModel.kt | 6 +- .../mapping}/constraints/Constraint.kt | 2 +- .../constraints/ConstraintDependency.kt | 2 +- .../constraints/ConstraintErrorSnapshot.kt | 2 +- .../mapping}/constraints/ConstraintId.kt | 2 +- .../constraints/ConstraintListItem.kt | 8 +- .../constraints/ConstraintListItemModel.kt | 4 +- .../mapping/constraints/ConstraintMode.kt | 6 + .../constraints/ConstraintSnapshot.kt | 2 +- .../mapping}/constraints/ConstraintState.kt | 2 +- .../constraints/ConstraintUiHelper.kt | 2 +- .../mapping}/constraints/ConstraintUtils.kt | 2 +- .../mapping}/constraints/ConstraintsScreen.kt | 8 +- .../constraints/CreateConstraintUseCase.kt | 2 +- .../constraints/DetectConstraintsUseCase.kt | 2 +- .../constraints/DisplayConstraintUseCase.kt | 2 +- .../constraints/GetConstraintErrorUseCase.kt | 2 +- .../constraints/TimeConstraintBottomSheet.kt | 2 +- .../mapping/keymaps/ConfigKeyMapUseCase.kt | 42 ++-- .../mapping}/trigger/AssistantTriggerKey.kt | 2 +- .../mapping}/trigger/AssistantTriggerType.kt | 2 +- .../trigger/BaseConfigTriggerViewModel.kt | 204 +++++++++--------- .../trigger/ChooseTriggerKeyDeviceModel.kt | 2 +- .../mapping}/trigger/FingerprintTriggerKey.kt | 2 +- .../mapping}/trigger/FloatingButtonKey.kt | 2 +- .../mapping}/trigger/KeyCodeTriggerKey.kt | 2 +- .../trigger/KeyEventDetectionSource.kt | 2 +- .../mapping}/trigger/KeyMapListItemModel.kt | 2 +- .../trigger/RecordTriggerButtonRow.kt | 2 +- .../mapping}/trigger/RecordTriggerState.kt | 2 +- .../mapping}/trigger/RecordTriggerUseCase.kt | 2 +- .../keymapper/mapping}/trigger/RecordedKey.kt | 2 +- .../trigger/SetupGuiKeyboardBottomSheet.kt | 2 +- .../mapping}/trigger/SetupGuiKeyboardState.kt | 2 +- .../trigger/SetupGuiKeyboardUseCase.kt | 2 +- .../keymapper/mapping}/trigger/Trigger.kt | 2 +- .../mapping}/trigger/TriggerError.kt | 2 +- .../mapping}/trigger/TriggerErrorSnapshot.kt | 2 +- .../keymapper/mapping}/trigger/TriggerKey.kt | 2 +- .../mapping}/trigger/TriggerKeyDevice.kt | 2 +- .../mapping}/trigger/TriggerKeyListItem.kt | 38 ++-- .../trigger/TriggerKeyOptionsBottomSheet.kt | 20 +- .../mapping}/trigger/TriggerKeyShortcut.kt | 2 +- .../keymapper/mapping}/trigger/TriggerMode.kt | 2 +- .../mapping}/trigger/TriggerScreen.kt | 32 +-- .../accessibility}/NodeInteractionType.kt | 2 +- 196 files changed, 429 insertions(+), 398 deletions(-) delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintMode.kt rename base/src/main/java/io/github/sds100/keymapper/base/{ui/bluetooth => system}/ChooseBluetoothDeviceFragment.kt (98%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui/bluetooth => system}/ChooseBluetoothDeviceViewModel.kt (98%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/apps/AppActivityListItem.kt (94%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/apps/AppShortcutListItem.kt (93%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/apps/ChooseActivityFragment.kt (97%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/apps/ChooseActivityViewModel.kt (98%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/apps/ChooseAppFragment.kt (98%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/apps/ChooseAppScreen.kt (99%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/apps/ChooseAppShortcutFragment.kt (98%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/apps/ChooseAppShortcutResult.kt (77%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/apps/ChooseAppShortcutViewModel.kt (98%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/apps/ChooseAppViewModel.kt (98%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/apps/DisplayAppShortcutsUseCase.kt (95%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/apps/DisplayAppsUseCase.kt (96%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/intents/ConfigIntentFragment.kt (99%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/intents/ConfigIntentResult.kt (86%) rename base/src/main/java/io/github/sds100/keymapper/base/{ui => system}/intents/ConfigIntentViewModel.kt (99%) delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/util/ui/ListItem.kt delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/KeyMapperIcons.kt rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/BindingAdapters.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/CheckBoxListItem.kt (71%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/ChooseAppStoreModel.kt (75%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/DefaultSimpleListItem.kt (92%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/DialogUtils.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/EpoxyRecyclerViewModelHelper.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/ISearchable.kt (57%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/IconInfo.kt (72%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/LinkType.kt (54%) create mode 100644 common/src/main/java/io/github/sds100/keymapper/common/ui/ListItem.kt rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/MultiChoiceItem.kt (67%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/MultiSelectProvider.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/NavDestination.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/NavResult.kt (54%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/NavigateEvent.kt (62%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/NavigationUtils.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/NavigationViewModel.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/OnPopupResponseEvent.kt (59%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/PopupUi.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/PopupViewModel.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/RadioButtonPairListItem.kt (86%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/RadioButtonTripleListItem.kt (89%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/RecyclerViewFragment.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/RecyclerViewUtils.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/ResourceExt.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/ResourceProvider.kt (88%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/SectionHeaderListItem.kt (64%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/SelectionState.kt (76%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/ShowPopupEvent.kt (57%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/SimpleRecyclerViewFragment.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/SliderMaximums.kt (90%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/SliderMinimums.kt (89%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/SliderStepSizes.kt (90%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/SnackBarUtils.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/SquareImageButton.kt (89%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/TextListItem.kt (85%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/TintType.kt (83%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/ViewModelHelper.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/CheckBoxText.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/CollapsableFloatingActionButton.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/CompactChip.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/ComposeChipModel.kt (80%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/ComposeDialogs.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/ComposeIconInfo.kt (82%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/DragDropState.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/DraggableItem.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/KeyMapperDropdownMenu.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/KeyMapperSliderThumb.kt (89%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/KeyMapperTapTarget.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/ListItemFixError.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/OptionsHeaderRow.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/RadioButtonText.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/SearchAppBarActions.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/SimpleListItem.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/SimpleListItemModel.kt (84%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/SliderOptionText.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/UriHandlerUtils.kt (88%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/WindowSizeClassExt.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/icons/AdGroup.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/icons/HomeIotDevice.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/icons/Import.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/icons/InstantMix.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/icons/JumpToElement.kt (98%) create mode 100644 common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/KeyMapperIcons.kt rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/icons/MatchWord.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/icons/NfcOff.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/icons/TextSelectEnd.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/icons/TextSelectMoveForwardCharacter.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/icons/TopPanelClose.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base/util => common/src/main/java/io/github/sds100/keymapper/common}/ui/compose/icons/TopPanelOpen.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/BundleUtils.kt (100%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/DispatcherProvider.kt (89%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/DisplayUtils.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/ErrorUtils.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/FilterUtils.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/InputEventType.kt (56%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/ListUtils.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/LoggingUtils.kt (84%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/MapUtils.kt (73%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/MathUtils.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/PreferenceDelegate.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/ServiceEvent.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/ShareUtils.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/SharedPrefsDataStoreWrapper.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/SizeKM.kt (77%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/StringUtils.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/TimeUtils.kt (85%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/TreeNode.kt (89%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/UserHandleUtils.kt (81%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/UuidGenerator.kt (80%) rename {base/src/main/java/io/github/sds100/keymapper/base => common/src/main/java/io/github/sds100/keymapper/common}/util/VersionHelper.kt (89%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/Action.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/ActionCategory.kt (81%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/ActionData.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/ActionDataEntityMapper.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/ActionErrorSnapshot.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/ActionId.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/ActionUtils.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/GetActionErrorUseCase.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/HoldDownMode.kt (60%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/IsActionSupportedUseCase.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/PerformActionsUseCase.kt (99%) create mode 100644 mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PinchScreenType.kt rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/RepeatMode.kt (65%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/actions/TestActionUseCase.kt (91%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ChooseConstraintFragment.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ChooseConstraintScreen.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ChooseConstraintViewModel.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ConfigConstraintsViewModel.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/Constraint.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ConstraintDependency.kt (85%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ConstraintErrorSnapshot.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ConstraintId.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ConstraintListItem.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ConstraintListItemModel.kt (69%) create mode 100644 mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintMode.kt rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ConstraintSnapshot.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ConstraintState.kt (77%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ConstraintUiHelper.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ConstraintUtils.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/ConstraintsScreen.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/CreateConstraintUseCase.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/DetectConstraintsUseCase.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/DisplayConstraintUseCase.kt (89%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/GetConstraintErrorUseCase.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/constraints/TimeConstraintBottomSheet.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/AssistantTriggerKey.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/AssistantTriggerType.kt (92%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/BaseConfigTriggerViewModel.kt (70%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/ChooseTriggerKeyDeviceModel.kt (69%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/FingerprintTriggerKey.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/FloatingButtonKey.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/KeyCodeTriggerKey.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/KeyEventDetectionSource.kt (62%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/KeyMapListItemModel.kt (93%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/RecordTriggerButtonRow.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/RecordTriggerState.kt (86%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/RecordTriggerUseCase.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/RecordedKey.kt (72%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/SetupGuiKeyboardBottomSheet.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/SetupGuiKeyboardState.kt (87%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/SetupGuiKeyboardUseCase.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/Trigger.kt (99%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/TriggerError.kt (92%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/TriggerErrorSnapshot.kt (98%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/TriggerKey.kt (95%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/TriggerKeyDevice.kt (96%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/TriggerKeyListItem.kt (85%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/TriggerKeyOptionsBottomSheet.kt (92%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/TriggerKeyShortcut.kt (65%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/TriggerMode.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base => mapping/src/main/java/io/github/sds100/keymapper/mapping}/trigger/TriggerScreen.kt (94%) rename {base/src/main/java/io/github/sds100/keymapper/base/actions/uielement => system/src/main/java/io/github/sds100/keymapper/system/accessibility}/NodeInteractionType.kt (89%) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt index 11e040bafc..2c7c126933 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt @@ -46,6 +46,8 @@ import io.github.sds100.keymapper.base.util.ui.compose.CheckBoxText import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText import io.github.sds100.keymapper.base.util.ui.compose.SliderOptionText import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe +import io.github.sds100.keymapper.mapping.actions.HoldDownMode +import io.github.sds100.keymapper.mapping.actions.RepeatMode import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt index 25207034bf..dd859d21bb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt @@ -5,7 +5,6 @@ import android.view.KeyEvent import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Android import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType import io.github.sds100.keymapper.common.util.result.handle import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.system.camera.CameraLens @@ -21,6 +20,11 @@ import io.github.sds100.keymapper.base.util.ui.IconInfo import io.github.sds100.keymapper.base.util.ui.ResourceProvider import io.github.sds100.keymapper.base.util.ui.TintType import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.mapping.actions.Action +import io.github.sds100.keymapper.mapping.actions.ActionData +import io.github.sds100.keymapper.mapping.actions.ActionUtils +import io.github.sds100.keymapper.mapping.actions.PinchScreenType +import io.github.sds100.keymapper.mapping.actions.RepeatMode import splitties.bitflags.hasFlag class ActionUiHelper( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt index a09a353797..fe317a306c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt @@ -47,6 +47,7 @@ import io.github.sds100.keymapper.base.util.ui.LinkType import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.util.ui.compose.DraggableItem import io.github.sds100.keymapper.base.util.ui.compose.rememberDragDropState +import io.github.sds100.keymapper.mapping.actions.ActionData import kotlinx.coroutines.flow.update @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt index fcce3db246..4706373e22 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt @@ -20,7 +20,6 @@ import androidx.fragment.app.setFragmentResult import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.lifecycle.withStateAtLeast -import androidx.navigation.findNavController import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.compose.KeyMapperTheme diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index 0455d8d4ed..ba590fda67 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -1,7 +1,6 @@ package io.github.sds100.keymapper.base.actions import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.SystemError @@ -31,7 +30,9 @@ import kotlinx.coroutines.flow.shareIn import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.actions.CreateActionUseCase +import io.github.sds100.keymapper.mapping.actions.ActionCategory +import io.github.sds100.keymapper.mapping.actions.ActionId +import io.github.sds100.keymapper.mapping.actions.ActionUtils import javax.inject.Inject @HiltViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index 4003604e9e..318c0d378f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -28,6 +28,11 @@ import io.github.sds100.keymapper.base.util.ui.ViewModelHelper import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.util.ui.navigate import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.mapping.actions.ActionData +import io.github.sds100.keymapper.mapping.actions.ActionErrorSnapshot +import io.github.sds100.keymapper.mapping.actions.HoldDownMode +import io.github.sds100.keymapper.mapping.actions.RepeatMode +import io.github.sds100.keymapper.mapping.actions.TestActionUseCase import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index 6951dd0373..eaab421c6d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -28,6 +28,9 @@ import io.github.sds100.keymapper.base.util.ui.PopupViewModel import io.github.sds100.keymapper.base.util.ui.ResourceProvider import io.github.sds100.keymapper.base.util.ui.navigate import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.mapping.actions.ActionData +import io.github.sds100.keymapper.mapping.actions.ActionId +import io.github.sds100.keymapper.mapping.actions.isEditable import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt index 68ca14ef15..ee70647330 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.actions -import android.content.Context -import dagger.hilt.android.qualifiers.ApplicationContext +import io.github.sds100.keymapper.mapping.actions.IsActionSupportedUseCase +import io.github.sds100.keymapper.mapping.actions.IsActionSupportedUseCaseImpl import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraFlashInfo import io.github.sds100.keymapper.system.camera.CameraLens diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt index d7a4040819..d5bc02f127 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt @@ -3,6 +3,7 @@ package io.github.sds100.keymapper.base.actions import android.graphics.drawable.Drawable import io.github.sds100.keymapper.common.util.result.Error import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.mapping.actions.GetActionErrorUseCase import kotlinx.coroutines.flow.Flow interface DisplayActionUseCase : GetActionErrorUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt index 7e740814e8..feae31c74f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt @@ -53,6 +53,8 @@ import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperSliderThumb import io.github.sds100.keymapper.base.util.ui.compose.OptionsHeaderRow import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText +import io.github.sds100.keymapper.mapping.actions.ActionId +import io.github.sds100.keymapper.mapping.actions.ActionUtils import kotlinx.coroutines.launch import kotlin.math.roundToInt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt index 0721a0318c..2e89a4c0c6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt @@ -41,6 +41,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperDropdownMenu +import io.github.sds100.keymapper.mapping.actions.ActionData import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import okhttp3.HttpUrl.Companion.toHttpUrlOrNull diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt index 11a296a7c0..aad0fc9212 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt @@ -22,7 +22,7 @@ class ChooseKeyCodeFragment : SimpleRecyclerViewFragment() { } override var searchStateKey: String? = - io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment.Companion.SEARCH_STATE_KEY + io.github.sds100.keymapper.mapping.actions.keyevent.ChooseKeyCodeFragment.Companion.SEARCH_STATE_KEY private val args: ChooseKeyCodeFragmentArgs by navArgs() private val viewModel: io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeViewModel by viewModels { @@ -39,7 +39,7 @@ class ChooseKeyCodeFragment : SimpleRecyclerViewFragment() { viewLifecycleOwner.launchRepeatOnLifecycle(Lifecycle.State.RESUMED) { viewModel.returnResult.collectLatest { - returnResult(io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment.Companion.EXTRA_KEYCODE to it) + returnResult(io.github.sds100.keymapper.mapping.actions.keyevent.ChooseKeyCodeFragment.Companion.EXTRA_KEYCODE to it) } } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickCoordinateResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickCoordinateResult.kt index ee115d0fff..8b8ed3fa73 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickCoordinateResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickCoordinateResult.kt @@ -1,12 +1,8 @@ package io.github.sds100.keymapper.base.actions.pinchscreen +import io.github.sds100.keymapper.mapping.actions.PinchScreenType import kotlinx.serialization.Serializable -enum class PinchScreenType { - PINCH_IN, - PINCH_OUT, -} - @Serializable data class PinchPickCoordinateResult( val x: Int, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt index abee246955..d285c1806b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt @@ -16,6 +16,7 @@ import io.github.sds100.keymapper.base.util.ui.PopupViewModel import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.util.ui.ResourceProvider import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.mapping.actions.PinchScreenType import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt index 717ab86f30..e17f26b12d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt @@ -56,6 +56,7 @@ import io.github.sds100.keymapper.base.util.ui.compose.CheckBoxText import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperDropdownMenu import io.github.sds100.keymapper.base.util.ui.compose.SearchAppBarActions import io.github.sds100.keymapper.base.util.ui.compose.WindowSizeClassExt.compareTo +import io.github.sds100.keymapper.system.accessibility.NodeInteractionType @Composable fun ChooseElementScreen( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt index 3523adc07b..6c45380b0f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt @@ -72,7 +72,7 @@ import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette -import io.github.sds100.keymapper.base.ui.apps.ChooseAppScreen +import io.github.sds100.keymapper.base.system.apps.ChooseAppScreen import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.drawable import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo @@ -82,6 +82,7 @@ import io.github.sds100.keymapper.base.util.ui.compose.WindowSizeClassExt.compar import io.github.sds100.keymapper.base.util.ui.compose.icons.AdGroup import io.github.sds100.keymapper.base.util.ui.compose.icons.JumpToElement import io.github.sds100.keymapper.base.util.ui.compose.icons.KeyMapperIcons +import io.github.sds100.keymapper.system.accessibility.NodeInteractionType import kotlinx.coroutines.flow.update private const val DEST_LANDING = "landing" diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt index e610ddeac6..9cdd36be4d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt @@ -3,7 +3,6 @@ package io.github.sds100.keymapper.base.actions.uielement import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Android import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R @@ -27,6 +26,7 @@ import io.github.sds100.keymapper.base.util.ui.ResourceProvider import io.github.sds100.keymapper.base.util.ui.ViewModelHelper import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.system.accessibility.NodeInteractionType import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintMode.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintMode.kt deleted file mode 100644 index 985191d18d..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintMode.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.sds100.keymapper.base.constraints - -enum class ConstraintMode { - AND, - OR, -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt index 1fb94fc8ce..1bb90b069f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.bluetooth +package io.github.sds100.keymapper.base.system import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt index 6eb3c3d060..e94a9f1e43 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/bluetooth/ChooseBluetoothDeviceViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.bluetooth +package io.github.sds100.keymapper.base.system import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppActivityListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppActivityListItem.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppActivityListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppActivityListItem.kt index 3a2285566a..48c5e88d6f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppActivityListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppActivityListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.apps +package io.github.sds100.keymapper.base.system.apps import io.github.sds100.keymapper.system.apps.ActivityInfo import io.github.sds100.keymapper.base.util.ui.IconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppShortcutListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppShortcutListItem.kt similarity index 93% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppShortcutListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppShortcutListItem.kt index b7607b8711..88e1d7eea3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/AppShortcutListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppShortcutListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.apps +package io.github.sds100.keymapper.base.system.apps import io.github.sds100.keymapper.system.apps.AppShortcutInfo import io.github.sds100.keymapper.base.util.ui.IconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt index 58551e3b7e..e4471ec98f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.apps +package io.github.sds100.keymapper.base.system.apps import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.navArgs diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt index afb42126c2..61cbed43d5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.apps +package io.github.sds100.keymapper.base.system.apps import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt index 46baae1e39..7a6d0f703e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.apps +package io.github.sds100.keymapper.base.system.apps import android.os.Bundle import android.view.LayoutInflater diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt index 704e5b558c..2bccb2c543 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.apps +package io.github.sds100.keymapper.base.system.apps import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt index b2c82cd5d4..937dc884c8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.apps +package io.github.sds100.keymapper.base.system.apps import android.app.Activity import android.appwidget.AppWidgetManager diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutResult.kt similarity index 77% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutResult.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutResult.kt index ce50cc805e..f0a093b76e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutResult.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.apps +package io.github.sds100.keymapper.base.system.apps import kotlinx.serialization.Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt index 3b781ef1ba..43862564c6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.apps +package io.github.sds100.keymapper.base.system.apps import android.content.Intent import androidx.lifecycle.ViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppViewModel.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppViewModel.kt index 95404e4be2..f77b1cea4a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/ChooseAppViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.apps +package io.github.sds100.keymapper.base.system.apps import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppShortcutsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppShortcutsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt index f56f30673c..402a27ed4d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppShortcutsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.apps +package io.github.sds100.keymapper.base.system.apps import android.graphics.drawable.Drawable import io.github.sds100.keymapper.common.util.result.Result diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt index f0f4b9c704..84410dd548 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/apps/DisplayAppsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.apps +package io.github.sds100.keymapper.base.system.apps import android.graphics.drawable.Drawable import io.github.sds100.keymapper.common.util.result.Result diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt index f7e6159296..71c2c5688c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.intents +package io.github.sds100.keymapper.base.system.intents import android.os.Bundle import android.text.Editable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentResult.kt similarity index 86% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentResult.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentResult.kt index 029784c91b..4c5f349253 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentResult.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.intents +package io.github.sds100.keymapper.base.system.intents import io.github.sds100.keymapper.system.intents.IntentExtraModel import io.github.sds100.keymapper.system.intents.IntentTarget diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt index 65a521ba21..3cd10d8a6d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ui/intents/ConfigIntentViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.ui.intents +package io.github.sds100.keymapper.base.system.intents import android.content.Intent import android.os.Build diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ListItem.kt deleted file mode 100644 index cbd3fb8838..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ListItem.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.github.sds100.keymapper.base.util.ui - -interface ListItem { - val id: String -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/KeyMapperIcons.kt b/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/KeyMapperIcons.kt deleted file mode 100644 index d5430290b0..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/KeyMapperIcons.kt +++ /dev/null @@ -1,3 +0,0 @@ -package io.github.sds100.keymapper.base.util.ui.compose.icons - -object KeyMapperIcons diff --git a/base/src/main/res/layout/fragment_choose_app.xml b/base/src/main/res/layout/fragment_choose_app.xml index 690210f1dc..7e93b5f831 100644 --- a/base/src/main/res/layout/fragment_choose_app.xml +++ b/base/src/main/res/layout/fragment_choose_app.xml @@ -9,7 +9,7 @@ + type="io.github.sds100.keymapper.base.system.apps.ChooseAppViewModel" /> + type="io.github.sds100.keymapper.base.system.intents.ConfigIntentViewModel" /> (val id: ID, val label: String, val isChecked: Boolean = false) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/MultiSelectProvider.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/MultiSelectProvider.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/MultiSelectProvider.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/MultiSelectProvider.kt index 812451d9a2..f2cd36908d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/MultiSelectProvider.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/MultiSelectProvider.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavDestination.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/NavDestination.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavDestination.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/NavDestination.kt index 143b4126b5..d8ff256673 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavDestination.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/NavDestination.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.pinchscreen.PinchPickCoordinateResult @@ -6,9 +6,9 @@ import io.github.sds100.keymapper.actions.swipescreen.SwipePickCoordinateResult import io.github.sds100.keymapper.actions.tapscreen.PickCoordinateResult import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.system.apps.ActivityInfo -import io.github.sds100.keymapper.base.ui.apps.ChooseAppShortcutResult +import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutResult import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.base.ui.intents.ConfigIntentResult +import io.github.sds100.keymapper.base.system.intents.ConfigIntentResult sealed class NavDestination { abstract val id: String diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavResult.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/NavResult.kt similarity index 54% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavResult.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/NavResult.kt index 51f39cc9ee..a90f63559b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavResult.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/NavResult.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui data class NavResult(val key: String, val result: Any?) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigateEvent.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/NavigateEvent.kt similarity index 62% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigateEvent.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/NavigateEvent.kt index faaf73c1fc..a0711c81fa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigateEvent.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/NavigateEvent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui data class NavigateEvent(val key: String, val destination: NavDestination<*>) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigationUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/NavigationUtils.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigationUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/NavigationUtils.kt index c70477c09a..41c3dc0d97 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigationUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/NavigationUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import androidx.lifecycle.LifecycleOwner import androidx.navigation.NavBackStackEntry diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigationViewModel.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/NavigationViewModel.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigationViewModel.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/NavigationViewModel.kt index fcef386351..2de461d3f6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/NavigationViewModel.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/NavigationViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import android.os.Bundle import androidx.core.os.bundleOf @@ -10,7 +10,7 @@ import androidx.navigation.fragment.findNavController import io.github.sds100.keymapper.NavAppDirections import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.ChooseActionFragment -import io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment +import io.github.sds100.keymapper.mapping.actions.keyevent.ChooseKeyCodeFragment import io.github.sds100.keymapper.actions.keyevent.ConfigKeyEventActionFragment import io.github.sds100.keymapper.actions.pinchscreen.PinchPickCoordinateResult import io.github.sds100.keymapper.actions.pinchscreen.PinchPickDisplayCoordinateFragment @@ -23,14 +23,14 @@ import io.github.sds100.keymapper.actions.uielement.InteractUiElementFragment import io.github.sds100.keymapper.constraints.ChooseConstraintFragment import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.system.apps.ActivityInfo -import io.github.sds100.keymapper.base.ui.apps.ChooseActivityFragment -import io.github.sds100.keymapper.base.ui.apps.ChooseAppFragment -import io.github.sds100.keymapper.base.ui.apps.ChooseAppShortcutFragment -import io.github.sds100.keymapper.base.ui.apps.ChooseAppShortcutResult +import io.github.sds100.keymapper.base.system.apps.ChooseActivityFragment +import io.github.sds100.keymapper.base.system.apps.ChooseAppFragment +import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutFragment +import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutResult import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.base.ui.bluetooth.ChooseBluetoothDeviceFragment -import io.github.sds100.keymapper.base.ui.intents.ConfigIntentFragment -import io.github.sds100.keymapper.base.ui.intents.ConfigIntentResult +import io.github.sds100.keymapper.base.system.ChooseBluetoothDeviceFragment +import io.github.sds100.keymapper.base.system.intents.ConfigIntentFragment +import io.github.sds100.keymapper.base.system.intents.ConfigIntentResult import io.github.sds100.keymapper.ui.utils.getJsonSerializable import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow @@ -254,7 +254,7 @@ fun NavigationViewModel.sendNavResultFromBundle( } NavDestination.ID_KEY_CODE -> { - val keyCode = bundle.getInt(io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment.EXTRA_KEYCODE) + val keyCode = bundle.getInt(io.github.sds100.keymapper.mapping.actions.keyevent.ChooseKeyCodeFragment.EXTRA_KEYCODE) onNavResult(NavResult(requestKey, keyCode)) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/OnPopupResponseEvent.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/OnPopupResponseEvent.kt similarity index 59% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/OnPopupResponseEvent.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/OnPopupResponseEvent.kt index 02e79de124..e70b900c4b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/OnPopupResponseEvent.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/OnPopupResponseEvent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui data class OnPopupResponseEvent(val key: String, val response: Any?) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupUi.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/PopupUi.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupUi.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/PopupUi.kt index dc056f7d6c..7a9833dda2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupUi.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/PopupUi.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/PopupViewModel.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/PopupViewModel.kt index 48aa3a06d1..93a2e21e41 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/PopupViewModel.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/PopupViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import android.content.Context import android.view.LayoutInflater diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RadioButtonPairListItem.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/RadioButtonPairListItem.kt similarity index 86% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/RadioButtonPairListItem.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/RadioButtonPairListItem.kt index c8e98e9f55..950b7e4bae 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RadioButtonPairListItem.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/RadioButtonPairListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui data class RadioButtonPairListItem( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RadioButtonTripleListItem.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/RadioButtonTripleListItem.kt similarity index 89% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/RadioButtonTripleListItem.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/RadioButtonTripleListItem.kt index 5c1e83a5c0..b530fd7aa7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RadioButtonTripleListItem.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/RadioButtonTripleListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui data class RadioButtonTripleListItem( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/RecyclerViewFragment.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/RecyclerViewFragment.kt index 80514929a5..2efdd41fd8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewFragment.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/RecyclerViewFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import android.os.Bundle import android.view.LayoutInflater diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/RecyclerViewUtils.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/RecyclerViewUtils.kt index 7a72a1a081..8d7bfe47bc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/RecyclerViewUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/RecyclerViewUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import android.graphics.Rect import android.view.View diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceExt.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/ResourceExt.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceExt.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/ResourceExt.kt index a958bb90f4..f353b42a24 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceExt.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/ResourceExt.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.common.ui import android.content.Context import android.content.res.ColorStateList diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceProvider.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/ResourceProvider.kt similarity index 88% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceProvider.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/ResourceProvider.kt index d810abc711..a9699df5aa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ResourceProvider.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/ResourceProvider.kt @@ -1,13 +1,10 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import android.content.Context import android.graphics.drawable.Drawable import androidx.annotation.ColorRes import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import io.github.sds100.keymapper.base.util.color -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.str import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SectionHeaderListItem.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/SectionHeaderListItem.kt similarity index 64% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/SectionHeaderListItem.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/SectionHeaderListItem.kt index 95ea851042..7e874730e2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SectionHeaderListItem.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/SectionHeaderListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui data class SectionHeaderListItem(override val id: String, val text: String) : ListItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SelectionState.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/SelectionState.kt similarity index 76% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/SelectionState.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/SelectionState.kt index 8f2290ad5e..4b880ddad4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SelectionState.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/SelectionState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui sealed class SelectionState { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ShowPopupEvent.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/ShowPopupEvent.kt similarity index 57% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/ShowPopupEvent.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/ShowPopupEvent.kt index f55a8df7fa..ec7f6f6bc4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ShowPopupEvent.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/ShowPopupEvent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui data class ShowPopupEvent(val key: String, val ui: PopupUi<*>) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SimpleRecyclerViewFragment.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/SimpleRecyclerViewFragment.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/SimpleRecyclerViewFragment.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/SimpleRecyclerViewFragment.kt index 4e01f97438..f2328a3504 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SimpleRecyclerViewFragment.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/SimpleRecyclerViewFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import android.view.LayoutInflater import android.view.ViewGroup @@ -7,7 +7,6 @@ import androidx.annotation.StringRes import com.google.android.material.bottomappbar.BottomAppBar import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding -import io.github.sds100.keymapper.base.util.str abstract class SimpleRecyclerViewFragment : RecyclerViewFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderMaximums.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/SliderMaximums.kt similarity index 90% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderMaximums.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/SliderMaximums.kt index be8e537f49..cac92c8814 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderMaximums.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/SliderMaximums.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui object SliderMaximums { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderMinimums.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/SliderMinimums.kt similarity index 89% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderMinimums.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/SliderMinimums.kt index 78d4d499a8..64648699af 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderMinimums.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/SliderMinimums.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui object SliderMinimums { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderStepSizes.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/SliderStepSizes.kt similarity index 90% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderStepSizes.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/SliderStepSizes.kt index 2a20ae7323..942e40861f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SliderStepSizes.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/SliderStepSizes.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui object SliderStepSizes { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SnackBarUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/SnackBarUtils.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/SnackBarUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/SnackBarUtils.kt index 9e293fd3fa..15f649d45c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SnackBarUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/SnackBarUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import androidx.coordinatorlayout.widget.CoordinatorLayout import io.github.sds100.keymapper.R diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SquareImageButton.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/SquareImageButton.kt similarity index 89% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/SquareImageButton.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/SquareImageButton.kt index f01bea95e6..9da8d446a4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/SquareImageButton.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/SquareImageButton.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import android.content.Context import android.util.AttributeSet diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/TextListItem.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/TextListItem.kt similarity index 85% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/TextListItem.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/TextListItem.kt index f063307908..b24a0975bc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/TextListItem.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/TextListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/TintType.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/TintType.kt similarity index 83% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/TintType.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/TintType.kt index f159fc702c..8d500247b0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/TintType.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/TintType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import androidx.annotation.ColorInt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/ViewModelHelper.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/ViewModelHelper.kt index 70902a750b..4b1396cb0d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/ViewModelHelper.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/ViewModelHelper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui +package io.github.sds100.keymapper.common.ui import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.util.result.Error diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CheckBoxText.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CheckBoxText.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CheckBoxText.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CheckBoxText.kt index bde306be9c..f86821a066 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CheckBoxText.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CheckBoxText.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CollapsableFloatingActionButton.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CollapsableFloatingActionButton.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CollapsableFloatingActionButton.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CollapsableFloatingActionButton.kt index df2dcf2b59..e267edaeec 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CollapsableFloatingActionButton.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CollapsableFloatingActionButton.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedVisibility diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CompactChip.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CompactChip.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CompactChip.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CompactChip.kt index 4a20f6dfce..1ddaf94651 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/CompactChip.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CompactChip.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeChipModel.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeChipModel.kt similarity index 80% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeChipModel.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeChipModel.kt index c50b4b611b..c730d1c405 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeChipModel.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeChipModel.kt @@ -1,6 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose - -import io.github.sds100.keymapper.common.util.result.Error +package io.github.sds100.keymapper.common.ui.compose sealed class ComposeChipModel { abstract val id: String diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeDialogs.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeDialogs.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeDialogs.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeDialogs.kt index 7a874392d6..f88d81258d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeDialogs.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeDialogs.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeIconInfo.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeIconInfo.kt similarity index 82% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeIconInfo.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeIconInfo.kt index 81466178e1..71dc3748aa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ComposeIconInfo.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeIconInfo.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.ui.graphics.vector.ImageVector diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/DragDropState.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/DragDropState.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/DragDropState.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/DragDropState.kt index b32e4b2bd8..791474c3cc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/DragDropState.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/DragDropState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.Spring diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/DraggableItem.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/DraggableItem.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/DraggableItem.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/DraggableItem.kt index c902fef004..3450eaeb93 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/DraggableItem.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/DraggableItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperDropdownMenu.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperDropdownMenu.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperDropdownMenu.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperDropdownMenu.kt index d2246f9cbe..7300a32f8f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperDropdownMenu.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperDropdownMenu.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperSliderThumb.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperSliderThumb.kt similarity index 89% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperSliderThumb.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperSliderThumb.kt index 450f33a0f3..b088fca3d2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperSliderThumb.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperSliderThumb.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.material3.SliderDefaults diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperTapTarget.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperTapTarget.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperTapTarget.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperTapTarget.kt index 87d7dce0be..d189bbd819 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/KeyMapperTapTarget.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperTapTarget.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.Column diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ListItemFixError.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ListItemFixError.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ListItemFixError.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ListItemFixError.kt index 0205779a58..d926791189 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/ListItemFixError.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ListItemFixError.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/OptionsHeaderRow.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/OptionsHeaderRow.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/OptionsHeaderRow.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/OptionsHeaderRow.kt index 5c5b6bde74..0f8aa87222 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/OptionsHeaderRow.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/OptionsHeaderRow.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/RadioButtonText.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/RadioButtonText.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/RadioButtonText.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/RadioButtonText.kt index bd9d77c4c1..29dbde5e81 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/RadioButtonText.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/RadioButtonText.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SearchAppBarActions.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SearchAppBarActions.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SearchAppBarActions.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SearchAppBarActions.kt index e9b66c8e26..2663865603 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SearchAppBarActions.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SearchAppBarActions.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.foundation.layout.RowScope import androidx.compose.material.icons.Icons diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItem.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SimpleListItem.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItem.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SimpleListItem.kt index 9baf48faf8..e862eadcc6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItem.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SimpleListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItemModel.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SimpleListItemModel.kt similarity index 84% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItemModel.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SimpleListItemModel.kt index 6a7bb41dfc..520acec94f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SimpleListItemModel.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SimpleListItemModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose data class SimpleListItemGroup(val header: String, val items: List) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SliderOptionText.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SliderOptionText.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SliderOptionText.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SliderOptionText.kt index e5dd02633d..aebf53dcd6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/SliderOptionText.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SliderOptionText.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.interaction.MutableInteractionSource diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/UriHandlerUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/UriHandlerUtils.kt similarity index 88% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/UriHandlerUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/UriHandlerUtils.kt index 977327c793..a11e0a212e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/UriHandlerUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/UriHandlerUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import android.content.Context import android.widget.Toast diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/WindowSizeClassExt.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/WindowSizeClassExt.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/WindowSizeClassExt.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/WindowSizeClassExt.kt index 32ff963cd1..e8ed0fbdee 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/WindowSizeClassExt.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/WindowSizeClassExt.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose +package io.github.sds100.keymapper.common.ui.compose import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/AdGroup.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/AdGroup.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/AdGroup.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/AdGroup.kt index 1129508801..a62c74c428 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/AdGroup.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/AdGroup.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose.icons +package io.github.sds100.keymapper.common.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/HomeIotDevice.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/HomeIotDevice.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/HomeIotDevice.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/HomeIotDevice.kt index 61fb9c4fb4..4027e2ffe3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/HomeIotDevice.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/HomeIotDevice.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose.icons +package io.github.sds100.keymapper.common.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/Import.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/Import.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/Import.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/Import.kt index 6f7af442e8..78ecffbbc3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/Import.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/Import.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose.icons +package io.github.sds100.keymapper.common.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/InstantMix.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/InstantMix.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/InstantMix.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/InstantMix.kt index 89c502d388..d5b2caa1e2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/InstantMix.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/InstantMix.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose.icons +package io.github.sds100.keymapper.common.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/JumpToElement.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/JumpToElement.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/JumpToElement.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/JumpToElement.kt index 730a1d0600..3c4b9ce202 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/JumpToElement.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/JumpToElement.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose.icons +package io.github.sds100.keymapper.common.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/KeyMapperIcons.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/KeyMapperIcons.kt new file mode 100644 index 0000000000..837388408b --- /dev/null +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/KeyMapperIcons.kt @@ -0,0 +1,3 @@ +package io.github.sds100.keymapper.common.ui.compose.icons + +object KeyMapperIcons diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/MatchWord.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/MatchWord.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/MatchWord.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/MatchWord.kt index 13da6b97d8..cf03f23c52 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/MatchWord.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/MatchWord.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose.icons +package io.github.sds100.keymapper.common.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/NfcOff.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/NfcOff.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/NfcOff.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/NfcOff.kt index 97eacfdc47..def2fa1b85 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/NfcOff.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/NfcOff.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose.icons +package io.github.sds100.keymapper.common.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TextSelectEnd.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TextSelectEnd.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TextSelectEnd.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TextSelectEnd.kt index 586470746e..7647b535bc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TextSelectEnd.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TextSelectEnd.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose.icons +package io.github.sds100.keymapper.common.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TextSelectMoveForwardCharacter.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TextSelectMoveForwardCharacter.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TextSelectMoveForwardCharacter.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TextSelectMoveForwardCharacter.kt index 54f601a195..204fd1ce2d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TextSelectMoveForwardCharacter.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TextSelectMoveForwardCharacter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose.icons +package io.github.sds100.keymapper.common.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TopPanelClose.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TopPanelClose.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TopPanelClose.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TopPanelClose.kt index 3aa34a4207..622fd3843c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TopPanelClose.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TopPanelClose.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose.icons +package io.github.sds100.keymapper.common.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TopPanelOpen.kt b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TopPanelOpen.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TopPanelOpen.kt rename to common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TopPanelOpen.kt index b5c0fda72b..f5d947c687 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ui/compose/icons/TopPanelOpen.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TopPanelOpen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util.ui.compose.icons +package io.github.sds100.keymapper.common.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/BundleUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/BundleUtils.kt similarity index 100% rename from base/src/main/java/io/github/sds100/keymapper/base/util/BundleUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/BundleUtils.kt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/DispatcherProvider.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/DispatcherProvider.kt similarity index 89% rename from base/src/main/java/io/github/sds100/keymapper/base/util/DispatcherProvider.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/DispatcherProvider.kt index dc0fe47a93..aced79390b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/DispatcherProvider.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/DispatcherProvider.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/DisplayUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/DisplayUtils.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/util/DisplayUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/DisplayUtils.kt index cfe2a5829f..8867632dd4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/DisplayUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/DisplayUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import android.content.Context import android.graphics.Point diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/ErrorUtils.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/ErrorUtils.kt index d0f0b0f896..f87b06b7e7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ErrorUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/ErrorUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import android.content.pm.PackageManager import io.github.sds100.keymapper.R diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/FilterUtils.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/FilterUtils.kt index c22f914028..f3e6796f8f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/FilterUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/FilterUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.base.util.ui.ISearchable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/InputEventType.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/InputEventType.kt similarity index 56% rename from base/src/main/java/io/github/sds100/keymapper/base/util/InputEventType.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/InputEventType.kt index 0e2083e662..64b4c38227 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/InputEventType.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/InputEventType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util enum class InputEventType { DOWN_UP, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ListUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/ListUtils.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ListUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/ListUtils.kt index f22dbe77a2..e3f1642bbb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ListUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/ListUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import java.util.Collections diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/LoggingUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/LoggingUtils.kt similarity index 84% rename from base/src/main/java/io/github/sds100/keymapper/base/util/LoggingUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/LoggingUtils.kt index 0485b2502c..53e5dcb0a7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/LoggingUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/LoggingUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import timber.log.Timber import kotlin.system.measureTimeMillis diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/MapUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/MapUtils.kt similarity index 73% rename from base/src/main/java/io/github/sds100/keymapper/base/util/MapUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/MapUtils.kt index c0d124018c..337d6e0a5f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/MapUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/MapUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/MathUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/MathUtils.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/MathUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/MathUtils.kt index a77c7986d9..b18ff45b57 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/MathUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/MathUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import android.graphics.Point import kotlin.math.atan2 diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/PreferenceDelegate.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/PreferenceDelegate.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/util/PreferenceDelegate.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/PreferenceDelegate.kt index b48b3440dc..48dbd6c4c6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/PreferenceDelegate.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/PreferenceDelegate.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import androidx.datastore.preferences.core.Preferences import io.github.sds100.keymapper.common.util.firstBlocking diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ServiceEvent.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/ServiceEvent.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ServiceEvent.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/ServiceEvent.kt index 4d08bb3de1..5cf6c23625 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ServiceEvent.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/ServiceEvent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import android.os.Parcelable import io.github.sds100.keymapper.actions.ActionData diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/ShareUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/ShareUtils.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/util/ShareUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/ShareUtils.kt index 90bf739491..d3d8a78c16 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/ShareUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/ShareUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import android.app.PendingIntent import android.content.ActivityNotFoundException diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/SharedPrefsDataStoreWrapper.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/SharedPrefsDataStoreWrapper.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/util/SharedPrefsDataStoreWrapper.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/SharedPrefsDataStoreWrapper.kt index a12fad63e3..0b3fe6e378 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/SharedPrefsDataStoreWrapper.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/SharedPrefsDataStoreWrapper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import androidx.datastore.preferences.core.booleanPreferencesKey import androidx.datastore.preferences.core.doublePreferencesKey diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/SizeKM.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/SizeKM.kt similarity index 77% rename from base/src/main/java/io/github/sds100/keymapper/base/util/SizeKM.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/SizeKM.kt index 7656e5ac05..10d907112a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/SizeKM.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/SizeKM.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import kotlinx.serialization.Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/StringUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/StringUtils.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/util/StringUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/StringUtils.kt index 8e7d048ef9..4c74cd95ab 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/StringUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/StringUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import androidx.annotation.IntRange import kotlin.math.roundToInt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/TimeUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/TimeUtils.kt similarity index 85% rename from base/src/main/java/io/github/sds100/keymapper/base/util/TimeUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/TimeUtils.kt index a018df00f4..740660c8bf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/TimeUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/TimeUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import java.time.format.DateTimeFormatter import java.time.format.FormatStyle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/TreeNode.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/TreeNode.kt similarity index 89% rename from base/src/main/java/io/github/sds100/keymapper/base/util/TreeNode.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/TreeNode.kt index 7da92fbbbf..b78d5eb79a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/TreeNode.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/TreeNode.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util data class TreeNode(val value: T, val children: MutableList> = mutableListOf()) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/UserHandleUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/UserHandleUtils.kt similarity index 81% rename from base/src/main/java/io/github/sds100/keymapper/base/util/UserHandleUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/UserHandleUtils.kt index 96f7974de5..2c4009e1cb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/UserHandleUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/UserHandleUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import android.os.UserHandle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/UuidGenerator.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/UuidGenerator.kt similarity index 80% rename from base/src/main/java/io/github/sds100/keymapper/base/util/UuidGenerator.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/UuidGenerator.kt index 740f076459..5daaea049f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/UuidGenerator.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/UuidGenerator.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/util/VersionHelper.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/VersionHelper.kt similarity index 89% rename from base/src/main/java/io/github/sds100/keymapper/base/util/VersionHelper.kt rename to common/src/main/java/io/github/sds100/keymapper/common/util/VersionHelper.kt index 5938197517..1b9de576c6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/util/VersionHelper.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/util/VersionHelper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.util +package io.github.sds100.keymapper.common.util object VersionHelper { diff --git a/mapping/build.gradle.kts b/mapping/build.gradle.kts index 601194957b..a62a1fe491 100644 --- a/mapping/build.gradle.kts +++ b/mapping/build.gradle.kts @@ -1,6 +1,10 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.kotlin.parcelize) + alias(libs.plugins.google.devtools.ksp) + alias(libs.plugins.jlleitschuh.gradle.ktlint) } android { @@ -19,7 +23,7 @@ android { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" + "proguard-rules.pro", ) } } @@ -34,11 +38,15 @@ android { dependencies { implementation(project(":common")) + implementation(project(":data")) + implementation(project(":system")) - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.appcompat) - testImplementation(libs.junit) + implementation(libs.kotlinx.coroutines.android) + implementation(libs.kotlinx.serialization.json) + implementation(libs.kotson) + + implementation(libs.dagger.hilt.android) + ksp(libs.dagger.hilt.android.compiler) - androidTestImplementation(libs.androidx.test.ext.junit) - androidTestImplementation(libs.androidx.espresso.core) -} \ No newline at end of file + testImplementation(libs.junit) +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/Action.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/Action.kt index ea339b4933..6cd3a984b3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/Action.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions import io.github.sds100.keymapper.common.util.result.success import io.github.sds100.keymapper.common.util.result.then diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionCategory.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionCategory.kt similarity index 81% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/ActionCategory.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionCategory.kt index 55bf05e5d3..292ddc7cfa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionCategory.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionCategory.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions enum class ActionCategory { APPS, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionData.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionData.kt index a3fc582e50..f8220f29f6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionData.kt @@ -1,7 +1,6 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions -import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType -import io.github.sds100.keymapper.actions.uielement.NodeInteractionType +import io.github.sds100.keymapper.system.accessibility.NodeInteractionType import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.display.Orientation import io.github.sds100.keymapper.system.intents.IntentExtraModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionDataEntityMapper.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionDataEntityMapper.kt index 33d4b07586..f71717263b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionDataEntityMapper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions import androidx.core.net.toUri import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionErrorSnapshot.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionErrorSnapshot.kt index 8cf20e3f13..6c18028aaf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionErrorSnapshot.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions import io.github.sds100.keymapper.actions.sound.SoundsManager import io.github.sds100.keymapper.common.util.result.Error diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionId.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionId.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/ActionId.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionId.kt index b8034aa84b..ebad2c57c7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionId.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionId.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions enum class ActionId { APP, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionUtils.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionUtils.kt index 711c692644..30224a14ac 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions import android.content.pm.PackageManager import android.os.Build diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/GetActionErrorUseCase.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/GetActionErrorUseCase.kt index 731054d600..97798a3661 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/GetActionErrorUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/HoldDownMode.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/HoldDownMode.kt similarity index 60% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/HoldDownMode.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/HoldDownMode.kt index cf10c89e7e..f06e99f620 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/HoldDownMode.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/HoldDownMode.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions enum class HoldDownMode { TRIGGER_RELEASED, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/IsActionSupportedUseCase.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/IsActionSupportedUseCase.kt index dfc0d6574b..6e67ed4477 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/IsActionSupportedUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions import android.content.pm.PackageManager import android.os.Build diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PerformActionsUseCase.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PerformActionsUseCase.kt index fee6bf533c..de3345e510 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PerformActionsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions import android.accessibilityservice.AccessibilityService import android.os.Build diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PinchScreenType.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PinchScreenType.kt new file mode 100644 index 0000000000..e24d29f4f8 --- /dev/null +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PinchScreenType.kt @@ -0,0 +1,6 @@ +package io.github.sds100.keymapper.mapping.actions + +enum class PinchScreenType { + PINCH_IN, + PINCH_OUT, +} \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/RepeatMode.kt similarity index 65% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/RepeatMode.kt index b8c373f86d..a2b8dfd7d4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/RepeatMode.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions enum class RepeatMode { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/TestActionUseCase.kt similarity index 91% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/TestActionUseCase.kt index 2362216199..4613fbbf0d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/TestActionUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions +package io.github.sds100.keymapper.mapping.actions import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.system.accessibility.ServiceAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintFragment.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintFragment.kt index 47fa46421c..e9f141dcb2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import android.os.Bundle import android.view.LayoutInflater diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintScreen.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintScreen.kt index 9fb920392e..5cc4f13302 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintViewModel.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintViewModel.kt index 423200736e..fdecb0976e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConfigConstraintsViewModel.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConfigConstraintsViewModel.kt index e63ccc30c8..2c97308f71 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConfigConstraintsViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -162,7 +162,7 @@ class ConfigConstraintsViewModel( val icon: ComposeIconInfo = uiHelper.getIcon(constraint) val error: Error? = errorSnapshot.getError(constraint) - ConstraintListItemModel( + io.github.sds100.keymapper.mapping.constraints.ConstraintListItemModel( id = constraint.uid, icon = icon, constraintModeLink = if (state.constraints.size > 1 && index < state.constraints.size - 1) { @@ -190,7 +190,7 @@ sealed class ConfigConstraintsState { ) : ConfigConstraintsState() data class Loaded( - val constraintList: List, + val constraintList: List, val selectedMode: ConstraintMode, val shortcuts: Set> = emptySet(), ) : ConfigConstraintsState() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/Constraint.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/Constraint.kt index c1a04da790..37b5b5a227 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/Constraint.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.data.entities.ConstraintEntity diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintDependency.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintDependency.kt similarity index 85% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintDependency.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintDependency.kt index 916eec0ae6..8f6dd4cdfa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintDependency.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintDependency.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints enum class ConstraintDependency { FOREGROUND_APP, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintErrorSnapshot.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintErrorSnapshot.kt index 7100a48726..67286fd244 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintErrorSnapshot.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import android.content.pm.PackageManager import android.os.Build diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintId.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintId.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintId.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintId.kt index 6ff99f2b54..b43bc9227b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintId.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintId.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import kotlinx.serialization.Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintListItem.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintListItem.kt index 1bc3f41ab1..6452ba5329 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.IntrinsicSize @@ -41,7 +41,7 @@ import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo @Composable fun ConstraintListItem( modifier: Modifier = Modifier, - model: ConstraintListItemModel, + model: io.github.sds100.keymapper.mapping.constraints.ConstraintListItemModel, onRemoveClick: () -> Unit = {}, onFixClick: () -> Unit = {}, ) { @@ -178,7 +178,7 @@ private fun TextColumn( @Composable private fun VectorPreview() { ConstraintListItem( - model = ConstraintListItemModel( + model = io.github.sds100.keymapper.mapping.constraints.ConstraintListItemModel( id = "id", icon = ComposeIconInfo.Vector(Icons.Outlined.ClearAll), constraintModeLink = ConstraintMode.AND, @@ -195,7 +195,7 @@ private fun DrawablePreview() { val drawable = LocalContext.current.drawable(R.mipmap.ic_launcher_round) ConstraintListItem( - model = ConstraintListItemModel( + model = io.github.sds100.keymapper.mapping.constraints.ConstraintListItemModel( id = "id", text = "Dismiss most recent notification", error = null, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintListItemModel.kt similarity index 69% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintListItemModel.kt index e6863d24bf..78884d6346 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintListItemModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo @@ -8,7 +8,7 @@ data class ConstraintListItemModel( /** * Null if no link should be shown between the items. */ - val constraintModeLink: ConstraintMode?, + val constraintModeLink: io.github.sds100.keymapper.mapping.constraints.ConstraintMode?, val text: String, val error: String? = null, val isErrorFixable: Boolean = true, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintMode.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintMode.kt new file mode 100644 index 0000000000..208c5ac810 --- /dev/null +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintMode.kt @@ -0,0 +1,6 @@ +package io.github.sds100.keymapper.mapping.constraints + +enum class ConstraintMode { + AND, + OR, +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintSnapshot.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintSnapshot.kt index a0ba0c3069..fbe8a02afc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintSnapshot.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import android.media.AudioManager import android.os.Build diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintState.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintState.kt similarity index 77% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintState.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintState.kt index ad284ccdb2..0595877fe9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintState.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import kotlinx.serialization.Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintUiHelper.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintUiHelper.kt index 26f7a1c46e..02392bd955 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintUiHelper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Android diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintUtils.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintUtils.kt index 9df5f818f2..b05a67328b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Battery2Bar diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintsScreen.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintsScreen.kt index 0684647c89..1b9f65b12a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintsScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -246,7 +246,7 @@ private fun Loading(modifier: Modifier = Modifier) { @Composable private fun ConstraintList( modifier: Modifier = Modifier, - constraintList: List, + constraintList: List, shortcuts: Set>, onRemoveClick: (String) -> Unit, onFixErrorClick: (String) -> Unit, @@ -326,7 +326,7 @@ private fun LoadedPreview() { state = State.Data( ConfigConstraintsState.Loaded( constraintList = listOf( - ConstraintListItemModel( + io.github.sds100.keymapper.mapping.constraints.ConstraintListItemModel( id = "1", icon = ComposeIconInfo.Vector(Icons.Rounded.FlashlightOn), constraintModeLink = ConstraintMode.AND, @@ -334,7 +334,7 @@ private fun LoadedPreview() { error = "Flashlight not found", isErrorFixable = true, ), - ConstraintListItemModel( + io.github.sds100.keymapper.mapping.constraints.ConstraintListItemModel( id = "2", icon = ComposeIconInfo.Drawable(ctx.drawable(R.mipmap.ic_launcher_round)), constraintModeLink = null, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/CreateConstraintUseCase.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/CreateConstraintUseCase.kt index 2ea51ff2ab..899306be2a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/CreateConstraintUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import android.content.pm.PackageManager import android.os.Build diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/DetectConstraintsUseCase.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/DetectConstraintsUseCase.kt index 00ad2bc4e1..89cd1f3e9c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/DetectConstraintsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import android.os.Build import io.github.sds100.keymapper.system.accessibility.IAccessibilityService diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/DisplayConstraintUseCase.kt similarity index 89% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/DisplayConstraintUseCase.kt index f717dc9d06..01ecc9bfb9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/DisplayConstraintUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import android.graphics.drawable.Drawable import io.github.sds100.keymapper.common.util.result.Error diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/GetConstraintErrorUseCase.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/GetConstraintErrorUseCase.kt index ec48afea54..cf9eaf2b47 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/GetConstraintErrorUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/TimeConstraintBottomSheet.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/TimeConstraintBottomSheet.kt index 5bb667c5c0..07140b15fc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/TimeConstraintBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.constraints +package io.github.sds100.keymapper.mapping.constraints import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapUseCase.kt index f887e9cd1a..f02d72277a 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapUseCase.kt @@ -1,16 +1,16 @@ package io.github.sds100.keymapper.mapping.keymaps import android.database.sqlite.SQLiteConstraintException -import io.github.sds100.keymapper.actions.Action -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.actions.RepeatMode +import io.github.sds100.keymapper.mapping.actions.Action +import io.github.sds100.keymapper.mapping.actions.ActionData +import io.github.sds100.keymapper.mapping.actions.RepeatMode import io.github.sds100.keymapper.common.util.result.Result import io.github.sds100.keymapper.common.util.state.State import io.github.sds100.keymapper.common.util.state.dataOrNull import io.github.sds100.keymapper.common.util.state.ifIsData -import io.github.sds100.keymapper.constraints.Constraint -import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.constraints.ConstraintState +import io.github.sds100.keymapper.mapping.constraints.Constraint +import io.github.sds100.keymapper.mapping.constraints.ConstraintMode +import io.github.sds100.keymapper.mapping.constraints.ConstraintState import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository @@ -21,15 +21,15 @@ import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.trigger.AssistantTriggerKey -import io.github.sds100.keymapper.trigger.AssistantTriggerType -import io.github.sds100.keymapper.trigger.FingerprintTriggerKey -import io.github.sds100.keymapper.trigger.FloatingButtonKey -import io.github.sds100.keymapper.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.trigger.Trigger -import io.github.sds100.keymapper.trigger.TriggerKey -import io.github.sds100.keymapper.trigger.TriggerKeyDevice -import io.github.sds100.keymapper.trigger.TriggerMode +import io.github.sds100.keymapper.mapping.trigger.AssistantTriggerKey +import io.github.sds100.keymapper.mapping.trigger.AssistantTriggerType +import io.github.sds100.keymapper.mapping.trigger.FingerprintTriggerKey +import io.github.sds100.keymapper.mapping.trigger.FloatingButtonKey +import io.github.sds100.keymapper.mapping.trigger.KeyEventDetectionSource +import io.github.sds100.keymapper.mapping.trigger.Trigger +import io.github.sds100.keymapper.mapping.trigger.TriggerKey +import io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice +import io.github.sds100.keymapper.mapping.trigger.TriggerMode import io.github.sds100.keymapper.base.util.ServiceEvent import io.github.sds100.keymapper.base.util.firstBlocking import io.github.sds100.keymapper.base.util.moveElement @@ -363,7 +363,7 @@ class ConfigKeyMapUseCaseController @Inject constructor( // Check whether the trigger already contains the key because if so // then it must be converted to a sequence trigger. val containsKey = trigger.keys - .mapNotNull { it as? io.github.sds100.keymapper.trigger.KeyCodeTriggerKey } + .mapNotNull { it as? KeyCodeTriggerKey } .any { keyToCompare -> keyToCompare.keyCode == keyCode && keyToCompare.device.isSameDevice(device) } @@ -375,7 +375,7 @@ class ConfigKeyMapUseCaseController @Inject constructor( consumeKeyEvent = false } - val triggerKey = io.github.sds100.keymapper.trigger.KeyCodeTriggerKey( + val triggerKey = KeyCodeTriggerKey( keyCode = keyCode, device = device, clickType = clickType, @@ -449,7 +449,7 @@ class ConfigKeyMapUseCaseController @Inject constructor( when (key) { // You can't mix assistant trigger types in a parallel trigger because there is no notion of a "down" key event, which means they can't be pressed at the same time is AssistantTriggerKey, is FingerprintTriggerKey -> 0 - is io.github.sds100.keymapper.trigger.KeyCodeTriggerKey -> Pair( + is KeyCodeTriggerKey -> Pair( key.keyCode, key.device, ) @@ -553,7 +553,7 @@ class ConfigKeyMapUseCaseController @Inject constructor( override fun setTriggerKeyDevice(keyUid: String, device: TriggerKeyDevice) { editTriggerKey(keyUid) { key -> - if (key is io.github.sds100.keymapper.trigger.KeyCodeTriggerKey) { + if (key is KeyCodeTriggerKey) { key.copy(device = device) } else { key @@ -563,7 +563,7 @@ class ConfigKeyMapUseCaseController @Inject constructor( override fun setTriggerKeyConsumeKeyEvent(keyUid: String, consumeKeyEvent: Boolean) { editTriggerKey(keyUid) { key -> - if (key is io.github.sds100.keymapper.trigger.KeyCodeTriggerKey) { + if (key is KeyCodeTriggerKey) { key.copy(consumeEvent = consumeKeyEvent) } else { key @@ -789,7 +789,7 @@ class ConfigKeyMapUseCaseController @Inject constructor( false } else { trigger.keys - .mapNotNull { it as? io.github.sds100.keymapper.trigger.KeyCodeTriggerKey } + .mapNotNull { it as? KeyCodeTriggerKey } .any { InputEventUtils.isDpadKeyCode(it.keyCode) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/AssistantTriggerKey.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/AssistantTriggerKey.kt index 0d4b0691e7..4fcccf79f1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/AssistantTriggerKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import io.github.sds100.keymapper.data.entities.AssistantTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerType.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/AssistantTriggerType.kt similarity index 92% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerType.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/AssistantTriggerType.kt index c7ec0a2b9e..2e0725d12a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerType.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/AssistantTriggerType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger /** * The type of assistant that triggers an assistant trigger key. The voice assistant diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/BaseConfigTriggerViewModel.kt similarity index 70% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/BaseConfigTriggerViewModel.kt index 5bb4883171..b823b8d7a2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/BaseConfigTriggerViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import android.view.KeyEvent import androidx.compose.material.icons.Icons @@ -66,11 +66,11 @@ abstract class BaseConfigTriggerViewModel( private val coroutineScope: CoroutineScope, private val onboarding: OnboardingUseCase, private val config: ConfigKeyMapUseCase, - private val recordTrigger: RecordTriggerUseCase, + private val recordTrigger: io.github.sds100.keymapper.mapping.trigger.RecordTriggerUseCase, private val createKeyMapShortcut: CreateKeyMapShortcutUseCase, private val displayKeyMap: DisplayKeyMapUseCase, private val purchasingManager: PurchasingManager, - private val setupGuiKeyboard: SetupGuiKeyboardUseCase, + private val setupGuiKeyboard: io.github.sds100.keymapper.mapping.trigger.SetupGuiKeyboardUseCase, private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, ) : ResourceProvider by resourceProvider, @@ -94,14 +94,14 @@ abstract class BaseConfigTriggerViewModel( fingerprintGesturesSupported.isSupported, purchasingManager.purchases, ) { isFingerprintGesturesSupported, purchasesState -> - val newShortcuts = mutableSetOf>() + val newShortcuts = mutableSetOf>() if (isFingerprintGesturesSupported == true) { newShortcuts.add( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.Fingerprint), text = getString(R.string.trigger_key_shortcut_add_fingerprint_gesture), - data = TriggerKeyShortcut.FINGERPRINT_GESTURE, + data = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyShortcut.FINGERPRINT_GESTURE, ), ) } @@ -113,7 +113,7 @@ abstract class BaseConfigTriggerViewModel( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.Assistant), text = getString(R.string.trigger_key_shortcut_add_assistant), - data = TriggerKeyShortcut.ASSISTANT, + data = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyShortcut.ASSISTANT, ), ) } @@ -123,7 +123,7 @@ abstract class BaseConfigTriggerViewModel( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.BubbleChart), text = getString(R.string.trigger_key_shortcut_add_floating_button), - data = TriggerKeyShortcut.FLOATING_BUTTON, + data = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyShortcut.FLOATING_BUTTON, ), ) } @@ -133,34 +133,36 @@ abstract class BaseConfigTriggerViewModel( newShortcuts } - private val _state: MutableStateFlow> = + private val _state: MutableStateFlow> = MutableStateFlow(State.Loading) - val state: StateFlow> = _state.asStateFlow() + val state: StateFlow> = _state.asStateFlow() - val recordTriggerState: StateFlow = recordTrigger.state.stateIn( + val recordTriggerState: StateFlow = recordTrigger.state.stateIn( coroutineScope, SharingStarted.Lazily, - RecordTriggerState.Idle, + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.RecordTriggerState.Idle, ) var showAdvancedTriggersBottomSheet: Boolean by mutableStateOf(false) var showDpadTriggerSetupBottomSheet: Boolean by mutableStateOf(false) var showNoKeysRecordedBottomSheet: Boolean by mutableStateOf(false) - val setupGuiKeyboardState: StateFlow = combine( + val setupGuiKeyboardState: StateFlow = combine( setupGuiKeyboard.isInstalled, setupGuiKeyboard.isEnabled, setupGuiKeyboard.isChosen, ) { isInstalled, isEnabled, isChosen -> - SetupGuiKeyboardState( + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.SetupGuiKeyboardState( isInstalled, isEnabled, isChosen, ) - }.stateIn(coroutineScope, SharingStarted.Lazily, SetupGuiKeyboardState.DEFAULT) + }.stateIn(coroutineScope, SharingStarted.Lazily, + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.SetupGuiKeyboardState.Companion.DEFAULT + ) val triggerKeyOptionsUid = MutableStateFlow(null) - val triggerKeyOptionsState: StateFlow = + val triggerKeyOptionsState: StateFlow = combine(config.keyMap, triggerKeyOptionsUid, transform = ::buildKeyOptionsUiState) .stateIn(coroutineScope, SharingStarted.Lazily, null) @@ -220,7 +222,7 @@ abstract class BaseConfigTriggerViewModel( // "button not detected" bottom sheet isn't shown when // the screen is opened. recordTrigger.state.drop(1).onEach { state -> - if (state is RecordTriggerState.Completed && + if (state is io.github.sds100.keymapper.mapping.trigger.RecordTriggerState.Completed && state.recordedKeys.isEmpty() && onboarding.showNoKeysDetectedBottomSheet.first() && !isRecordingCompletionUserInitiated @@ -233,8 +235,8 @@ abstract class BaseConfigTriggerViewModel( }.launchIn(coroutineScope) } - open fun onClickTriggerKeyShortcut(shortcut: TriggerKeyShortcut) { - if (shortcut == TriggerKeyShortcut.FINGERPRINT_GESTURE) { + open fun onClickTriggerKeyShortcut(shortcut: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyShortcut) { + if (shortcut == _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyShortcut.FINGERPRINT_GESTURE) { coroutineScope.launch { val listItems = listOf( FingerprintGestureType.SWIPE_DOWN to getString(R.string.fingerprint_gesture_down), @@ -259,16 +261,16 @@ abstract class BaseConfigTriggerViewModel( private fun buildUiState( keyMapState: State, showDeviceDescriptors: Boolean, - triggerKeyShortcuts: Set>, - triggerErrorSnapshot: TriggerErrorSnapshot, + triggerKeyShortcuts: Set>, + triggerErrorSnapshot: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerErrorSnapshot, showRecordTriggerTapTarget: Boolean, showAdvancedTriggersTapTarget: Boolean, - ): State { + ): State<_root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState> { return keyMapState.mapData { keyMap -> val trigger = keyMap.trigger if (trigger.keys.isEmpty()) { - return@mapData ConfigTriggerState.Empty( + return@mapData _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty( triggerKeyShortcuts, showRecordTriggerTapTarget = showRecordTriggerTapTarget, showAdvancedTriggersTapTarget = showAdvancedTriggersTapTarget, @@ -304,18 +306,18 @@ abstract class BaseConfigTriggerViewModel( clickTypeButtons.add(ClickType.DOUBLE_PRESS) } - if (trigger.keys.isNotEmpty() && trigger.mode !is TriggerMode.Sequence && trigger.keys.all { it.allowedLongPress }) { + if (trigger.keys.isNotEmpty() && trigger.mode !is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Sequence && trigger.keys.all { it.allowedLongPress }) { clickTypeButtons.add(ClickType.SHORT_PRESS) clickTypeButtons.add(ClickType.LONG_PRESS) } val checkedClickType: ClickType? = when { - trigger.mode is TriggerMode.Parallel -> trigger.mode.clickType + trigger.mode is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Parallel -> trigger.mode.clickType trigger.keys.size == 1 -> trigger.keys[0].clickType else -> null } - ConfigTriggerState.Loaded( + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Loaded( triggerKeys = triggerKeys, isReorderingEnabled = isReorderingEnabled, clickTypeButtons = clickTypeButtons, @@ -332,7 +334,7 @@ abstract class BaseConfigTriggerViewModel( private suspend fun buildKeyOptionsUiState( keyMapState: State, triggerKeyUid: String?, - ): TriggerKeyOptionsState? { + ): _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState? { if (triggerKeyUid == null) { return null } @@ -344,14 +346,14 @@ abstract class BaseConfigTriggerViewModel( val key = trigger.keys.find { it.uid == triggerKeyUid } ?: return null - val showClickTypes = trigger.mode is TriggerMode.Sequence + val showClickTypes = trigger.mode is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Sequence when (key) { - is KeyCodeTriggerKey -> { + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.KeyCodeTriggerKey -> { val showDeviceDescriptors = displayKeyMap.showDeviceDescriptors.first() val deviceListItems: List = config.getAvailableTriggerKeyDevices() - .map { device: TriggerKeyDevice -> + .map { device: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice -> buildDeviceListItem( device = device, showDeviceDescriptors = showDeviceDescriptors, @@ -359,7 +361,7 @@ abstract class BaseConfigTriggerViewModel( ) } - return TriggerKeyOptionsState.KeyCode( + return _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.KeyCode( doNotRemapChecked = !key.consumeEvent, clickType = key.clickType, showClickTypes = showClickTypes, @@ -367,23 +369,23 @@ abstract class BaseConfigTriggerViewModel( ) } - is AssistantTriggerKey -> { - return TriggerKeyOptionsState.Assistant( + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.AssistantTriggerKey -> { + return _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.Assistant( assistantType = key.type, clickType = key.clickType, ) } - is FloatingButtonKey -> { - return TriggerKeyOptionsState.FloatingButton( + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.FloatingButtonKey -> { + return _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.FloatingButton( clickType = key.clickType, showClickTypes = showClickTypes, isPurchased = displayKeyMap.isFloatingButtonsPurchased(), ) } - is FingerprintTriggerKey -> { - return TriggerKeyOptionsState.FingerprintGesture( + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.FingerprintTriggerKey -> { + return _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.FingerprintGesture( gestureType = key.type, clickType = key.clickType, ) @@ -394,24 +396,24 @@ abstract class BaseConfigTriggerViewModel( } private fun buildDeviceListItem( - device: TriggerKeyDevice, + device: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice, isChecked: Boolean, showDeviceDescriptors: Boolean, ): CheckBoxListItem { return when (device) { - TriggerKeyDevice.Any -> CheckBoxListItem( - id = DEVICE_ID_ANY, + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.Any -> CheckBoxListItem( + id = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_ANY, isChecked = isChecked, label = getString(R.string.any_device), ) - TriggerKeyDevice.Internal -> CheckBoxListItem( - id = DEVICE_ID_INTERNAL, + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.Internal -> CheckBoxListItem( + id = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_INTERNAL, isChecked = isChecked, label = getString(R.string.this_device), ) - is TriggerKeyDevice.External -> { + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.External -> { val name = if (showDeviceDescriptors) { InputDeviceUtils.appendDeviceDescriptorToName( device.descriptor, @@ -430,8 +432,8 @@ abstract class BaseConfigTriggerViewModel( } } - private suspend fun onTriggerModeChanged(mode: TriggerMode) { - if (mode is TriggerMode.Parallel) { + private suspend fun onTriggerModeChanged(mode: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode) { + if (mode is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Parallel) { if (onboarding.shownParallelTriggerOrderExplanation) { return } @@ -445,7 +447,7 @@ abstract class BaseConfigTriggerViewModel( onboarding.shownParallelTriggerOrderExplanation = true } - if (mode is TriggerMode.Sequence) { + if (mode is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Sequence) { if (onboarding.shownSequenceTriggerExplanation) { return } @@ -461,7 +463,7 @@ abstract class BaseConfigTriggerViewModel( } } - private suspend fun onRecordTriggerKey(key: RecordedKey) { + private suspend fun onRecordTriggerKey(key: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.RecordedKey) { // Add the trigger key before showing the dialog so it doesn't // need to be dismissed before it is added. config.addKeyCodeTriggerKey(key.keyCode, key.device, key.detectionSource) @@ -503,7 +505,7 @@ abstract class BaseConfigTriggerViewModel( // Issue #491. Some key codes can only be detected through an input method. This will // be shown to the user by showing a keyboard icon next to the trigger key name so // explain this to the user. - if (key.detectionSource == KeyEventDetectionSource.INPUT_METHOD && displayKeyMap.showTriggerKeyboardIconExplanation.first()) { + if (key.detectionSource == _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.KeyEventDetectionSource.INPUT_METHOD && displayKeyMap.showTriggerKeyboardIconExplanation.first()) { val dialog = PopupUi.Dialog( title = getString(R.string.dialog_title_keyboard_icon_means_ime_detection), message = getString(R.string.dialog_message_keyboard_icon_means_ime_detection), @@ -557,15 +559,18 @@ abstract class BaseConfigTriggerViewModel( fun onSelectTriggerKeyDevice(descriptor: String) { triggerKeyOptionsUid.value?.let { triggerKeyUid -> val device = when (descriptor) { - DEVICE_ID_ANY -> TriggerKeyDevice.Any - DEVICE_ID_INTERNAL -> TriggerKeyDevice.Internal + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_ANY -> _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.Any + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_INTERNAL -> _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.Internal else -> { val device = config.getAvailableTriggerKeyDevices() - .filterIsInstance() + .filterIsInstance<_root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.External>() .firstOrNull { it.descriptor == descriptor } ?: return - TriggerKeyDevice.External(device.descriptor, device.name) + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.External( + device.descriptor, + device.name + ) } } @@ -576,7 +581,7 @@ abstract class BaseConfigTriggerViewModel( } } - fun onSelectTriggerKeyAssistantType(type: AssistantTriggerType) { + fun onSelectTriggerKeyAssistantType(type: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.AssistantTriggerType) { triggerKeyOptionsUid.value?.let { triggerKeyUid -> config.setAssistantTriggerKeyType(triggerKeyUid, type) } @@ -593,13 +598,13 @@ abstract class BaseConfigTriggerViewModel( val recordTriggerState = recordTrigger.state.firstOrNull() ?: return@launch val result = when (recordTriggerState) { - is RecordTriggerState.CountingDown -> { + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.RecordTriggerState.CountingDown -> { isRecordingCompletionUserInitiated = true recordTrigger.stopRecording() } - is RecordTriggerState.Completed, - RecordTriggerState.Idle, + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.RecordTriggerState.Completed, + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.RecordTriggerState.Idle, -> recordTrigger.startRecording() } @@ -626,10 +631,10 @@ abstract class BaseConfigTriggerViewModel( } } - open fun onTriggerErrorClick(error: TriggerError) { + open fun onTriggerErrorClick(error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError) { coroutineScope.launch { when (error) { - TriggerError.DND_ACCESS_DENIED -> + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError.DND_ACCESS_DENIED -> ViewModelHelper.showDialogExplainingDndAccessBeingUnavailable( resourceProvider = this@BaseConfigTriggerViewModel, popupViewModel = this@BaseConfigTriggerViewModel, @@ -637,7 +642,7 @@ abstract class BaseConfigTriggerViewModel( fixError = { displayKeyMap.fixTriggerError(error) }, ) - TriggerError.DPAD_IME_NOT_SELECTED -> { + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError.DPAD_IME_NOT_SELECTED -> { showDpadTriggerSetupBottomSheet = true } @@ -650,27 +655,27 @@ abstract class BaseConfigTriggerViewModel( keyMap: KeyMap, showDeviceDescriptors: Boolean, shortcutCount: Int, - triggerErrorSnapshot: TriggerErrorSnapshot, - ): List { + triggerErrorSnapshot: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerErrorSnapshot, + ): List<_root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel> { val trigger = keyMap.trigger return trigger.keys.mapIndexed { index, key -> val error = triggerErrorSnapshot.getTriggerError(keyMap, key) - val clickType = if (trigger.mode is TriggerMode.Parallel) { + val clickType = if (trigger.mode is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Parallel) { trigger.mode.clickType } else { key.clickType } val linkType = when { - trigger.mode is TriggerMode.Sequence && (index < trigger.keys.lastIndex) -> LinkType.ARROW + trigger.mode is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Sequence && (index < trigger.keys.lastIndex) -> LinkType.ARROW (index < trigger.keys.lastIndex) -> LinkType.PLUS else -> LinkType.HIDDEN } when (key) { - is AssistantTriggerKey -> TriggerKeyListItemModel.Assistant( + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.AssistantTriggerKey -> _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.Assistant( id = key.uid, assistantType = key.type, clickType = clickType, @@ -678,7 +683,7 @@ abstract class BaseConfigTriggerViewModel( error = error, ) - is FingerprintTriggerKey -> TriggerKeyListItemModel.FingerprintGesture( + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.FingerprintTriggerKey -> _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FingerprintGesture( id = key.uid, gestureType = key.type, clickType = clickType, @@ -686,7 +691,7 @@ abstract class BaseConfigTriggerViewModel( error = error, ) - is KeyCodeTriggerKey -> TriggerKeyListItemModel.KeyCode( + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.KeyCodeTriggerKey -> _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.KeyCode( id = key.uid, keyName = getTriggerKeyName(key), clickType = clickType, @@ -698,15 +703,15 @@ abstract class BaseConfigTriggerViewModel( error = error, ) - is FloatingButtonKey -> { + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.FloatingButtonKey -> { if (key.button == null) { - TriggerKeyListItemModel.FloatingButtonDeleted( + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButtonDeleted( id = key.uid, clickType = clickType, linkType = linkType, ) } else { - TriggerKeyListItemModel.FloatingButton( + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButton( id = key.uid, buttonName = key.button.appearance.text, layoutName = key.button.layoutName, @@ -721,7 +726,7 @@ abstract class BaseConfigTriggerViewModel( } private fun getTriggerKeyExtraInfo( - key: KeyCodeTriggerKey, + key: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.KeyCodeTriggerKey, showDeviceDescriptors: Boolean, ): String { return buildString { @@ -734,11 +739,11 @@ abstract class BaseConfigTriggerViewModel( } } - private fun getTriggerKeyName(key: KeyCodeTriggerKey): String { + private fun getTriggerKeyName(key: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.KeyCodeTriggerKey): String { return buildString { append(InputEventUtils.keyCodeToString(key.keyCode)) - if (key.detectionSource == KeyEventDetectionSource.INPUT_METHOD) { + if (key.detectionSource == _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.KeyEventDetectionSource.INPUT_METHOD) { val midDot = getString(R.string.middot) append(" $midDot ${getString(R.string.flag_detect_from_input_method)}") } @@ -746,12 +751,12 @@ abstract class BaseConfigTriggerViewModel( } private fun getTriggerKeyDeviceName( - device: TriggerKeyDevice, + device: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice, showDeviceDescriptors: Boolean, ): String = when (device) { - is TriggerKeyDevice.Internal -> getString(R.string.this_device) - is TriggerKeyDevice.Any -> getString(R.string.any_device) - is TriggerKeyDevice.External -> { + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.Internal -> getString(R.string.this_device) + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.Any -> getString(R.string.any_device) + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.External -> { if (showDeviceDescriptors) { InputDeviceUtils.appendDeviceDescriptorToName( device.descriptor, @@ -795,32 +800,32 @@ abstract class BaseConfigTriggerViewModel( } sealed class ConfigTriggerState { - abstract val shortcuts: Set> + abstract val shortcuts: Set> abstract val showAdvancedTriggersTapTarget: Boolean data class Empty( - override val shortcuts: Set> = emptySet(), + override val shortcuts: Set> = emptySet(), val showRecordTriggerTapTarget: Boolean = false, override val showAdvancedTriggersTapTarget: Boolean = false, - ) : ConfigTriggerState() + ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState() data class Loaded( - val triggerKeys: List = emptyList(), + val triggerKeys: List<_root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel> = emptyList(), val isReorderingEnabled: Boolean = false, val clickTypeButtons: Set = emptySet(), val checkedClickType: ClickType? = null, - val checkedTriggerMode: TriggerMode = TriggerMode.Undefined, + val checkedTriggerMode: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Undefined, val triggerModeButtonsEnabled: Boolean = false, val triggerModeButtonsVisible: Boolean = false, - override val shortcuts: Set> = emptySet(), + override val shortcuts: Set> = emptySet(), override val showAdvancedTriggersTapTarget: Boolean = false, - ) : ConfigTriggerState() + ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState() } sealed class TriggerKeyListItemModel { abstract val id: String abstract val linkType: LinkType - abstract val error: TriggerError? + abstract val error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError? abstract val clickType: ClickType data class KeyCode( @@ -829,24 +834,24 @@ sealed class TriggerKeyListItemModel { val keyName: String, override val clickType: ClickType, val extraInfo: String?, - override val error: TriggerError?, - ) : TriggerKeyListItemModel() + override val error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError?, + ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel() data class Assistant( override val id: String, override val linkType: LinkType, - val assistantType: AssistantTriggerType, + val assistantType: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.AssistantTriggerType, override val clickType: ClickType, - override val error: TriggerError?, - ) : TriggerKeyListItemModel() + override val error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError?, + ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel() data class FingerprintGesture( override val id: String, override val linkType: LinkType, val gestureType: FingerprintGestureType, override val clickType: ClickType, - override val error: TriggerError?, - ) : TriggerKeyListItemModel() + override val error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError?, + ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel() data class FloatingButton( override val id: String, @@ -854,15 +859,16 @@ sealed class TriggerKeyListItemModel { val buttonName: String, val layoutName: String, override val clickType: ClickType, - override val error: TriggerError?, - ) : TriggerKeyListItemModel() + override val error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError?, + ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel() data class FloatingButtonDeleted( override val id: String, override val linkType: LinkType, override val clickType: ClickType, - ) : TriggerKeyListItemModel() { - override val error: TriggerError = TriggerError.FLOATING_BUTTON_DELETED + ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel() { + override val error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError = + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError.FLOATING_BUTTON_DELETED } } @@ -876,14 +882,14 @@ sealed class TriggerKeyOptionsState { override val clickType: ClickType, override val showClickTypes: Boolean, val devices: List, - ) : TriggerKeyOptionsState() { + ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState() { override val showLongPressClickType: Boolean = true } data class Assistant( - val assistantType: AssistantTriggerType, + val assistantType: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.AssistantTriggerType, override val clickType: ClickType, - ) : TriggerKeyOptionsState() { + ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState() { override val showClickTypes: Boolean = false override val showLongPressClickType: Boolean = false } @@ -891,7 +897,7 @@ sealed class TriggerKeyOptionsState { data class FingerprintGesture( val gestureType: FingerprintGestureType, override val clickType: ClickType, - ) : TriggerKeyOptionsState() { + ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState() { override val showClickTypes: Boolean = false override val showLongPressClickType: Boolean = false } @@ -900,7 +906,7 @@ sealed class TriggerKeyOptionsState { override val clickType: ClickType, override val showClickTypes: Boolean, val isPurchased: Boolean, - ) : TriggerKeyOptionsState() { + ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState() { override val showLongPressClickType: Boolean = true } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/ChooseTriggerKeyDeviceModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/ChooseTriggerKeyDeviceModel.kt similarity index 69% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/ChooseTriggerKeyDeviceModel.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/ChooseTriggerKeyDeviceModel.kt index efc216cd3f..3f29a0ac49 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/ChooseTriggerKeyDeviceModel.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/ChooseTriggerKeyDeviceModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger data class ChooseTriggerKeyDeviceModel( val triggerKeyUid: String, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/FingerprintTriggerKey.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/FingerprintTriggerKey.kt index a6c7c70de8..ce20873635 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/FingerprintTriggerKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import io.github.sds100.keymapper.data.entities.FingerprintTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/FloatingButtonKey.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/FloatingButtonKey.kt index 6cba7f44c5..abf0718b03 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/FloatingButtonKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout import io.github.sds100.keymapper.data.entities.FloatingButtonKeyEntity diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyCodeTriggerKey.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyCodeTriggerKey.kt index df48d78f34..586bca32a6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyCodeTriggerKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyEventDetectionSource.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyEventDetectionSource.kt similarity index 62% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyEventDetectionSource.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyEventDetectionSource.kt index c231beff8a..e33066be6f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyEventDetectionSource.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyEventDetectionSource.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger enum class KeyEventDetectionSource { ACCESSIBILITY_SERVICE, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyMapListItemModel.kt similarity index 93% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyMapListItemModel.kt index 704cbf4730..eaa22d1dd1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyMapListItemModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import androidx.compose.ui.graphics.vector.ImageVector import io.github.sds100.keymapper.constraints.ConstraintMode diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerButtonRow.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerButtonRow.kt index a4af047bb0..4e2bd778cd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerButtonRow.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerState.kt similarity index 86% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerState.kt index dcab40a81d..bf00e7427c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger sealed class RecordTriggerState { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerUseCase.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerUseCase.kt index ea4b0b6b91..1ac4109bc2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import android.view.KeyEvent import io.github.sds100.keymapper.common.util.result.Result diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordedKey.kt similarity index 72% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordedKey.kt index cfc961f291..956b332678 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordedKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger data class RecordedKey( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardBottomSheet.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardBottomSheet.kt index e93d9c1a7b..9319718a10 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardState.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardState.kt similarity index 87% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardState.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardState.kt index 4870c06627..9601578120 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardState.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger data class SetupGuiKeyboardState( val isKeyboardInstalled: Boolean, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardUseCase.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardUseCase.kt index ad2e8cf1cf..2eac36c4d3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import io.github.sds100.keymapper.common.util.result.onSuccess import io.github.sds100.keymapper.system.apps.PackageInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/Trigger.kt similarity index 99% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/Trigger.kt index 84d287ad6e..194fc49cfc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/Trigger.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import io.github.sds100.keymapper.common.util.result.valueOrNull import io.github.sds100.keymapper.data.entities.AssistantTriggerKeyEntity diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerError.kt similarity index 92% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerError.kt index 8f20573b74..032adf039a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerError.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger enum class TriggerError(val isFixable: Boolean) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerErrorSnapshot.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerErrorSnapshot.kt index 0690e9ebf0..107a758ae4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerErrorSnapshot.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import android.os.Build import android.view.KeyEvent diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKey.kt similarity index 95% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKey.kt index 1239059181..88f49863b2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyDevice.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyDevice.kt index e99b96af69..2a35105cfa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyDevice.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import io.github.sds100.keymapper.system.devices.InputDeviceInfo import kotlinx.serialization.Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyListItem.kt similarity index 85% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyListItem.kt index be421a9fb0..f3436fa8ef 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.draggable @@ -50,7 +50,7 @@ import io.github.sds100.keymapper.base.util.ui.compose.DragDropState @Composable fun TriggerKeyListItem( modifier: Modifier = Modifier, - model: TriggerKeyListItemModel, + model: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel, index: Int, isDraggingEnabled: Boolean = false, isDragging: Boolean, @@ -109,9 +109,9 @@ fun TriggerKeyListItem( // To save space only show the icon if there is no error. if (model.error == null) { val icon = when (model) { - is TriggerKeyListItemModel.Assistant -> Icons.Outlined.Assistant - is TriggerKeyListItemModel.FloatingButton -> Icons.Outlined.BubbleChart - is TriggerKeyListItemModel.FingerprintGesture -> Icons.Outlined.Fingerprint + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.Assistant -> Icons.Outlined.Assistant + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButton -> Icons.Outlined.BubbleChart + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FingerprintGesture -> Icons.Outlined.Fingerprint else -> null } @@ -126,22 +126,22 @@ fun TriggerKeyListItem( } val primaryText = when (model) { - is TriggerKeyListItemModel.Assistant -> when (model.assistantType) { + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.Assistant -> when (model.assistantType) { AssistantTriggerType.ANY -> stringResource(R.string.assistant_any_trigger_name) AssistantTriggerType.VOICE -> stringResource(R.string.assistant_voice_trigger_name) AssistantTriggerType.DEVICE -> stringResource(R.string.assistant_device_trigger_name) } - is TriggerKeyListItemModel.FloatingButton -> stringResource( + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButton -> stringResource( R.string.trigger_key_floating_button_description, model.buttonName, ) - is TriggerKeyListItemModel.KeyCode -> model.keyName + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.KeyCode -> model.keyName - is TriggerKeyListItemModel.FloatingButtonDeleted -> stringResource(R.string.trigger_error_floating_button_deleted_title) + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButtonDeleted -> stringResource(R.string.trigger_error_floating_button_deleted_title) - is TriggerKeyListItemModel.FingerprintGesture -> when (model.gestureType) { + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FingerprintGesture -> when (model.gestureType) { FingerprintGestureType.SWIPE_UP -> stringResource(R.string.trigger_key_fingerprint_gesture_up) FingerprintGestureType.SWIPE_DOWN -> stringResource(R.string.trigger_key_fingerprint_gesture_down) FingerprintGestureType.SWIPE_LEFT -> stringResource(R.string.trigger_key_fingerprint_gesture_left) @@ -159,8 +159,8 @@ fun TriggerKeyListItem( } val tertiaryText = when (model) { - is TriggerKeyListItemModel.KeyCode -> model.extraInfo - is TriggerKeyListItemModel.FloatingButton -> model.layoutName + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.KeyCode -> model.extraInfo + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButton -> model.layoutName else -> null } @@ -201,7 +201,7 @@ fun TriggerKeyListItem( } } - if (model !is TriggerKeyListItemModel.FloatingButtonDeleted) { + if (model !is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButtonDeleted) { IconButton(onClick = onEditClick) { Icon( imageVector = Icons.Outlined.Settings, @@ -324,7 +324,7 @@ private fun ErrorTextColumn( @Composable private fun KeyCodePreview() { TriggerKeyListItem( - model = TriggerKeyListItemModel.KeyCode( + model = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.KeyCode( id = "id", keyName = "Volume Up", clickType = ClickType.SHORT_PRESS, @@ -342,7 +342,7 @@ private fun KeyCodePreview() { @Composable private fun NoDragPreview() { TriggerKeyListItem( - model = TriggerKeyListItemModel.KeyCode( + model = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.KeyCode( id = "id", keyName = "Volume Up", clickType = ClickType.LONG_PRESS, @@ -360,7 +360,7 @@ private fun NoDragPreview() { @Composable private fun AssistantPreview() { TriggerKeyListItem( - model = TriggerKeyListItemModel.Assistant( + model = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.Assistant( id = "id", assistantType = AssistantTriggerType.DEVICE, clickType = ClickType.SHORT_PRESS, @@ -377,7 +377,7 @@ private fun AssistantPreview() { @Composable private fun AssistantErrorPreview() { TriggerKeyListItem( - model = TriggerKeyListItemModel.Assistant( + model = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.Assistant( id = "id", assistantType = AssistantTriggerType.DEVICE, clickType = ClickType.DOUBLE_PRESS, @@ -394,7 +394,7 @@ private fun AssistantErrorPreview() { @Composable private fun FloatingButtonPreview() { TriggerKeyListItem( - model = TriggerKeyListItemModel.FloatingButton( + model = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButton( id = "id", buttonName = "😎", layoutName = "Gaming", @@ -412,7 +412,7 @@ private fun FloatingButtonPreview() { @Composable private fun FloatingButtonErrorPreview() { TriggerKeyListItem( - model = TriggerKeyListItemModel.FloatingButtonDeleted( + model = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButtonDeleted( id = "id", clickType = ClickType.DOUBLE_PRESS, linkType = LinkType.ARROW, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyOptionsBottomSheet.kt similarity index 92% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyOptionsBottomSheet.kt index 06f38ec649..0c2350ada5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyOptionsBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -49,7 +49,7 @@ import kotlinx.coroutines.launch fun TriggerKeyOptionsBottomSheet( modifier: Modifier = Modifier, sheetState: SheetState, - state: TriggerKeyOptionsState, + state: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState, onDismissRequest: () -> Unit = {}, onCheckDoNotRemap: (Boolean) -> Unit = {}, onSelectClickType: (ClickType) -> Unit = {}, @@ -96,7 +96,7 @@ fun TriggerKeyOptionsBottomSheet( Spacer(modifier = Modifier.height(8.dp)) - if (state is TriggerKeyOptionsState.KeyCode) { + if (state is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.KeyCode) { CheckBoxText( modifier = Modifier.padding(8.dp), text = stringResource(R.string.flag_dont_override_default_action), @@ -146,7 +146,7 @@ fun TriggerKeyOptionsBottomSheet( } } - if (state is TriggerKeyOptionsState.KeyCode) { + if (state is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.KeyCode) { Text( modifier = Modifier.padding(horizontal = 16.dp), text = stringResource(R.string.trigger_key_device_header), @@ -161,7 +161,7 @@ fun TriggerKeyOptionsBottomSheet( onSelected = { onSelectDevice(device.id) }, ) } - } else if (state is TriggerKeyOptionsState.Assistant) { + } else if (state is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.Assistant) { Text( modifier = Modifier.padding(horizontal = 16.dp), text = stringResource(R.string.trigger_key_assistant_type_header), @@ -188,7 +188,7 @@ fun TriggerKeyOptionsBottomSheet( isSelected = state.assistantType == AssistantTriggerType.VOICE, onSelected = { onSelectAssistantType(AssistantTriggerType.VOICE) }, ) - } else if (state is TriggerKeyOptionsState.FingerprintGesture) { + } else if (state is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.FingerprintGesture) { Text( modifier = Modifier.padding(horizontal = 16.dp), text = stringResource(R.string.trigger_key_fingerprint_gesture_type_header), @@ -226,7 +226,7 @@ fun TriggerKeyOptionsBottomSheet( Spacer(Modifier.height(8.dp)) - if (state is TriggerKeyOptionsState.FloatingButton && state.isPurchased) { + if (state is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.FloatingButton && state.isPurchased) { Row( modifier = Modifier .fillMaxWidth() @@ -296,7 +296,7 @@ private fun Preview() { TriggerKeyOptionsBottomSheet( sheetState = sheetState, - state = TriggerKeyOptionsState.KeyCode( + state = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.KeyCode( doNotRemapChecked = true, clickType = ClickType.DOUBLE_PRESS, showClickTypes = true, @@ -330,7 +330,7 @@ private fun AssistantPreview() { TriggerKeyOptionsBottomSheet( sheetState = sheetState, - state = TriggerKeyOptionsState.Assistant( + state = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.Assistant( assistantType = AssistantTriggerType.VOICE, clickType = ClickType.DOUBLE_PRESS, ), @@ -351,7 +351,7 @@ private fun FloatingButtonPreview() { TriggerKeyOptionsBottomSheet( sheetState = sheetState, - state = TriggerKeyOptionsState.FloatingButton( + state = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.FloatingButton( clickType = ClickType.SHORT_PRESS, showClickTypes = true, isPurchased = true, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyShortcut.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyShortcut.kt similarity index 65% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyShortcut.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyShortcut.kt index c94755cbeb..528e87b45a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyShortcut.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyShortcut.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger enum class TriggerKeyShortcut { ASSISTANT, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerMode.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerMode.kt index 7abf2853ab..ea81b09dd2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerMode.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerScreen.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt rename to mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerScreen.kt index b86809bfd9..19dea21f58 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt +++ b/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.trigger +package io.github.sds100.keymapper.mapping.trigger import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -185,7 +185,7 @@ private fun Loading(modifier: Modifier = Modifier) { @Composable private fun TriggerScreenVertical( modifier: Modifier = Modifier, - configState: ConfigTriggerState, + configState: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState, recordTriggerState: RecordTriggerState, onRemoveClick: (String) -> Unit = {}, onEditClick: (String) -> Unit = {}, @@ -204,7 +204,7 @@ private fun TriggerScreenVertical( Surface(modifier = modifier) { Column { when (configState) { - is ConfigTriggerState.Empty -> { + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty -> { Column( modifier = Modifier .weight(1f) @@ -238,7 +238,7 @@ private fun TriggerScreenVertical( } } - is ConfigTriggerState.Loaded -> { + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Loaded -> { val isCompact = isVerticalCompactLayout() Spacer(Modifier.height(8.dp)) @@ -292,7 +292,7 @@ private fun TriggerScreenVertical( onRecordTriggerClick = onRecordTriggerClick, recordTriggerState = recordTriggerState, onAdvancedTriggersClick = onAdvancedTriggersClick, - showRecordTriggerTapTarget = (configState as? ConfigTriggerState.Empty)?.showRecordTriggerTapTarget + showRecordTriggerTapTarget = (configState as? _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty)?.showRecordTriggerTapTarget ?: false, onRecordTriggerTapTargetCompleted = onRecordTriggerTapTargetCompleted, onSkipTapTarget = onSkipTapTarget, @@ -306,7 +306,7 @@ private fun TriggerScreenVertical( @Composable private fun TriggerScreenHorizontal( modifier: Modifier = Modifier, - configState: ConfigTriggerState, + configState: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState, recordTriggerState: RecordTriggerState, onRemoveClick: (String) -> Unit = {}, onEditClick: (String) -> Unit = {}, @@ -324,7 +324,7 @@ private fun TriggerScreenHorizontal( ) { Surface(modifier = modifier) { when (configState) { - is ConfigTriggerState.Empty -> Row { + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty -> Row { Text( modifier = Modifier .widthIn(max = 400.dp) @@ -364,7 +364,7 @@ private fun TriggerScreenHorizontal( onRecordTriggerClick = onRecordTriggerClick, recordTriggerState = recordTriggerState, onAdvancedTriggersClick = onAdvancedTriggersClick, - showRecordTriggerTapTarget = (configState as? ConfigTriggerState.Empty)?.showRecordTriggerTapTarget + showRecordTriggerTapTarget = (configState as? _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty)?.showRecordTriggerTapTarget ?: false, onRecordTriggerTapTargetCompleted = onRecordTriggerTapTargetCompleted, onSkipTapTarget = onSkipTapTarget, @@ -373,7 +373,7 @@ private fun TriggerScreenHorizontal( } } - is ConfigTriggerState.Loaded -> Row { + is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Loaded -> Row { TriggerList( modifier = Modifier .fillMaxHeight() @@ -445,7 +445,7 @@ private fun TriggerScreenHorizontal( @Composable private fun TriggerList( modifier: Modifier = Modifier, - triggerList: List, + triggerList: List<_root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel>, shortcuts: Set>, isReorderingEnabled: Boolean, onRemoveClick: (String) -> Unit, @@ -593,7 +593,7 @@ private fun TriggerModeRadioGroup( } private val sampleList = listOf( - TriggerKeyListItemModel.KeyCode( + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.KeyCode( id = "id1", keyName = "Volume Up", clickType = ClickType.SHORT_PRESS, @@ -601,7 +601,7 @@ private val sampleList = listOf( linkType = LinkType.ARROW, error = null, ), - TriggerKeyListItemModel.FloatingButton( + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButton( id = "id2", buttonName = "😎", layoutName = "Gaming", @@ -609,7 +609,7 @@ private val sampleList = listOf( linkType = LinkType.ARROW, error = null, ), - TriggerKeyListItemModel.Assistant( + _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.Assistant( id = "id3", assistantType = AssistantTriggerType.DEVICE, clickType = ClickType.DOUBLE_PRESS, @@ -618,7 +618,7 @@ private val sampleList = listOf( ), ) -private val previewState = ConfigTriggerState.Loaded( +private val previewState = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Loaded( triggerKeys = sampleList, isReorderingEnabled = true, clickTypeButtons = setOf( @@ -666,7 +666,7 @@ private fun VerticalPreviewTiny() { private fun VerticalEmptyPreview() { KeyMapperTheme { TriggerScreenVertical( - configState = ConfigTriggerState.Empty( + configState = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty( shortcuts = setOf( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.Fingerprint), @@ -696,7 +696,7 @@ private fun HorizontalPreview() { private fun HorizontalEmptyPreview() { KeyMapperTheme { TriggerScreenHorizontal( - configState = ConfigTriggerState.Empty( + configState = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty( shortcuts = setOf( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.Fingerprint), diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/NodeInteractionType.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/NodeInteractionType.kt similarity index 89% rename from base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/NodeInteractionType.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/NodeInteractionType.kt index 54af5aa671..6d22d64097 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/NodeInteractionType.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/NodeInteractionType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.actions.uielement +package io.github.sds100.keymapper.system.accessibility import android.view.accessibility.AccessibilityNodeInfo From 7d72d088b5622f6ddf4637bcbabfbcca09ffcf3f Mon Sep 17 00:00:00 2001 From: sds100 Date: Sat, 17 May 2025 20:32:43 +0200 Subject: [PATCH 18/71] #1711 WIP: refactor more --- api/build.gradle.kts | 3 +- .../api/LaunchKeyMapShortcutActivity.kt | 2 +- .../api/PauseMappingsBroadcastReceiver.kt | 4 +- .../api/TriggerKeyMapsBroadcastReceiver.kt | 2 +- app/build.gradle.kts | 1 + .../io/github/sds100/keymapper/Constants.kt | 7 - .../github/sds100/keymapper/KeyMapperApp.kt | 8 +- .../AccessibilityServiceController.kt | 3 +- .../accessibility/MyAccessibilityService.kt | 117 +++++++ base/build.gradle.kts | 4 - .../floating/ListFloatingLayoutsViewModel.kt | 6 +- .../keymaps/detection/KeyMapController.kt | 6 +- .../purchasing/PurchasingManagerImpl.kt | 6 +- .../trigger/ConfigTriggerViewModel.kt | 2 +- base/src/main/AndroidManifest.xml | 23 -- .../keymapper/base/ActivityViewModel.kt | 12 +- .../sds100/keymapper/base/AppHiltModule.kt | 4 +- .../sds100/keymapper/base/BaseMainActivity.kt | 6 +- .../sds100/keymapper/base}/actions/Action.kt | 8 +- .../keymapper/base}/actions/ActionCategory.kt | 2 +- .../keymapper/base}/actions/ActionData.kt | 3 +- .../base}/actions/ActionDataEntityMapper.kt | 18 +- .../base}/actions/ActionErrorSnapshot.kt | 8 +- .../keymapper/base}/actions/ActionId.kt | 2 +- .../keymapper/base/actions/ActionListItem.kt | 8 +- .../base/actions/ActionOptionsBottomSheet.kt | 16 +- .../keymapper/base/actions/ActionUiHelper.kt | 29 +- .../keymapper/base}/actions/ActionUtils.kt | 20 +- .../keymapper/base/actions/ActionsScreen.kt | 11 +- .../base/actions/ChooseActionFragment.kt | 10 +- .../base/actions/ChooseActionScreen.kt | 14 +- .../base/actions/ChooseActionViewModel.kt | 30 +- .../base/actions/ConfigActionsViewModel.kt | 47 ++- .../base/actions/CreateActionDelegate.kt | 29 +- .../base/actions/DisplayActionUseCase.kt | 5 +- .../actions/FlashlightActionBottomSheet.kt | 8 +- .../base}/actions/GetActionErrorUseCase.kt | 8 +- .../keymapper/base}/actions/HoldDownMode.kt | 2 +- .../base/actions/HttpRequestBottomSheet.kt | 3 +- .../base}/actions/IsActionSupportedUseCase.kt | 4 +- .../base}/actions/PerformActionsUseCase.kt | 36 +- .../keymapper/base}/actions/RepeatMode.kt | 2 +- .../base}/actions/TestActionUseCase.kt | 8 +- .../actions/keyevent/ChooseKeyCodeFragment.kt | 12 +- .../keyevent/ChooseKeyCodeViewModel.kt | 12 +- .../keyevent/ConfigKeyEventActionFragment.kt | 12 +- .../keyevent/ConfigKeyEventActionViewModel.kt | 31 +- .../actions/keyevent/ConfigKeyEventUseCase.kt | 2 +- .../pinchscreen/PinchPickCoordinateResult.kt | 2 +- .../PinchPickDisplayCoordinateFragment.kt | 9 +- .../PinchPickDisplayCoordinateViewModel.kt | 12 +- .../actions/sound/ChooseSoundFileFragment.kt | 6 +- .../actions/sound/ChooseSoundFileUseCase.kt | 6 +- .../actions/sound/ChooseSoundFileViewModel.kt | 20 +- .../base/actions/sound/SoundsManager.kt | 12 +- .../SwipePickDisplayCoordinateFragment.kt | 7 +- .../SwipePickDisplayCoordinateViewModel.kt | 10 +- .../tapscreen/PickCoordinateImageView.kt | 2 +- .../PickDisplayCoordinateFragment.kt | 7 +- .../PickDisplayCoordinateViewModel.kt | 10 +- .../uielement/ChooseUiElementScreen.kt | 10 +- .../uielement/InteractUiElementFragment.kt | 9 +- .../uielement/InteractUiElementScreen.kt | 18 +- .../uielement/InteractUiElementUseCase.kt | 12 +- .../uielement/InteractUiElementViewModel.kt | 34 +- .../keymapper/base/backup/BackupManager.kt | 25 +- .../backup/BackupRestoreMappingsUseCase.kt | 8 +- .../base/backup/RestoreKeyMapsActivity.kt | 2 +- .../base/backup/RestoreKeyMapsViewModel.kt | 8 +- .../constraints/ChooseConstraintFragment.kt | 13 +- .../constraints/ChooseConstraintScreen.kt | 11 +- .../constraints/ChooseConstraintViewModel.kt | 28 +- .../constraints/ConfigConstraintsViewModel.kt | 32 +- .../keymapper/base}/constraints/Constraint.kt | 6 +- .../base}/constraints/ConstraintDependency.kt | 2 +- .../constraints/ConstraintErrorSnapshot.kt | 6 +- .../base}/constraints/ConstraintId.kt | 2 +- .../base}/constraints/ConstraintListItem.kt | 6 +- .../constraints/ConstraintListItemModel.kt | 4 +- .../base/constraints/ConstraintMode.kt | 6 + .../base}/constraints/ConstraintSnapshot.kt | 4 +- .../base}/constraints/ConstraintState.kt | 2 +- .../base}/constraints/ConstraintUiHelper.kt | 12 +- .../base}/constraints/ConstraintUtils.kt | 4 +- .../base}/constraints/ConstraintsScreen.kt | 11 +- .../constraints/CreateConstraintUseCase.kt | 4 +- .../constraints/DetectConstraintsUseCase.kt | 2 +- .../constraints/DisplayConstraintUseCase.kt | 6 +- .../constraints/GetConstraintErrorUseCase.kt | 2 +- .../constraints/TimeConstraintBottomSheet.kt | 6 +- .../base/floating/FloatingButtonData.kt | 4 +- .../base/groups/GroupConstraintRow.kt | 8 +- .../base/groups/GroupListItemModel.kt | 2 +- .../sds100/keymapper/base/groups/GroupRow.kt | 4 +- .../keymapper/base/home/HomeFragment.kt | 6 +- .../base/home/HomeKeyMapListScreen.kt | 20 +- .../sds100/keymapper/base/home/HomeScreen.kt | 2 +- .../keymapper/base/home/HomeViewModel.kt | 17 +- .../keymapper/base/home/KeyMapListAppBar.kt | 14 +- .../base/home/SelectionBottomSheet.kt | 4 +- .../base/home/ShowHomeScreenAlertsUseCase.kt | 2 +- .../keymapper/base}/keymaps/ClickType.kt | 2 +- .../base}/keymaps/ConfigKeyMapFragment.kt | 8 +- .../keymaps/ConfigKeyMapOptionsViewModel.kt | 24 +- .../base}/keymaps/ConfigKeyMapScreen.kt | 8 +- .../base}/keymaps/ConfigKeyMapUseCase.kt | 23 +- .../base}/keymaps/ConfigKeyMapViewModel.kt | 15 +- .../keymaps/CreateKeyMapShortcutActivity.kt | 6 +- .../keymaps/CreateKeyMapShortcutScreen.kt | 14 +- .../keymaps/CreateKeyMapShortcutUseCase.kt | 6 +- .../keymaps/CreateKeyMapShortcutViewModel.kt | 12 +- .../base}/keymaps/DisplayKeyMapUseCase.kt | 27 +- .../FingerprintGesturesSupportedUseCase.kt | 6 +- .../keymaps/GetDefaultKeyMapOptionsUseCase.kt | 2 +- .../sds100/keymapper/base}/keymaps/KeyMap.kt | 2 +- .../base}/keymaps/KeyMapAppBarState.kt | 4 +- .../keymapper/base}/keymaps/KeyMapGroup.kt | 4 +- .../base}/keymaps/KeyMapListItemCreator.kt | 12 +- .../base}/keymaps/KeyMapListScreen.kt | 17 +- .../base}/keymaps/KeyMapListState.kt | 4 +- .../base}/keymaps/KeyMapListViewModel.kt | 52 +-- .../base}/keymaps/KeyMapOptionsScreen.kt | 16 +- .../base}/keymaps/KeyMapRepository.kt | 4 +- .../base}/keymaps/ListKeyMapsUseCase.kt | 12 +- .../base}/keymaps/PauseKeyMapsUseCase.kt | 6 +- .../keymapper/base/keymaps/ShortcutModel.kt | 9 + .../keymapper/base}/keymaps/ShortcutRow.kt | 6 +- .../base}/keymaps/SimpleMappingController.kt | 4 +- .../keymaps/detection/DetectKeyMapModel.kt | 2 +- .../keymaps/detection/DetectKeyMapsUseCase.kt | 11 +- .../DetectScreenOffKeyEventsController.kt | 6 +- .../detection/DpadMotionEventTracker.kt | 2 +- .../ParallelTriggerActionPerformer.kt | 4 +- .../SequenceTriggerActionPerformer.kt | 4 +- .../TriggerKeyMapFromOtherAppsController.kt | 2 +- .../base/logging/DisplayLogUseCase.kt | 8 +- .../base/logging/LogEntryListItem.kt | 2 +- .../keymapper/base/logging/LogFragment.kt | 10 +- .../keymapper/base/logging/LogRepository.kt | 2 +- .../keymapper/base/logging/LogViewModel.kt | 22 +- .../base/onboarding/OnboardingUseCase.kt | 16 +- .../base/purchasing/PurchasingError.kt | 2 +- .../base/purchasing/PurchasingManager.kt | 4 +- .../RerouteKeyEventsController.kt | 2 +- .../RerouteKeyEventsUseCase.kt | 4 +- .../Android11BugWorkaroundSettingsFragment.kt | 14 +- .../AutomaticallyChangeImeSettings.kt | 4 +- .../base/settings/BaseSettingsFragment.kt | 6 +- .../base/settings/ConfigSettingsUseCase.kt | 4 +- .../DefaultOptionsSettingsFragment.kt | 8 +- .../settings/ImePickerSettingsFragment.kt | 4 +- .../base/settings/MainSettingsFragment.kt | 12 +- .../base/settings/SettingsViewModel.kt | 28 +- .../base/settings/ShizukuSettingsFragment.kt | 8 +- .../base/shizuku/ShizukuInputEventInjector.kt | 2 +- .../base/sorting/SortBottomSheetContent.kt | 4 +- .../base/sorting/SortKeyMapsUseCase.kt | 4 +- .../comparators/KeyMapActionsComparator.kt | 6 +- .../KeyMapConstraintsComparator.kt | 8 +- .../system/ChooseBluetoothDeviceFragment.kt | 16 +- .../system/ChooseBluetoothDeviceViewModel.kt | 14 +- .../AccessibilityNodeRecorder.kt | 5 +- .../AccessibilityServiceAdapter.kt | 55 +-- .../AccessibilityServiceEvent.kt | 86 +++++ .../accessibility/BaseAccessibilityService.kt | 279 +--------------- .../BaseAccessibilityServiceController.kt | 75 +++-- .../base/system/apps/AppActivityListItem.kt | 6 +- .../base/system/apps/AppShortcutListItem.kt | 6 +- .../system/apps/ChooseActivityFragment.kt | 8 +- .../system/apps/ChooseActivityViewModel.kt | 8 +- .../base/system/apps/ChooseAppFragment.kt | 12 +- .../base/system/apps/ChooseAppScreen.kt | 12 +- .../system/apps/ChooseAppShortcutFragment.kt | 12 +- .../system/apps/ChooseAppShortcutViewModel.kt | 20 +- .../base/system/apps/ChooseAppViewModel.kt | 14 +- .../system/apps/DisplayAppShortcutsUseCase.kt | 4 +- .../base/system/apps/DisplayAppsUseCase.kt | 4 +- .../inputmethod/AutoSwitchImeController.kt | 22 +- .../system/intents/ConfigIntentFragment.kt | 8 +- .../system/intents/ConfigIntentViewModel.kt | 22 +- .../ManageNotificationsUseCase.kt | 5 +- .../notifications/NotificationController.kt | 59 ++-- .../base}/trigger/AssistantTriggerKey.kt | 2 +- .../base}/trigger/AssistantTriggerType.kt | 2 +- .../trigger/BaseConfigTriggerViewModel.kt | 238 ++++++------- .../trigger/ChooseTriggerKeyDeviceModel.kt | 2 +- .../base}/trigger/FingerprintTriggerKey.kt | 2 +- .../base}/trigger/FloatingButtonKey.kt | 2 +- .../base}/trigger/KeyCodeTriggerKey.kt | 2 +- .../base}/trigger/KeyEventDetectionSource.kt | 2 +- .../base}/trigger/KeyMapListItemModel.kt | 4 +- .../base}/trigger/RecordTriggerButtonRow.kt | 6 +- .../base}/trigger/RecordTriggerState.kt | 2 +- .../base}/trigger/RecordTriggerUseCase.kt | 8 +- .../keymapper/base}/trigger/RecordedKey.kt | 2 +- .../trigger/SetupGuiKeyboardBottomSheet.kt | 4 +- .../base}/trigger/SetupGuiKeyboardState.kt | 2 +- .../base}/trigger/SetupGuiKeyboardUseCase.kt | 4 +- .../sds100/keymapper/base}/trigger/Trigger.kt | 4 +- .../keymapper/base}/trigger/TriggerError.kt | 2 +- .../base}/trigger/TriggerErrorSnapshot.kt | 8 +- .../keymapper/base}/trigger/TriggerKey.kt | 2 +- .../base}/trigger/TriggerKeyDevice.kt | 2 +- .../base}/trigger/TriggerKeyListItem.kt | 42 +-- .../trigger/TriggerKeyOptionsBottomSheet.kt | 28 +- .../base}/trigger/TriggerKeyShortcut.kt | 2 +- .../keymapper/base}/trigger/TriggerMode.kt | 2 +- .../keymapper/base}/trigger/TriggerScreen.kt | 44 +-- .../sds100/keymapper/base/utils/ErrorUtils.kt | 212 ++++++++++++ .../keymapper/base/utils}/FilterUtils.kt | 6 +- .../keymapper/base/utils}/ShareUtils.kt | 6 +- .../keymapper/base/utils}/VersionHelper.kt | 4 +- .../base/utils}/ui/BindingAdapters.kt | 7 +- .../base/utils}/ui/CheckBoxListItem.kt | 2 +- .../base/utils}/ui/ChooseAppStoreModel.kt | 2 +- .../base/utils}/ui/DefaultSimpleListItem.kt | 2 +- .../keymapper/base/utils}/ui/DialogUtils.kt | 19 +- .../utils}/ui/EpoxyRecyclerViewModelHelper.kt | 2 +- .../keymapper/base/utils}/ui/ISearchable.kt | 2 +- .../keymapper/base/utils}/ui/IconInfo.kt | 2 +- .../keymapper/base/utils/ui/LifecycleUtils.kt | 18 +- .../keymapper/base/utils}/ui/LinkType.kt | 2 +- .../keymapper/base/utils/ui/ListItem.kt | 5 + .../base/utils}/ui/MultiChoiceItem.kt | 2 +- .../base/utils}/ui/MultiSelectProvider.kt | 2 +- .../base/utils}/ui/NavDestination.kt | 2 +- .../keymapper/base/utils}/ui/NavResult.kt | 2 +- .../keymapper/base/utils}/ui/NavigateEvent.kt | 2 +- .../base/utils}/ui/NavigationUtils.kt | 2 +- .../base/utils}/ui/NavigationViewModel.kt | 4 +- .../base/utils}/ui/OnPopupResponseEvent.kt | 2 +- .../keymapper/base/utils}/ui/PopupUi.kt | 2 +- .../base/utils}/ui/PopupViewModel.kt | 3 +- .../base/utils}/ui/RadioButtonPairListItem.kt | 2 +- .../utils}/ui/RadioButtonTripleListItem.kt | 2 +- .../base/utils}/ui/RecyclerViewFragment.kt | 5 +- .../base/utils}/ui/RecyclerViewUtils.kt | 2 +- .../keymapper/base/utils}/ui/ResourceExt.kt | 2 +- .../base/utils}/ui/ResourceProvider.kt | 12 +- .../base/utils}/ui/SectionHeaderListItem.kt | 2 +- .../base/utils}/ui/SelectionState.kt | 2 +- .../base/utils}/ui/ShowPopupEvent.kt | 2 +- .../utils}/ui/SimpleRecyclerViewFragment.kt | 2 +- .../base/utils}/ui/SliderMaximums.kt | 2 +- .../base/utils}/ui/SliderMinimums.kt | 2 +- .../base/utils}/ui/SliderStepSizes.kt | 2 +- .../keymapper/base/utils}/ui/SnackBarUtils.kt | 2 +- .../base/utils}/ui/SquareImageButton.kt | 2 +- .../keymapper/base/utils}/ui/TextListItem.kt | 2 +- .../keymapper/base/utils}/ui/TintType.kt | 2 +- .../base/utils}/ui/ViewModelHelper.kt | 8 +- .../base/utils}/ui/compose/CheckBoxText.kt | 2 +- .../CollapsableFloatingActionButton.kt | 2 +- .../base/utils}/ui/compose/CompactChip.kt | 2 +- .../utils}/ui/compose/ComposeChipModel.kt | 4 +- .../base/utils}/ui/compose/ComposeDialogs.kt | 2 +- .../base/utils}/ui/compose/ComposeIconInfo.kt | 2 +- .../base/utils}/ui/compose/DragDropState.kt | 2 +- .../base/utils}/ui/compose/DraggableItem.kt | 2 +- .../ui/compose/KeyMapperDropdownMenu.kt | 2 +- .../utils}/ui/compose/KeyMapperSliderThumb.kt | 2 +- .../utils}/ui/compose/KeyMapperTapTarget.kt | 2 +- .../utils}/ui/compose/ListItemFixError.kt | 4 +- .../utils}/ui/compose/OptionsHeaderRow.kt | 2 +- .../base/utils}/ui/compose/RadioButtonText.kt | 2 +- .../utils}/ui/compose/SearchAppBarActions.kt | 2 +- .../base/utils}/ui/compose/SimpleListItem.kt | 4 +- .../utils}/ui/compose/SimpleListItemModel.kt | 2 +- .../utils}/ui/compose/SliderOptionText.kt | 2 +- .../base/utils}/ui/compose/UriHandlerUtils.kt | 4 +- .../utils}/ui/compose/WindowSizeClassExt.kt | 2 +- .../base/utils}/ui/compose/icons/AdGroup.kt | 2 +- .../utils}/ui/compose/icons/HomeIotDevice.kt | 2 +- .../base/utils}/ui/compose/icons/Import.kt | 2 +- .../utils}/ui/compose/icons/InstantMix.kt | 2 +- .../utils}/ui/compose/icons/JumpToElement.kt | 2 +- .../utils/ui/compose/icons/KeyMapperIcons.kt | 3 + .../base/utils}/ui/compose/icons/MatchWord.kt | 2 +- .../base/utils}/ui/compose/icons/NfcOff.kt | 2 +- .../utils}/ui/compose/icons/TextSelectEnd.kt | 2 +- .../icons/TextSelectMoveForwardCharacter.kt | 2 +- .../utils}/ui/compose/icons/TopPanelClose.kt | 2 +- .../utils}/ui/compose/icons/TopPanelOpen.kt | 2 +- .../res/layout/dialog_choose_app_store.xml | 2 +- .../main/res/layout/list_item_checkbox.xml | 2 +- .../main/res/layout/list_item_fix_error.xml | 2 +- .../main/res/layout/list_item_log_entry.xml | 2 +- .../layout/list_item_radio_button_pair.xml | 2 +- .../layout/list_item_radio_button_triple.xml | 2 +- base/src/main/res/layout/list_item_simple.xml | 2 +- .../sds100/keymapper/BackupManagerTest.kt | 8 +- .../keymapper/ConfigKeyMapUseCaseTest.kt | 8 +- .../keymapper/KeyMapJsonMigrationTest.kt | 2 +- .../LegacyFingerprintMapMigrationTest.kt | 2 +- .../keymapper/TestDispatcherProvider.kt | 2 +- .../actions/GetActionFailedUseCaseTest.kt | 2 +- .../actions/PerformActionsUseCaseTest.kt | 6 +- .../constraints/ConstraintSnapshotTest.kt | 2 +- .../keymapper/keymaps/KeyMapControllerTest.kt | 14 +- ...riggerKeyMapFromOtherAppsControllerTest.kt | 4 +- .../system/devices/FakeDevicesAdapter.kt | 4 +- .../keymapper/system/files/FakeFileAdapter.kt | 4 +- .../sds100/keymapper/system/files/JavaFile.kt | 4 +- .../intents/ConfigIntentViewModelTest.kt | 12 +- .../keymapper/util/ui/FakeResourceProvider.kt | 2 +- common/build.gradle.kts | 17 +- .../sds100/keymapper/common/ui/ListItem.kt | 5 - .../common/ui/compose/icons/KeyMapperIcons.kt | 3 - .../keymapper/common/util/ErrorUtils.kt | 187 ----------- .../keymapper/common/util/LoggingUtils.kt | 17 - .../keymapper/common/util/ServiceEvent.kt | 85 ----- .../common/{util => utils}/BundleUtils.kt | 4 +- .../keymapper/common/utils/CoroutineUtils.kt | 15 + .../{util => utils}/DispatcherProvider.kt | 2 +- .../common/{util => utils}/DisplayUtils.kt | 2 +- .../common/{util => utils}/InputEventType.kt | 2 +- .../common/{util => utils}/ListUtils.kt | 2 +- .../common/{util => utils}/MapUtils.kt | 2 +- .../common/{util => utils}/MathUtils.kt | 2 +- .../common/utils}/PinchScreenType.kt | 2 +- .../common/{util/result => utils}/Result.kt | 2 +- .../common/{util => utils}/SizeKM.kt | 2 +- .../common/{util/state => utils}/State.kt | 2 +- .../common/{util => utils}/StringUtils.kt | 7 +- .../common/{util => utils}/TimeUtils.kt | 2 +- .../common/{util => utils}/TreeNode.kt | 2 +- .../common/{util => utils}/UserHandleUtils.kt | 2 +- .../common/{util => utils}/UuidGenerator.kt | 2 +- data/build.gradle.kts | 2 +- .../data/entities/AccessibilityNodeEntity.kt | 2 +- .../keymapper/data/entities/EntityExtra.kt | 2 +- .../data/migration/Migration11To12.kt | 2 +- .../AccessibilityNodeRepository.kt | 2 +- .../repositories/FloatingButtonRepository.kt | 6 +- .../repositories/FloatingLayoutRepository.kt | 6 +- .../data/repositories/GroupRepository.kt | 4 +- .../data/repositories/RoomKeyMapRepository.kt | 8 +- .../data/repositories/RoomLogRepository.kt | 2 +- .../data/utils}/PreferenceDelegate.kt | 4 +- .../utils}/SharedPrefsDataStoreWrapper.kt | 46 ++- gradle/libs.versions.toml | 4 - mapping/.gitignore | 1 - mapping/build.gradle.kts | 52 --- mapping/consumer-rules.pro | 0 mapping/proguard-rules.pro | 21 -- .../mapping/ExampleInstrumentedTest.kt | 24 -- mapping/src/main/AndroidManifest.xml | 4 - .../mapping/constraints/ConstraintMode.kt | 6 - .../mapping/keymaps/ShortcutModel.kt | 9 - .../keymapper/mapping/ExampleUnitTest.kt | 17 - settings.gradle.kts | 1 - system/build.gradle.kts | 4 +- system/src/main/AndroidManifest.xml | 23 ++ .../keymapper/common/utils/BuildUtils.kt | 33 ++ .../sds100/keymapper/system/BuildUtils.kt | 50 --- .../github/sds100/keymapper/system/Shell.kt | 6 +- .../sds100/keymapper/system/SystemError.kt | 36 +- .../keymapper/system/SystemHiltModule.kt | 5 - .../AccessibilityServiceUtils.kt | 316 ++++++++++++++++++ .../accessibility/AccessibilityUtils.kt | 45 --- .../ControlAccessibilityServiceUseCase.kt | 1 + .../accessibility}/FingerprintGestureType.kt | 2 +- .../accessibility/IAccessibilityService.kt | 6 +- .../airplanemode/AirplaneModeAdapter.kt | 2 +- .../AndroidAirplaneModeAdapter.kt | 4 +- .../system/apps/AndroidAppShortcutAdapter.kt | 10 +- .../apps/AndroidPackageManagerAdapter.kt | 10 +- .../system/apps/AppShortcutAdapter.kt | 4 +- .../system/apps/PackageManagerAdapter.kt | 4 +- .../bluetooth/AndroidBluetoothAdapter.kt | 6 +- .../system/bluetooth/BluetoothAdapter.kt | 2 +- .../system/camera/AndroidCameraAdapter.kt | 6 +- .../keymapper/system/camera/CameraAdapter.kt | 2 +- .../system/devices/AndroidDevicesAdapter.kt | 10 +- .../system/devices/DevicesAdapter.kt | 4 +- .../system/display/AndroidDisplayAdapter.kt | 10 +- .../system/display/DisplayAdapter.kt | 4 +- .../system/display/OrientationUtils.kt | 13 - .../system/files/AndroidFileAdapter.kt | 6 +- .../system/files/DocumentFileWrapper.kt | 6 +- .../keymapper/system/files/FileAdapter.kt | 2 +- .../sds100/keymapper/system/files/IFile.kt | 2 +- .../inputmethod/AndroidInputMethodAdapter.kt | 20 +- .../inputmethod/ImeInputEventInjector.kt | 2 +- .../system/inputmethod/InputKeyModel.kt | 2 +- .../system/inputmethod/InputMethodAdapter.kt | 2 +- .../system/inputmethod/KeyMapperImeHelper.kt | 14 +- .../inputmethod/ShowHideInputMethodUseCase.kt | 4 +- .../inputmethod/ToggleCompatibleImeUseCase.kt | 2 +- .../keymapper/system/intents/IntentAdapter.kt | 6 +- .../system/lock/AndroidLockScreenAdapter.kt | 4 +- .../system/lock/LockScreenAdapter.kt | 2 +- .../system/media/AndroidMediaAdapter.kt | 6 +- .../keymapper/system/media/MediaAdapter.kt | 2 +- .../system/navigation/OpenMenuHelper.kt | 8 +- .../system/network/AndroidNetworkAdapter.kt | 6 +- .../system/network/NetworkAdapter.kt | 2 +- .../keymapper/system/nfc/AndroidNfcAdapter.kt | 2 +- .../sds100/keymapper/system/nfc/NfcAdapter.kt | 2 +- .../AndroidNotificationAdapter.kt | 2 +- .../notifications/NotificationReceiver.kt | 2 +- .../NotificationReceiverAdapter.kt | 8 +- .../permissions/AndroidPermissionAdapter.kt | 14 +- .../AutoGrantPermissionController.kt | 4 +- .../system/permissions/PermissionAdapter.kt | 2 +- .../permissions/RequestPermissionDelegate.kt | 4 +- .../system/phone/AndroidPhoneAdapter.kt | 6 +- .../keymapper/system/phone/PhoneAdapter.kt | 2 +- .../system/ringtones/RingtoneAdapter.kt | 6 +- .../sds100/keymapper/system/root/SuAdapter.kt | 8 +- .../ServiceAdapter.kt | 18 +- .../keymapper/system/shell/ShellAdapter.kt | 2 +- .../tiles/ToggleKeyMapperKeyboardTile.kt | 10 +- .../system/tiles/ToggleMappingsTile.kt | 6 +- .../system/url/AndroidOpenUrlAdapter.kt | 2 +- .../keymapper/system/url/OpenUrlAdapter.kt | 2 +- .../sds100/keymapper/system/url/UrlUtils.kt | 6 +- .../system/volume/AndroidVolumeAdapter.kt | 8 +- .../keymapper/system/volume/VolumeAdapter.kt | 2 +- systemstubs/build.gradle.kts | 7 +- 420 files changed, 2317 insertions(+), 2438 deletions(-) delete mode 100644 app/src/main/java/io/github/sds100/keymapper/Constants.kt rename {base/src/free => app/src/main}/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt (93%) create mode 100644 app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/Action.kt (96%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionCategory.kt (81%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionData.kt (99%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionDataEntityMapper.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionErrorSnapshot.kt (96%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionId.kt (97%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/ActionUtils.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/GetActionErrorUseCase.kt (88%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/HoldDownMode.kt (60%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/IsActionSupportedUseCase.kt (95%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/PerformActionsUseCase.kt (97%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/RepeatMode.kt (65%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/actions/TestActionUseCase.kt (58%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ChooseConstraintFragment.kt (90%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ChooseConstraintScreen.kt (96%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ChooseConstraintViewModel.kt (94%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConfigConstraintsViewModel.kt (86%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/Constraint.kt (99%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintDependency.kt (85%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintErrorSnapshot.kt (97%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintId.kt (94%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintListItem.kt (97%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintListItemModel.kt (73%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintMode.kt rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintSnapshot.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintState.kt (77%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintUiHelper.kt (95%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintUtils.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/ConstraintsScreen.kt (97%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/CreateConstraintUseCase.kt (96%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/DetectConstraintsUseCase.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/DisplayConstraintUseCase.kt (67%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/GetConstraintErrorUseCase.kt (97%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/constraints/TimeConstraintBottomSheet.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ClickType.kt (60%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ConfigKeyMapFragment.kt (94%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ConfigKeyMapOptionsViewModel.kt (91%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ConfigKeyMapScreen.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ConfigKeyMapUseCase.kt (97%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ConfigKeyMapViewModel.kt (91%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/CreateKeyMapShortcutActivity.kt (93%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/CreateKeyMapShortcutScreen.kt (97%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/CreateKeyMapShortcutUseCase.kt (93%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/CreateKeyMapShortcutViewModel.kt (95%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/DisplayKeyMapUseCase.kt (89%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/FingerprintGesturesSupportedUseCase.kt (83%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/GetDefaultKeyMapOptionsUseCase.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMap.kt (99%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapAppBarState.kt (90%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapGroup.kt (64%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapListItemCreator.kt (97%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapListScreen.kt (97%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapListState.kt (68%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapListViewModel.kt (95%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapOptionsScreen.kt (96%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/KeyMapRepository.kt (86%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ListKeyMapsUseCase.kt (97%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/PauseKeyMapsUseCase.kt (86%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/ShortcutRow.kt (96%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/SimpleMappingController.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/DetectKeyMapModel.kt (79%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/DetectKeyMapsUseCase.kt (96%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/DetectScreenOffKeyEventsController.kt (96%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/DpadMotionEventTracker.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/ParallelTriggerActionPerformer.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/SequenceTriggerActionPerformer.kt (90%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt (95%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/accessibility/AccessibilityNodeRecorder.kt (95%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/accessibility/AccessibilityServiceAdapter.kt (86%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceEvent.kt rename system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt => base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt (50%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/accessibility/BaseAccessibilityServiceController.kt (88%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/inputmethod/AutoSwitchImeController.kt (89%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/notifications/ManageNotificationsUseCase.kt (92%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/notifications/NotificationController.kt (90%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/AssistantTriggerKey.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/AssistantTriggerType.kt (92%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/BaseConfigTriggerViewModel.kt (77%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/ChooseTriggerKeyDeviceModel.kt (69%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/FingerprintTriggerKey.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/FloatingButtonKey.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/KeyCodeTriggerKey.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/KeyEventDetectionSource.kt (62%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/KeyMapListItemModel.kt (83%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/RecordTriggerButtonRow.kt (96%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/RecordTriggerState.kt (86%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/RecordTriggerUseCase.kt (94%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/RecordedKey.kt (72%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/SetupGuiKeyboardBottomSheet.kt (99%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/SetupGuiKeyboardState.kt (87%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/SetupGuiKeyboardUseCase.kt (95%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/Trigger.kt (98%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerError.kt (92%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerErrorSnapshot.kt (92%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerKey.kt (95%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerKeyDevice.kt (96%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerKeyListItem.kt (88%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerKeyOptionsBottomSheet.kt (93%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerKeyShortcut.kt (65%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerMode.kt (94%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping => base/src/main/java/io/github/sds100/keymapper/base}/trigger/TriggerScreen.kt (94%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt rename {common/src/main/java/io/github/sds100/keymapper/common/util => base/src/main/java/io/github/sds100/keymapper/base/utils}/FilterUtils.kt (83%) rename {common/src/main/java/io/github/sds100/keymapper/common/util => base/src/main/java/io/github/sds100/keymapper/base/utils}/ShareUtils.kt (94%) rename {common/src/main/java/io/github/sds100/keymapper/common/util => base/src/main/java/io/github/sds100/keymapper/base/utils}/VersionHelper.kt (71%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/BindingAdapters.kt (93%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/CheckBoxListItem.kt (71%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/ChooseAppStoreModel.kt (74%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/DefaultSimpleListItem.kt (92%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/DialogUtils.kt (94%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/EpoxyRecyclerViewModelHelper.kt (94%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/ISearchable.kt (57%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/IconInfo.kt (72%) rename common/src/main/java/io/github/sds100/keymapper/common/util/CoroutineUtils.kt => base/src/main/java/io/github/sds100/keymapper/base/utils/ui/LifecycleUtils.kt (61%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/LinkType.kt (54%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ListItem.kt rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/MultiChoiceItem.kt (67%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/MultiSelectProvider.kt (97%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/NavDestination.kt (99%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/NavResult.kt (54%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/NavigateEvent.kt (62%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/NavigationUtils.kt (94%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/NavigationViewModel.kt (99%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/OnPopupResponseEvent.kt (59%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/PopupUi.kt (96%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/PopupViewModel.kt (98%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/RadioButtonPairListItem.kt (86%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/RadioButtonTripleListItem.kt (89%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/RecyclerViewFragment.kt (97%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/RecyclerViewUtils.kt (96%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/ResourceExt.kt (99%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/ResourceProvider.kt (84%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/SectionHeaderListItem.kt (64%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/SelectionState.kt (76%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/ShowPopupEvent.kt (57%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/SimpleRecyclerViewFragment.kt (97%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/SliderMaximums.kt (90%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/SliderMinimums.kt (89%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/SliderStepSizes.kt (90%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/SnackBarUtils.kt (97%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/SquareImageButton.kt (89%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/TextListItem.kt (84%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/TintType.kt (83%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/ViewModelHelper.kt (96%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/CheckBoxText.kt (96%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/CollapsableFloatingActionButton.kt (95%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/CompactChip.kt (98%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/ComposeChipModel.kt (76%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/ComposeDialogs.kt (98%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/ComposeIconInfo.kt (81%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/DragDropState.kt (99%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/DraggableItem.kt (95%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/KeyMapperDropdownMenu.kt (97%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/KeyMapperSliderThumb.kt (89%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/KeyMapperTapTarget.kt (97%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/ListItemFixError.kt (95%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/OptionsHeaderRow.kt (94%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/RadioButtonText.kt (97%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/SearchAppBarActions.kt (98%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/SimpleListItem.kt (98%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/SimpleListItemModel.kt (84%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/SliderOptionText.kt (99%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/UriHandlerUtils.kt (78%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/WindowSizeClassExt.kt (96%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/icons/AdGroup.kt (97%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/icons/HomeIotDevice.kt (98%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/icons/Import.kt (98%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/icons/InstantMix.kt (97%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/icons/JumpToElement.kt (98%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/KeyMapperIcons.kt rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/icons/MatchWord.kt (98%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/icons/NfcOff.kt (97%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/icons/TextSelectEnd.kt (98%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/icons/TextSelectMoveForwardCharacter.kt (97%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/icons/TopPanelClose.kt (97%) rename {common/src/main/java/io/github/sds100/keymapper/common => base/src/main/java/io/github/sds100/keymapper/base/utils}/ui/compose/icons/TopPanelOpen.kt (97%) delete mode 100644 common/src/main/java/io/github/sds100/keymapper/common/ui/ListItem.kt delete mode 100644 common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/KeyMapperIcons.kt delete mode 100644 common/src/main/java/io/github/sds100/keymapper/common/util/ErrorUtils.kt delete mode 100644 common/src/main/java/io/github/sds100/keymapper/common/util/LoggingUtils.kt delete mode 100644 common/src/main/java/io/github/sds100/keymapper/common/util/ServiceEvent.kt rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/BundleUtils.kt (70%) create mode 100644 common/src/main/java/io/github/sds100/keymapper/common/utils/CoroutineUtils.kt rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/DispatcherProvider.kt (89%) rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/DisplayUtils.kt (94%) rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/InputEventType.kt (56%) rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/ListUtils.kt (95%) rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/MapUtils.kt (73%) rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/MathUtils.kt (97%) rename {mapping/src/main/java/io/github/sds100/keymapper/mapping/actions => common/src/main/java/io/github/sds100/keymapper/common/utils}/PinchScreenType.kt (54%) rename common/src/main/java/io/github/sds100/keymapper/common/{util/result => utils}/Result.kt (99%) rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/SizeKM.kt (77%) rename common/src/main/java/io/github/sds100/keymapper/common/{util/state => utils}/State.kt (91%) rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/StringUtils.kt (87%) rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/TimeUtils.kt (85%) rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/TreeNode.kt (89%) rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/UserHandleUtils.kt (81%) rename common/src/main/java/io/github/sds100/keymapper/common/{util => utils}/UuidGenerator.kt (80%) rename {common/src/main/java/io/github/sds100/keymapper/common/util => data/src/main/java/io/github/sds100/keymapper/data/utils}/PreferenceDelegate.kt (89%) rename {common/src/main/java/io/github/sds100/keymapper/common/util => data/src/main/java/io/github/sds100/keymapper/data/utils}/SharedPrefsDataStoreWrapper.kt (58%) delete mode 100644 mapping/.gitignore delete mode 100644 mapping/build.gradle.kts delete mode 100644 mapping/consumer-rules.pro delete mode 100644 mapping/proguard-rules.pro delete mode 100644 mapping/src/androidTest/java/io/github/sds100/keymapper/mapping/ExampleInstrumentedTest.kt delete mode 100644 mapping/src/main/AndroidManifest.xml delete mode 100644 mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintMode.kt delete mode 100644 mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutModel.kt delete mode 100644 mapping/src/test/java/io/github/sds100/keymapper/mapping/ExampleUnitTest.kt create mode 100644 system/src/main/java/io/github/sds100/keymapper/common/utils/BuildUtils.kt delete mode 100644 system/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt create mode 100644 system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceUtils.kt delete mode 100644 system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt rename {mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps => system/src/main/java/io/github/sds100/keymapper/system/accessibility}/FingerprintGestureType.kt (64%) delete mode 100644 system/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt rename system/src/main/java/io/github/sds100/keymapper/system/{accessibility => service}/ServiceAdapter.kt (68%) diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 50892488c5..55d238004e 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -39,8 +39,7 @@ android { dependencies { implementation(project(":common")) - implementation(project(":system")) - implementation(project(":mapping")) + implementation(project(":base")) implementation(libs.jakewharton.timber) diff --git a/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt index 00dc8811c3..4f4e03005d 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt @@ -6,7 +6,7 @@ import android.os.Bundle import android.widget.Toast import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter +import io.github.sds100.keymapper.system.service.ServiceAdapter import io.github.sds100.keymapper.system.accessibility.ServiceState import javax.inject.Inject diff --git a/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt b/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt index 1796a3141b..c180971254 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt @@ -4,8 +4,8 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.common.util.firstBlocking -import io.github.sds100.keymapper.mapping.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.common.utils.firstBlocking import javax.inject.Inject // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API diff --git a/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt b/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt index 6067f97bca..279530f681 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt @@ -4,7 +4,7 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.base.utils.ServiceEvent import kotlinx.coroutines.launch // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6785a1dbc0..d9d55fdc60 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -163,6 +163,7 @@ android { dependencies { implementation(fileTree(mapOf("include" to listOf("*.jar"), "dir" to "libs"))) + // TODO is just base and common required? implementation(project(":common")) implementation(project(":base")) implementation(project(":api")) diff --git a/app/src/main/java/io/github/sds100/keymapper/Constants.kt b/app/src/main/java/io/github/sds100/keymapper/Constants.kt deleted file mode 100644 index 79b8b26d7a..0000000000 --- a/app/src/main/java/io/github/sds100/keymapper/Constants.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.github.sds100.keymapper - -import android.os.Build - -object Constants { - const val PACKAGE_NAME = BuildConfig.APPLICATION_ID -} diff --git a/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt b/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt index d6f74a703d..d1a4d9816d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt +++ b/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt @@ -17,14 +17,14 @@ import io.github.sds100.keymapper.base.logging.KeyMapperLoggingTree import io.github.sds100.keymapper.base.settings.ThemeUtils import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.SettingsPreferenceRepository -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.apps.AndroidPackageManagerAdapter import io.github.sds100.keymapper.system.devices.AndroidDevicesAdapter -import io.github.sds100.keymapper.system.inputmethod.AutoSwitchImeController +import io.github.sds100.keymapper.base.system.inputmethod.AutoSwitchImeController import io.github.sds100.keymapper.system.inputmethod.ShowHideInputMethodUseCaseImpl import io.github.sds100.keymapper.system.notifications.AndroidNotificationAdapter -import io.github.sds100.keymapper.system.notifications.ManageNotificationsUseCaseImpl -import io.github.sds100.keymapper.system.notifications.NotificationController +import io.github.sds100.keymapper.base.system.notifications.ManageNotificationsUseCaseImpl +import io.github.sds100.keymapper.base.system.notifications.NotificationController import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter import io.github.sds100.keymapper.system.permissions.AutoGrantPermissionController import io.github.sds100.keymapper.system.permissions.Permission diff --git a/base/src/free/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt similarity index 93% rename from base/src/free/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt rename to app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt index eb21ba3dc6..9aa8c1ba66 100644 --- a/base/src/free/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt @@ -7,11 +7,12 @@ import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityServiceController import io.github.sds100.keymapper.reroutekeyevents.RerouteKeyEventsUseCase import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.base.utils.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt new file mode 100644 index 0000000000..30938a6233 --- /dev/null +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt @@ -0,0 +1,117 @@ +package io.github.sds100.keymapper.system.accessibility + +import android.app.ActivityManager +import android.content.Intent +import android.content.res.Configuration +import android.os.Build +import android.view.KeyEvent +import android.view.accessibility.AccessibilityEvent +import androidx.core.content.getSystemService +import androidx.lifecycle.Lifecycle +import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityService +import io.github.sds100.keymapper.system.devices.InputDeviceUtils +import io.github.sds100.keymapper.system.inputevents.MyKeyEvent +import io.github.sds100.keymapper.trigger.KeyEventDetectionSource +import kotlinx.coroutines.flow.update +import timber.log.Timber + + +class MyAccessibilityService : BaseAccessibilityService() { + + var controller: AccessibilityServiceController? = null + + override fun onServiceConnected() { + super.onServiceConnected() + + /* + I would put this in onCreate but for some reason on some devices getting the application + context would return null + */ + if (controller == null) { + controller = AccessibilityServiceController() + } + + controller?.onServiceConnected() + } + + override fun onUnbind(intent: Intent?): Boolean { + Timber.i("Accessibility service: onUnbind") + return super.onUnbind(intent) + } + + override fun onInterrupt() {} + + override fun onDestroy() { + controller?.onDestroy() + controller = null + + lifecycleRegistry.currentState = Lifecycle.State.DESTROYED + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + fingerprintGestureController + .unregisterFingerprintGestureCallback(fingerprintGestureCallback) + } + + keyEventRelayServiceWrapper.onDestroy() + + Timber.i("Accessibility service: onDestroy") + + super.onDestroy() + } + + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + + controller?.onConfigurationChanged(newConfig) + } + + override fun onTrimMemory(level: Int) { + val memoryInfo = ActivityManager.MemoryInfo() + getSystemService()?.getMemoryInfo(memoryInfo) + + Timber.i("Accessibility service: onLowMemory, total: ${memoryInfo.totalMem}, available: ${memoryInfo.availMem}, is low memory: ${memoryInfo.lowMemory}, threshold: ${memoryInfo.threshold}") + + super.onTrimMemory(level) + } + + override fun onAccessibilityEvent(event: AccessibilityEvent?) { + event ?: return + + if (event.eventType == AccessibilityEvent.TYPE_WINDOWS_CHANGED) { + _activeWindowPackage.update { rootInActiveWindow?.packageName?.toString() } + } + + controller?.onAccessibilityEvent(event) + } + + override fun onKeyEvent(event: KeyEvent?): Boolean { + event ?: return super.onKeyEvent(event) + + val device = if (event.device == null) { + null + } else { + InputDeviceUtils.createInputDeviceInfo(event.device) + } + + if (controller != null) { + return controller!!.onKeyEvent( + MyKeyEvent( + keyCode = event.keyCode, + action = event.action, + metaState = event.metaState, + scanCode = event.scanCode, + device = device, + repeatCount = event.repeatCount, + source = event.source, + ), + KeyEventDetectionSource.ACCESSIBILITY_SERVICE, + ) + } + + return false + } + + override val lifecycle: Lifecycle + get() = lifecycleRegistry + +} diff --git a/base/build.gradle.kts b/base/build.gradle.kts index f16b199a09..e816edbb5d 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -60,11 +60,9 @@ android { dependencies { implementation(project(":common")) - implementation(project(":api")) implementation(project(":data")) implementation(project(":system")) implementation(project(":systemstubs")) - implementation(project(":mapping")) // TODO delete the unused libraries and plugins @@ -92,8 +90,6 @@ dependencies { implementation(libs.canopas.introshowcaseview) implementation(libs.dagger.hilt.android) ksp(libs.dagger.hilt.android.compiler) - - // splitties implementation(libs.bundles.splitties) // androidx diff --git a/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt b/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt index e91e22c592..1d9d3e963c 100644 --- a/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt +++ b/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.floating -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt b/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt index 0acdf8e74a..d1b576b13c 100644 --- a/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt +++ b/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt @@ -25,9 +25,9 @@ import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerKey import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode -import io.github.sds100.keymapper.base.util.Error -import io.github.sds100.keymapper.base.util.InputEventType -import io.github.sds100.keymapper.base.util.Result +import io.github.sds100.keymapper.base.utils.Error +import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.base.utils.Result import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay diff --git a/base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt b/base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt index 53c83767da..e1a16dc827 100644 --- a/base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt +++ b/base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.purchasing import android.content.Context -import io.github.sds100.keymapper.base.util.Error -import io.github.sds100.keymapper.base.util.Result -import io.github.sds100.keymapper.base.util.State +import io.github.sds100.keymapper.base.utils.Error +import io.github.sds100.keymapper.base.utils.Result +import io.github.sds100.keymapper.base.utils.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt b/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt index e4c3e36273..84879716e2 100644 --- a/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt +++ b/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.purchasing.PurchasingManager -import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope class ConfigTriggerViewModel( diff --git a/base/src/main/AndroidManifest.xml b/base/src/main/AndroidManifest.xml index b50691d779..3264107660 100644 --- a/base/src/main/AndroidManifest.xml +++ b/base/src/main/AndroidManifest.xml @@ -3,29 +3,6 @@ xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingLeanbackLauncher"> - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt index ee025e2e08..62bc8f1222 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt @@ -3,12 +3,12 @@ package io.github.sds100.keymapper.base import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope -import io.github.sds100.keymapper.base.util.ui.NavigationViewModel -import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.ViewModelHelper +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import kotlinx.coroutines.launch class ActivityViewModel( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt index 2df807d44d..828aec0b9a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt @@ -4,8 +4,8 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.util.DispatcherProvider +import io.github.sds100.keymapper.base.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.utils.DispatcherProvider import io.github.sds100.keymapper.common.BuildConfigProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt index e0c8795543..3c88458e08 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt @@ -29,14 +29,14 @@ import com.anggrayudi.storage.extension.toDocumentFile import io.github.sds100.keymapper.Constants.PACKAGE_NAME import io.github.sds100.keymapper.compose.ComposeColors import io.github.sds100.keymapper.databinding.ActivityMainBinding -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter import io.github.sds100.keymapper.system.permissions.RequestPermissionDelegate import io.github.sds100.keymapper.trigger.RecordTriggerController -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.showPopups import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/Action.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt similarity index 96% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/Action.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt index 6cd3a984b3..efbbd47824 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/Action.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt @@ -1,8 +1,8 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions -import io.github.sds100.keymapper.common.util.result.success -import io.github.sds100.keymapper.common.util.result.then -import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.utils.success +import io.github.sds100.keymapper.common.utils.then +import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionCategory.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionCategory.kt similarity index 81% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionCategory.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionCategory.kt index 292ddc7cfa..55bf05e5d3 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionCategory.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionCategory.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions enum class ActionCategory { APPS, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionData.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt similarity index 99% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionData.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt index f8220f29f6..979edfb60f 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionData.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt @@ -1,6 +1,7 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.system.accessibility.NodeInteractionType +import io.github.sds100.keymapper.common.utils.PinchScreenType import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.display.Orientation import io.github.sds100.keymapper.system.intents.IntentExtraModel diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionDataEntityMapper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionDataEntityMapper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt index f71717263b..3f2a048967 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionDataEntityMapper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt @@ -1,14 +1,13 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions import androidx.core.net.toUri -import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType import io.github.sds100.keymapper.actions.uielement.NodeInteractionType -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.success -import io.github.sds100.keymapper.common.util.result.then -import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.success +import io.github.sds100.keymapper.common.utils.then +import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.data.db.typeconverter.ConstantTypeConverters import io.github.sds100.keymapper.data.db.typeconverter.NodeInteractionTypeSetTypeConverter import io.github.sds100.keymapper.data.entities.ActionEntity @@ -21,7 +20,8 @@ import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.system.volume.DndMode import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.base.util.getKey +import io.github.sds100.keymapper.base.utils.getKey +import io.github.sds100.keymapper.common.utils.PinchScreenType import kotlinx.serialization.json.Json import splitties.bitflags.hasFlag diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt similarity index 96% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionErrorSnapshot.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt index 6c18028aaf..be9881e751 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt @@ -1,9 +1,9 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.actions.sound.SoundsManager -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.apps.PackageManagerAdapter diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionId.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionId.kt similarity index 97% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionId.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionId.kt index ebad2c57c7..b8034aa84b 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionId.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionId.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions enum class ActionId { APP, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt index b5bc675ccc..3588a8693f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt @@ -44,10 +44,10 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.LinkType -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.DragDropState +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.LinkType +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.DragDropState @Composable fun ActionListItem( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt index 2c7c126933..e43d7e8973 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt @@ -39,15 +39,13 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.util.ui.SliderMaximums -import io.github.sds100.keymapper.base.util.ui.SliderMinimums -import io.github.sds100.keymapper.base.util.ui.SliderStepSizes -import io.github.sds100.keymapper.base.util.ui.compose.CheckBoxText -import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText -import io.github.sds100.keymapper.base.util.ui.compose.SliderOptionText -import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe -import io.github.sds100.keymapper.mapping.actions.HoldDownMode -import io.github.sds100.keymapper.mapping.actions.RepeatMode +import io.github.sds100.keymapper.base.utils.ui.SliderMaximums +import io.github.sds100.keymapper.base.utils.ui.SliderMinimums +import io.github.sds100.keymapper.base.utils.ui.SliderStepSizes +import io.github.sds100.keymapper.base.utils.ui.compose.CheckBoxText +import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText +import io.github.sds100.keymapper.base.utils.ui.compose.SliderOptionText +import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt index dd859d21bb..d30ff45bb3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt @@ -5,26 +5,22 @@ import android.view.KeyEvent import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Android import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.handle +import io.github.sds100.keymapper.common.utils.handle import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.devices.InputDeviceUtils -import io.github.sds100.keymapper.system.display.OrientationUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.intents.IntentTarget import io.github.sds100.keymapper.system.volume.DndModeUtils import io.github.sds100.keymapper.system.volume.RingerModeUtils import io.github.sds100.keymapper.system.volume.VolumeStreamUtils -import io.github.sds100.keymapper.base.util.toPercentString -import io.github.sds100.keymapper.base.util.ui.IconInfo -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.TintType -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.mapping.actions.Action -import io.github.sds100.keymapper.mapping.actions.ActionData -import io.github.sds100.keymapper.mapping.actions.ActionUtils -import io.github.sds100.keymapper.mapping.actions.PinchScreenType -import io.github.sds100.keymapper.mapping.actions.RepeatMode +import io.github.sds100.keymapper.base.utils.toPercentString +import io.github.sds100.keymapper.base.utils.ui.IconInfo +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.TintType +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.common.utils.PinchScreenType +import io.github.sds100.keymapper.system.display.Orientation import splitties.bitflags.hasFlag class ActionUiHelper( @@ -506,8 +502,13 @@ class ActionUiHelper( ActionData.OpenSettings -> getString(R.string.action_open_settings) is ActionData.Rotation.CycleRotations -> { - val orientationStrings = action.orientations.map { - getString(OrientationUtils.getLabel(it)) + val orientationStrings = action.orientations.map { orientation -> + when (orientation) { + Orientation.ORIENTATION_0 -> R.string.orientation_0 + Orientation.ORIENTATION_90 -> R.string.orientation_90 + Orientation.ORIENTATION_180 -> R.string.orientation_180 + Orientation.ORIENTATION_270 -> R.string.orientation_270 + } } getString( diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt index 30224a14ac..4bc876f26f 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/ActionUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions import android.content.pm.PackageManager import android.os.Build @@ -73,15 +73,15 @@ import androidx.compose.material.icons.rounded.WifiOff import androidx.compose.ui.graphics.vector.ImageVector import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.base.util.ui.compose.icons.HomeIotDevice -import io.github.sds100.keymapper.base.util.ui.compose.icons.InstantMix -import io.github.sds100.keymapper.base.util.ui.compose.icons.JumpToElement -import io.github.sds100.keymapper.base.util.ui.compose.icons.KeyMapperIcons -import io.github.sds100.keymapper.base.util.ui.compose.icons.MatchWord -import io.github.sds100.keymapper.base.util.ui.compose.icons.NfcOff -import io.github.sds100.keymapper.base.util.ui.compose.icons.TextSelectEnd -import io.github.sds100.keymapper.base.util.ui.compose.icons.TopPanelClose -import io.github.sds100.keymapper.base.util.ui.compose.icons.TopPanelOpen +import io.github.sds100.keymapper.base.utils.ui.compose.icons.HomeIotDevice +import io.github.sds100.keymapper.base.utils.ui.compose.icons.InstantMix +import io.github.sds100.keymapper.base.utils.ui.compose.icons.JumpToElement +import io.github.sds100.keymapper.base.utils.ui.compose.icons.KeyMapperIcons +import io.github.sds100.keymapper.base.utils.ui.compose.icons.MatchWord +import io.github.sds100.keymapper.base.utils.ui.compose.icons.NfcOff +import io.github.sds100.keymapper.base.utils.ui.compose.icons.TextSelectEnd +import io.github.sds100.keymapper.base.utils.ui.compose.icons.TopPanelClose +import io.github.sds100.keymapper.base.utils.ui.compose.icons.TopPanelOpen object ActionUtils { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt index fe317a306c..748344c5fa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt @@ -42,12 +42,11 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.ui.LinkType -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.DraggableItem -import io.github.sds100.keymapper.base.util.ui.compose.rememberDragDropState -import io.github.sds100.keymapper.mapping.actions.ActionData +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.ui.LinkType +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.DraggableItem +import io.github.sds100.keymapper.base.utils.ui.compose.rememberDragDropState import kotlinx.coroutines.flow.update @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt index 4706373e22..8bb1f62608 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt @@ -24,11 +24,11 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.setupNavigation -import io.github.sds100.keymapper.base.util.ui.showPopups -import io.github.sds100.keymapper.common.util.viewLifecycleScope +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt index 0af3a84ffd..1d8e877fbc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt @@ -40,13 +40,13 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.SearchAppBarActions -import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemFixedHeight -import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemGroup -import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemHeader -import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.SearchAppBarActions +import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemFixedHeight +import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemGroup +import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemHeader +import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel import kotlinx.coroutines.flow.update @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index ba590fda67..b46b224b85 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -5,20 +5,19 @@ import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.containsQuery -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.ui.DialogResponse -import io.github.sds100.keymapper.base.util.ui.NavigationViewModel -import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemGroup -import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel -import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.containsQuery +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemGroup +import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted @@ -30,9 +29,6 @@ import kotlinx.coroutines.flow.shareIn import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.mapping.actions.ActionCategory -import io.github.sds100.keymapper.mapping.actions.ActionId -import io.github.sds100.keymapper.mapping.actions.ActionUtils import javax.inject.Inject @HiltViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index 318c0d378f..d414bd7855 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -1,38 +1,33 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.dataOrNull -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.isFixable -import io.github.sds100.keymapper.common.util.state.mapData -import io.github.sds100.keymapper.base.util.ui.ChooseAppStoreModel -import io.github.sds100.keymapper.base.util.ui.DialogResponse -import io.github.sds100.keymapper.base.util.ui.LinkType -import io.github.sds100.keymapper.base.util.ui.NavDestination -import io.github.sds100.keymapper.base.util.ui.NavigationViewModel -import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.ViewModelHelper -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.navigate -import io.github.sds100.keymapper.base.util.ui.showPopup -import io.github.sds100.keymapper.mapping.actions.ActionData -import io.github.sds100.keymapper.mapping.actions.ActionErrorSnapshot -import io.github.sds100.keymapper.mapping.actions.HoldDownMode -import io.github.sds100.keymapper.mapping.actions.RepeatMode -import io.github.sds100.keymapper.mapping.actions.TestActionUseCase +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.isFixable +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.base.utils.ui.ChooseAppStoreModel +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.LinkType +import io.github.sds100.keymapper.base.utils.ui.NavDestination +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index eaab421c6d..9e896dfe48 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -11,7 +11,6 @@ import io.github.sds100.keymapper.actions.tapscreen.PickCoordinateResult import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.camera.CameraLensUtils import io.github.sds100.keymapper.system.display.Orientation -import io.github.sds100.keymapper.system.display.OrientationUtils import io.github.sds100.keymapper.base.ui.intents.ConfigIntentResult import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.system.volume.DndMode @@ -20,17 +19,14 @@ import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.RingerModeUtils import io.github.sds100.keymapper.system.volume.VolumeStream import io.github.sds100.keymapper.system.volume.VolumeStreamUtils -import io.github.sds100.keymapper.base.util.ui.MultiChoiceItem -import io.github.sds100.keymapper.base.util.ui.NavDestination -import io.github.sds100.keymapper.base.util.ui.NavigationViewModel -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.navigate -import io.github.sds100.keymapper.base.util.ui.showPopup -import io.github.sds100.keymapper.mapping.actions.ActionData -import io.github.sds100.keymapper.mapping.actions.ActionId -import io.github.sds100.keymapper.mapping.actions.isEditable +import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem +import io.github.sds100.keymapper.base.utils.ui.NavDestination +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.collectLatest @@ -359,9 +355,16 @@ class CreateActionDelegate( false } + val label = when (orientation) { + Orientation.ORIENTATION_0 -> R.string.orientation_0 + Orientation.ORIENTATION_90 -> R.string.orientation_90 + Orientation.ORIENTATION_180 -> R.string.orientation_180 + Orientation.ORIENTATION_270 -> R.string.orientation_270 + } + MultiChoiceItem( orientation, - getString(OrientationUtils.getLabel(orientation)), + getString(label), isChecked, ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt index d5bc02f127..8e232b1917 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt @@ -1,9 +1,8 @@ package io.github.sds100.keymapper.base.actions import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.mapping.actions.GetActionErrorUseCase +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result import kotlinx.coroutines.flow.Flow interface DisplayActionUseCase : GetActionErrorUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt index feae31c74f..6d8973b646 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt @@ -50,11 +50,9 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.system.camera.CameraFlashInfo import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperSliderThumb -import io.github.sds100.keymapper.base.util.ui.compose.OptionsHeaderRow -import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText -import io.github.sds100.keymapper.mapping.actions.ActionId -import io.github.sds100.keymapper.mapping.actions.ActionUtils +import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperSliderThumb +import io.github.sds100.keymapper.base.utils.ui.compose.OptionsHeaderRow +import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText import kotlinx.coroutines.launch import kotlin.math.roundToInt diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/GetActionErrorUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt similarity index 88% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/GetActionErrorUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt index 97798a3661..755b66f203 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/GetActionErrorUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt @@ -1,7 +1,5 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions -import android.content.Context -import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.actions.sound.SoundsManager import io.github.sds100.keymapper.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter @@ -11,9 +9,7 @@ import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter -import io.github.sds100.keymapper.system.systemfeature.SystemFeatureAdapter -import io.github.sds100.keymapper.base.util.ResourceProvider -import io.github.sds100.keymapper.base.util.SoundsManager +import io.github.sds100.keymapper.base.utils.SoundsManager import javax.inject.Inject import javax.inject.Singleton import kotlinx.coroutines.flow.Flow diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/HoldDownMode.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/HoldDownMode.kt similarity index 60% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/HoldDownMode.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/HoldDownMode.kt index f06e99f620..cf10c89e7e 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/HoldDownMode.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/HoldDownMode.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions enum class HoldDownMode { TRIGGER_RELEASED, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt index 2e89a4c0c6..7e499aecdf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt @@ -40,8 +40,7 @@ import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.system.network.HttpMethod -import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperDropdownMenu -import io.github.sds100.keymapper.mapping.actions.ActionData +import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperDropdownMenu import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import okhttp3.HttpUrl.Companion.toHttpUrlOrNull diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/IsActionSupportedUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt similarity index 95% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/IsActionSupportedUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt index 6e67ed4477..5a46a01db2 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/IsActionSupportedUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt @@ -1,8 +1,8 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions import android.content.pm.PackageManager import android.os.Build -import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraLens diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PerformActionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt similarity index 97% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PerformActionsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt index de3345e510..d6c96d4805 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PerformActionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions import android.accessibilityservice.AccessibilityService import android.os.Build @@ -7,14 +7,14 @@ import android.view.KeyEvent import android.view.accessibility.AccessibilityNodeInfo import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.sound.SoundsManager -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess -import io.github.sds100.keymapper.common.util.result.otherwise -import io.github.sds100.keymapper.common.util.result.success -import io.github.sds100.keymapper.common.util.result.then +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.common.utils.otherwise +import io.github.sds100.keymapper.common.utils.success +import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.system.accessibility.AccessibilityNodeAction @@ -49,14 +49,14 @@ import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.system.url.OpenUrlAdapter import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.base.util.InputEventType -import io.github.sds100.keymapper.base.util.ServiceEvent -import io.github.sds100.keymapper.common.util.state.dataOrNull -import io.github.sds100.keymapper.common.util.firstBlocking -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.getWordBoundaries -import io.github.sds100.keymapper.common.util.state.ifIsData -import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.base.utils.ServiceEvent +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.common.utils.firstBlocking +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.getWordBoundaries +import io.github.sds100.keymapper.common.utils.ifIsData +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow @@ -71,7 +71,7 @@ import io.github.sds100.keymapper.system.Shell import io.github.sds100.keymapper.system.audio.AudioAdapter import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjectorImpl import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapter -import io.github.sds100.keymapper.base.util.SettingsRepository +import io.github.sds100.keymapper.base.utils.SettingsRepository import javax.inject.Inject import javax.inject.Singleton diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/RepeatMode.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt similarity index 65% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/RepeatMode.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt index a2b8dfd7d4..b8c373f86d 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/RepeatMode.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions enum class RepeatMode { diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/TestActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt similarity index 58% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/TestActionUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt index 4613fbbf0d..6114438e5b 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/TestActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt @@ -1,8 +1,8 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.base.actions -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter -import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.system.service.ServiceAdapter +import io.github.sds100.keymapper.base.utils.ServiceEvent diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt index aad0fc9212..b91f15d002 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt @@ -6,12 +6,12 @@ import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils -import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld -import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils +import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt index 9678921d86..9b74f85e45 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -5,13 +5,13 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.base.util.filterByQuery -import io.github.sds100.keymapper.base.util.ui.DefaultSimpleListItem -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.utils.filterByQuery +import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt index 68d30da4c5..057ce54529 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt @@ -18,12 +18,12 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.FragmentConfigKeyEventBinding -import io.github.sds100.keymapper.ui.utils.putJsonSerializable -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.str -import io.github.sds100.keymapper.base.util.ui.configuredCheckBox -import io.github.sds100.keymapper.base.util.ui.setupNavigation +import io.github.sds100.keymapper.common.utils.putJsonSerializable +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.base.utils.ui.configuredCheckBox +import io.github.sds100.keymapper.base.utils.ui.setupNavigation import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt index b2e135e615..c9a60d2bd1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -3,29 +3,28 @@ package io.github.sds100.keymapper.base.actions.keyevent import android.annotation.SuppressLint import android.view.KeyEvent import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.errorOrNull -import io.github.sds100.keymapper.common.util.result.handle -import io.github.sds100.keymapper.common.util.result.isSuccess -import io.github.sds100.keymapper.common.util.result.success -import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.errorOrNull +import io.github.sds100.keymapper.common.utils.handle +import io.github.sds100.keymapper.common.utils.isSuccess +import io.github.sds100.keymapper.common.utils.success +import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.ui.CheckBoxListItem -import io.github.sds100.keymapper.base.util.ui.NavDestination -import io.github.sds100.keymapper.base.util.ui.NavigationViewModel -import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.navigate +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem +import io.github.sds100.keymapper.base.utils.ui.NavDestination +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.navigate import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt index b0b8aeba13..f829f2640f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt @@ -4,7 +4,7 @@ import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickCoordinateResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickCoordinateResult.kt index 8b8ed3fa73..b3624183d4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickCoordinateResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickCoordinateResult.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.actions.pinchscreen -import io.github.sds100.keymapper.mapping.actions.PinchScreenType +import io.github.sds100.keymapper.common.utils.PinchScreenType import kotlinx.serialization.Serializable @Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt index 6408facbed..3b4570a4cf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt @@ -24,12 +24,11 @@ import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.FragmentPinchPickCoordinatesBinding import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.str -import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.base.utils.ui.showPopups import kotlinx.coroutines.flow.collectLatest -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json class PinchPickDisplayCoordinateFragment : Fragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt index d285c1806b..037209ca42 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt @@ -11,12 +11,12 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.showPopup -import io.github.sds100.keymapper.mapping.actions.PinchScreenType +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.common.utils.PinchScreenType import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt index 479bd06e88..860746cb12 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt @@ -24,9 +24,9 @@ import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.databinding.FragmentChooseSoundFileBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.showPopups import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.update diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt index d0d9efd032..279b8134d4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.actions.sound -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.files.FileAdapter import kotlinx.coroutines.flow.StateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt index 393d2d7afd..6ca2db0073 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt @@ -5,16 +5,16 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess -import io.github.sds100.keymapper.common.util.result.valueOrNull -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.ui.DefaultSimpleListItem -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.common.utils.valueOrNull +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt index 0f3efa9c78..7fb1ffcd3d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt @@ -1,11 +1,11 @@ package io.github.sds100.keymapper.base.actions.sound -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess -import io.github.sds100.keymapper.common.util.result.then +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.system.files.IFile import kotlinx.coroutines.CoroutineScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt index bb12cc8785..ed1708973a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt @@ -22,11 +22,10 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.databinding.FragmentSwipePickCoordinatesBinding import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.showPopups import kotlinx.coroutines.flow.collectLatest -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json class SwipePickDisplayCoordinateFragment : Fragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt index 9e9f8c610c..d54669fbd3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt @@ -9,11 +9,11 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt index ffe1563a0c..2d3c5bf947 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt @@ -8,7 +8,7 @@ import android.util.AttributeSet import android.view.MotionEvent import androidx.appcompat.widget.AppCompatImageView import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.base.util.color +import io.github.sds100.keymapper.base.utils.color import kotlinx.coroutines.flow.MutableStateFlow import kotlin.math.roundToInt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt index 014d9084a6..2a4cd77ab0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt @@ -22,11 +22,10 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.databinding.FragmentPickCoordinateBinding import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.showPopups import kotlinx.coroutines.flow.collectLatest -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt index 5e4a29d752..b687f50d7d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt @@ -7,11 +7,11 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt index e17f26b12d..3404c32de5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt @@ -51,11 +51,11 @@ import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.ui.compose.CheckBoxText -import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperDropdownMenu -import io.github.sds100.keymapper.base.util.ui.compose.SearchAppBarActions -import io.github.sds100.keymapper.base.util.ui.compose.WindowSizeClassExt.compareTo +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.ui.compose.CheckBoxText +import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperDropdownMenu +import io.github.sds100.keymapper.base.utils.ui.compose.SearchAppBarActions +import io.github.sds100.keymapper.base.utils.ui.compose.WindowSizeClassExt.compareTo import io.github.sds100.keymapper.system.accessibility.NodeInteractionType @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt index c857021abc..70a087d6c5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt @@ -20,15 +20,14 @@ import androidx.fragment.app.setFragmentResult import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.lifecycle.withStateAtLeast -import androidx.navigation.findNavController import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.showPopups -import io.github.sds100.keymapper.common.util.viewLifecycleScope +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt index 6c45380b0f..f497097bd6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt @@ -73,15 +73,15 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.base.system.apps.ChooseAppScreen -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperDropdownMenu -import io.github.sds100.keymapper.base.util.ui.compose.OptionsHeaderRow -import io.github.sds100.keymapper.base.util.ui.compose.WindowSizeClassExt.compareTo -import io.github.sds100.keymapper.base.util.ui.compose.icons.AdGroup -import io.github.sds100.keymapper.base.util.ui.compose.icons.JumpToElement -import io.github.sds100.keymapper.base.util.ui.compose.icons.KeyMapperIcons +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperDropdownMenu +import io.github.sds100.keymapper.base.utils.ui.compose.OptionsHeaderRow +import io.github.sds100.keymapper.base.utils.ui.compose.WindowSizeClassExt.compareTo +import io.github.sds100.keymapper.base.utils.ui.compose.icons.AdGroup +import io.github.sds100.keymapper.base.utils.ui.compose.icons.JumpToElement +import io.github.sds100.keymapper.base.utils.ui.compose.icons.KeyMapperIcons import io.github.sds100.keymapper.system.accessibility.NodeInteractionType import kotlinx.coroutines.flow.update diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt index d6504eca27..c8784bc92c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt @@ -1,16 +1,16 @@ package io.github.sds100.keymapper.base.actions.uielement import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.onFailure +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter +import io.github.sds100.keymapper.system.service.ServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter -import io.github.sds100.keymapper.base.util.ServiceEvent -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.mapData +import io.github.sds100.keymapper.base.utils.ServiceEvent +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.mapData import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt index 9cdd36be4d..64c17559f8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt @@ -7,25 +7,25 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.then -import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.then +import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.containsQuery -import io.github.sds100.keymapper.common.util.state.dataOrNull -import io.github.sds100.keymapper.common.util.state.ifIsData -import io.github.sds100.keymapper.common.util.state.mapData -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.ViewModelHelper -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.containsQuery +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.common.utils.ifIsData +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel import io.github.sds100.keymapper.system.accessibility.NodeInteractionType import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt index 1257a3e42b..a86c3e3054 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt @@ -14,13 +14,12 @@ import com.google.gson.JsonArray import com.google.gson.JsonParser import com.google.gson.JsonSyntaxException import com.google.gson.stream.MalformedJsonException -import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.actions.sound.SoundsManager -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.then +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.db.AppDatabase @@ -52,13 +51,13 @@ import io.github.sds100.keymapper.data.repositories.RepositoryUtils import io.github.sds100.keymapper.base.keymaps.KeyMapRepository import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.system.files.IFile -import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.util.DefaultUuidGenerator -import io.github.sds100.keymapper.base.util.DispatcherProvider -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.TreeNode -import io.github.sds100.keymapper.base.util.UuidGenerator -import io.github.sds100.keymapper.base.util.breadFirstTraversal +import io.github.sds100.keymapper.base.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.utils.DefaultUuidGenerator +import io.github.sds100.keymapper.base.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.TreeNode +import io.github.sds100.keymapper.base.utils.UuidGenerator +import io.github.sds100.keymapper.base.utils.breadFirstTraversal import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt index 895ff7f48e..2e976fcbc5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.backup -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.then +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.system.files.FileAdapter import kotlinx.coroutines.flow.Flow import timber.log.Timber diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt index ee314ebc09..5704d80574 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt @@ -20,7 +20,7 @@ import io.github.sds100.keymapper.MainActivity import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.util.ui.compose.CustomDialogContent +import io.github.sds100.keymapper.base.utils.ui.compose.CustomDialogContent class RestoreKeyMapsActivity : ComponentActivity() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt index a9cbf41612..01bd53d32f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt @@ -3,10 +3,10 @@ package io.github.sds100.keymapper.base.backup import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt similarity index 90% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt index e9f141dcb2..cca6c5dc27 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import android.os.Bundle import android.view.LayoutInflater @@ -20,16 +20,15 @@ import androidx.fragment.app.setFragmentResult import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.lifecycle.withStateAtLeast -import androidx.navigation.findNavController import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.setupNavigation -import io.github.sds100.keymapper.base.util.ui.showPopups -import io.github.sds100.keymapper.common.util.viewLifecycleScope +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt similarity index 96% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt index 5cc4f13302..037c3c191d 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid -import androidx.compose.foundation.lazy.grid.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.rounded.ArrowBack import androidx.compose.material.icons.rounded.Android @@ -47,10 +46,10 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemFixedHeight -import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemFixedHeight +import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel import kotlinx.coroutines.flow.update @Composable diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt similarity index 94% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt index fdecb0976e..6403884243 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ChooseConstraintViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -10,19 +10,19 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.camera.CameraLensUtils import io.github.sds100.keymapper.system.display.Orientation -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.containsQuery -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.ui.NavDestination -import io.github.sds100.keymapper.base.util.ui.NavigationViewModel -import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel -import io.github.sds100.keymapper.base.util.ui.navigate -import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.containsQuery +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.ui.NavDestination +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt similarity index 86% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConfigConstraintsViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index 2c97308f71..acc59f9d07 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -1,27 +1,27 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.dataOrNull -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.isFixable -import io.github.sds100.keymapper.common.util.state.mapData -import io.github.sds100.keymapper.base.util.ui.NavDestination -import io.github.sds100.keymapper.base.util.ui.NavigationViewModel -import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.ViewModelHelper -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.navigate +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.isFixable +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.base.utils.ui.NavDestination +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.navigate import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/Constraint.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt similarity index 99% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/Constraint.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt index 37b5b5a227..8c80d0201e 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/Constraint.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt @@ -1,12 +1,12 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints -import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.data.entities.ConstraintEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.display.Orientation -import io.github.sds100.keymapper.base.util.getKey +import io.github.sds100.keymapper.base.utils.getKey import kotlinx.serialization.Serializable import java.time.LocalTime import java.util.UUID diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintDependency.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintDependency.kt similarity index 85% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintDependency.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintDependency.kt index 8f6dd4cdfa..916eec0ae6 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintDependency.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintDependency.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints enum class ConstraintDependency { FOREGROUND_APP, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt similarity index 97% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintErrorSnapshot.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt index 67286fd244..5b79b1aad5 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt @@ -1,9 +1,9 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import android.content.pm.PackageManager import android.os.Build -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintId.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintId.kt similarity index 94% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintId.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintId.kt index b43bc9227b..6ff99f2b54 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintId.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintId.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import kotlinx.serialization.Serializable diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt similarity index 97% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt index 6452ba5329..1bdde59ef6 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.IntrinsicSize @@ -35,8 +35,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @Composable fun ConstraintListItem( diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt similarity index 73% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintListItemModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt index 78884d6346..f8acd7b6dd 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt @@ -1,6 +1,6 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo data class ConstraintListItemModel( val id: String, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintMode.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintMode.kt new file mode 100644 index 0000000000..985191d18d --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintMode.kt @@ -0,0 +1,6 @@ +package io.github.sds100.keymapper.base.constraints + +enum class ConstraintMode { + AND, + OR, +} diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintSnapshot.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt index fbe8a02afc..0e30bf8e90 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import android.media.AudioManager import android.os.Build @@ -15,7 +15,7 @@ import io.github.sds100.keymapper.system.network.NetworkAdapter import io.github.sds100.keymapper.system.phone.CallState import io.github.sds100.keymapper.system.phone.PhoneAdapter import io.github.sds100.keymapper.system.power.PowerAdapter -import io.github.sds100.keymapper.common.util.firstBlocking +import io.github.sds100.keymapper.common.utils.firstBlocking import timber.log.Timber import java.time.LocalTime diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintState.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintState.kt similarity index 77% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintState.kt index 0595877fe9..ad284ccdb2 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import kotlinx.serialization.Serializable diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt similarity index 95% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintUiHelper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt index 02392bd955..2444833d5f 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt @@ -1,15 +1,15 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Android import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.handle -import io.github.sds100.keymapper.common.util.result.valueIfFailure +import io.github.sds100.keymapper.common.utils.handle +import io.github.sds100.keymapper.common.utils.valueIfFailure import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.display.Orientation -import io.github.sds100.keymapper.base.util.TimeUtils -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.TimeUtils +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import java.time.format.FormatStyle class ConstraintUiHelper( diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt index b05a67328b..8db2e6dc6a 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Battery2Bar @@ -25,7 +25,7 @@ import androidx.compose.material.icons.outlined.Wifi import androidx.compose.material.icons.outlined.WifiOff import androidx.compose.material.icons.rounded.Android import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo object ConstraintUtils { diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt similarity index 97% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintsScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt index 1b9f65b12a..8a9f36132c 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.FlashlightOn @@ -42,10 +41,10 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText @Composable fun ConstraintsScreen( diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/CreateConstraintUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt similarity index 96% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/CreateConstraintUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt index 899306be2a..71a43a32bb 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/CreateConstraintUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt @@ -1,8 +1,8 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import android.content.pm.PackageManager import android.os.Build -import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.camera.CameraAdapter diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/DetectConstraintsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/DetectConstraintsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt index 89cd1f3e9c..00ad2bc4e1 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/DetectConstraintsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import android.os.Build import io.github.sds100.keymapper.system.accessibility.IAccessibilityService diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/DisplayConstraintUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt similarity index 67% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/DisplayConstraintUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt index 01ecc9bfb9..823592c235 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/DisplayConstraintUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt @@ -1,8 +1,8 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result interface DisplayConstraintUseCase : GetConstraintErrorUseCase { fun getAppName(packageName: String): Result diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/GetConstraintErrorUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt similarity index 97% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/GetConstraintErrorUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt index cf9eaf2b47..ec48afea54 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/GetConstraintErrorUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/TimeConstraintBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/TimeConstraintBottomSheet.kt rename to base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt index 07140b15fc..6787cab4b0 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/TimeConstraintBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.constraints +package io.github.sds100.keymapper.base.constraints import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -43,8 +43,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.util.TimeUtils -import io.github.sds100.keymapper.base.util.ui.compose.OptionsHeaderRow +import io.github.sds100.keymapper.base.utils.TimeUtils +import io.github.sds100.keymapper.base.utils.ui.compose.OptionsHeaderRow import kotlinx.coroutines.launch import java.time.format.FormatStyle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt index c90e3df83f..429e2d2760 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt @@ -4,8 +4,8 @@ import io.github.sds100.keymapper.data.db.typeconverter.ConstantTypeConverters import io.github.sds100.keymapper.data.entities.FloatingButtonEntity import io.github.sds100.keymapper.floating.FloatingButtonData.Location import io.github.sds100.keymapper.system.display.Orientation -import io.github.sds100.keymapper.base.util.SizeKM -import io.github.sds100.keymapper.base.util.getKey +import io.github.sds100.keymapper.base.utils.SizeKM +import io.github.sds100.keymapper.base.utils.getKey import kotlinx.serialization.Serializable import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt index ab04ea4548..9c7c661f97 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt @@ -39,12 +39,12 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @Composable fun GroupConstraintRow( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupListItemModel.kt index 740cfd3aa6..446bfffc55 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupListItemModel.kt @@ -1,5 +1,5 @@ package io.github.sds100.keymapper.base.groups -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo data class GroupListItemModel(val uid: String, val name: String, val icon: ComposeIconInfo? = null) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt index 14fe1f91ed..c3b6617f34 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt @@ -44,8 +44,8 @@ import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @Composable fun GroupRow( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt index 1f0ec96ef2..e935df7ad6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt @@ -22,9 +22,9 @@ import io.github.sds100.keymapper.NavAppDirections import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.ui.setupNavigation -import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.base.utils.ui.showPopups class HomeFragment : Fragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt index 91e9496b78..dd608a2899 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt @@ -56,7 +56,7 @@ import com.canopas.lib.showcase.IntroShowcase import io.github.sds100.keymapper.R import io.github.sds100.keymapper.backup.ImportExportState import io.github.sds100.keymapper.backup.RestoreType -import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.groups.GroupListItemModel @@ -69,15 +69,15 @@ import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.trigger.DpadTriggerSetupBottomSheet import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.base.util.ShareUtils -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.compose.CollapsableFloatingActionButton -import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperTapTarget -import io.github.sds100.keymapper.base.util.ui.compose.keyMapperShowcaseStyle -import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe +import io.github.sds100.keymapper.base.utils.ShareUtils +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.compose.CollapsableFloatingActionButton +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperTapTarget +import io.github.sds100.keymapper.base.utils.ui.compose.keyMapperShowcaseStyle +import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt index b471a952f3..209ed46207 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt @@ -33,7 +33,7 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController -import io.github.sds100.keymapper.base.util.ui.SelectionState +import io.github.sds100.keymapper.base.utils.ui.SelectionState @Composable fun HomeScreen( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt index 6c06a27d9e..92a4ca45c3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt @@ -8,7 +8,6 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.R import io.github.sds100.keymapper.backup.BackupRestoreMappingsUseCase import io.github.sds100.keymapper.floating.ListFloatingLayoutsUseCase @@ -20,14 +19,14 @@ import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase -import io.github.sds100.keymapper.base.util.ui.DialogResponse -import io.github.sds100.keymapper.base.util.ui.NavigationViewModel -import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt index 23b59f3f17..9423fee8e2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt @@ -91,7 +91,7 @@ import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.constraints.ConstraintMode @@ -101,12 +101,12 @@ import io.github.sds100.keymapper.groups.GroupConstraintRow import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.groups.GroupRow import io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText -import io.github.sds100.keymapper.base.util.ui.compose.icons.Import -import io.github.sds100.keymapper.base.util.ui.compose.icons.KeyMapperIcons +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText +import io.github.sds100.keymapper.base.utils.ui.compose.icons.Import +import io.github.sds100.keymapper.base.utils.ui.compose.icons.KeyMapperIcons import kotlinx.coroutines.launch @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt index 8106552e5f..8f961c0fe7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt @@ -43,8 +43,8 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.groups.GroupBreadcrumbRow import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.groups.GroupRow -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt index 8521ec8191..09159aa65e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.home import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter +import io.github.sds100.keymapper.system.service.ServiceAdapter import io.github.sds100.keymapper.system.accessibility.ServiceState import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ClickType.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ClickType.kt similarity index 60% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ClickType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ClickType.kt index 893b0b1ea4..260acb2d0e 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ClickType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ClickType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps enum class ClickType { SHORT_PRESS, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt similarity index 94% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt index 56e75dc22f..5efeda0d6d 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import android.os.Bundle import android.view.LayoutInflater @@ -21,9 +21,9 @@ import androidx.navigation.navGraphViewModels import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.ui.setupNavigation -import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.base.utils.ui.showPopups class ConfigKeyMapFragment : Fragment() { diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapOptionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt similarity index 91% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapOptionsViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt index 0202018bfa..1c7015337b 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapOptionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt @@ -1,20 +1,20 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import android.graphics.Color import android.graphics.drawable.Drawable import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionUiHelper -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.dataOrNull -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.common.util.state.mapData -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.TintType -import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.TintType +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt index e555691dff..57b6287e8a 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import androidx.activity.compose.BackHandler import androidx.compose.foundation.layout.Arrangement @@ -61,9 +61,9 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintsScreen import io.github.sds100.keymapper.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.trigger.TriggerScreen -import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperTapTarget -import io.github.sds100.keymapper.base.util.ui.compose.keyMapperShowcaseStyle -import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe +import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperTapTarget +import io.github.sds100.keymapper.base.utils.ui.compose.keyMapperShowcaseStyle +import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe import kotlinx.coroutines.launch @Composable diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt similarity index 97% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt index f02d72277a..1ba9f49415 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt @@ -1,13 +1,13 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.mapping.actions.Action import io.github.sds100.keymapper.mapping.actions.ActionData import io.github.sds100.keymapper.mapping.actions.RepeatMode -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.dataOrNull -import io.github.sds100.keymapper.common.util.state.ifIsData +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.common.utils.ifIsData import io.github.sds100.keymapper.mapping.constraints.Constraint import io.github.sds100.keymapper.mapping.constraints.ConstraintMode import io.github.sds100.keymapper.mapping.constraints.ConstraintState @@ -17,7 +17,7 @@ import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.floating.FloatingButtonEntityMapper -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter +import io.github.sds100.keymapper.system.service.ServiceAdapter import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils @@ -30,9 +30,10 @@ import io.github.sds100.keymapper.mapping.trigger.Trigger import io.github.sds100.keymapper.mapping.trigger.TriggerKey import io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice import io.github.sds100.keymapper.mapping.trigger.TriggerMode -import io.github.sds100.keymapper.base.util.ServiceEvent -import io.github.sds100.keymapper.base.util.firstBlocking -import io.github.sds100.keymapper.base.util.moveElement +import io.github.sds100.keymapper.base.system.accessibility.ServiceEvent +import io.github.sds100.keymapper.common.utils.firstBlocking +import io.github.sds100.keymapper.common.utils.moveElement +import io.github.sds100.keymapper.system.accessibility.FingerprintGestureType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow @@ -870,7 +871,7 @@ class ConfigKeyMapUseCaseController @Inject constructor( return floatingLayoutRepository.count() } - override suspend fun sendServiceEvent(event: ServiceEvent): Result<*> { + override suspend fun sendServiceEvent(event: io.github.sds100.keymapper.base.system.accessibility.ServiceEvent): Result<*> { return serviceAdapter.send(event) } @@ -987,7 +988,7 @@ interface ConfigKeyMapUseCase : GetDefaultKeyMapOptionsUseCase { fun removeConstraint(id: String) fun setAndMode() fun setOrMode() - suspend fun sendServiceEvent(event: ServiceEvent): Result<*> + suspend fun sendServiceEvent(event: io.github.sds100.keymapper.base.system.accessibility.ServiceEvent): Result<*> // trigger fun addKeyCodeTriggerKey( diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt similarity index 91% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt index d415e1552d..1c30ec3b95 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ConfigKeyMapViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt @@ -1,8 +1,7 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import android.os.Bundle import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.actions.ConfigActionsViewModel import io.github.sds100.keymapper.actions.CreateActionUseCase @@ -14,12 +13,12 @@ import io.github.sds100.keymapper.purchasing.PurchasingManager import io.github.sds100.keymapper.trigger.ConfigTriggerViewModel import io.github.sds100.keymapper.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase -import io.github.sds100.keymapper.ui.utils.getJsonSerializable -import io.github.sds100.keymapper.ui.utils.putJsonSerializable -import io.github.sds100.keymapper.common.util.state.dataOrNull -import io.github.sds100.keymapper.base.util.firstBlocking -import io.github.sds100.keymapper.common.util.state.ifIsData -import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.common.utils.getJsonSerializable +import io.github.sds100.keymapper.common.utils.putJsonSerializable +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.base.utils.firstBlocking +import io.github.sds100.keymapper.common.utils.ifIsData +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt similarity index 93% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutActivity.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt index 70020bf392..b69e02d7ad 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import android.os.Bundle import androidx.activity.SystemBarStyle @@ -14,8 +14,8 @@ import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.compose.ComposeColors import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.system.permissions.RequestPermissionDelegate -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.launchRepeatOnLifecycle import kotlinx.coroutines.flow.collectLatest class CreateKeyMapShortcutActivity : AppCompatActivity() { diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt similarity index 97% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt index 2827c61ba8..3f3b1cef55 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedContent @@ -38,7 +38,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.groups.GroupBreadcrumbRow @@ -46,11 +46,11 @@ import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.groups.GroupRow import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.CustomDialog +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.CustomDialog @Composable fun CreateKeyMapShortcutScreen( diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt similarity index 93% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt index 67ce15e2a1..e79c8e6e91 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt @@ -1,13 +1,13 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import android.content.Intent import android.graphics.drawable.Drawable import androidx.core.os.bundleOf import io.github.sds100.keymapper.R import io.github.sds100.keymapper.api.Api -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.system.apps.AppShortcutAdapter -import io.github.sds100.keymapper.base.util.ResourceProvider +import io.github.sds100.keymapper.base.utils.ResourceProvider import javax.inject.Inject import javax.inject.Singleton diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt similarity index 95% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt index d692856d0b..880f15fca0 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/CreateKeyMapShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import android.content.Intent import android.graphics.Color @@ -17,11 +17,11 @@ import io.github.sds100.keymapper.constraints.ConstraintUiHelper import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.mapData -import io.github.sds100.keymapper.base.util.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.TintType -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.base.utils.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.TintType +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asSharedFlow diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt similarity index 89% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/DisplayKeyMapUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index 7020c91842..38f6ed3d77 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -1,26 +1,22 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps -import android.content.Context import android.graphics.drawable.Drawable -import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.actions.DisplayActionUseCase import io.github.sds100.keymapper.actions.GetActionErrorUseCase -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.otherwise -import io.github.sds100.keymapper.common.util.result.then -import io.github.sds100.keymapper.common.util.result.valueIfFailure +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.otherwise +import io.github.sds100.keymapper.common.utils.then +import io.github.sds100.keymapper.common.utils.valueIfFailure import io.github.sds100.keymapper.constraints.DisplayConstraintUseCase import io.github.sds100.keymapper.constraints.GetConstraintErrorUseCase import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.purchasing.ProductId import io.github.sds100.keymapper.purchasing.PurchasingError import io.github.sds100.keymapper.purchasing.PurchasingManager import io.github.sds100.keymapper.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper @@ -29,10 +25,9 @@ import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.ringtone.RingtoneAdapter import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.dataOrNull -import io.github.sds100.keymapper.base.util.ResourceProvider -import io.github.sds100.keymapper.base.util.SettingsRepository +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.base.utils.SettingsRepository import kotlinx.coroutines.TimeoutCancellationException import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.callbackFlow @@ -51,7 +46,7 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, private val packageManagerAdapter: PackageManagerAdapter, private val settingsRepository: SettingsRepository, - private val accessibilityServiceAdapter: AccessibilityServiceAdapter, + private val accessibilityServiceAdapter: io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapter, private val settingsRepository2: SettingsRepository, private val purchasingManager: PurchasingManager, private val ringtoneAdapter: RingtoneAdapter, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/FingerprintGesturesSupportedUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt similarity index 83% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/FingerprintGesturesSupportedUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt index 4acc60286b..c9042ce14a 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/FingerprintGesturesSupportedUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt @@ -1,13 +1,11 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps -import android.content.Context import android.os.Build import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.base.util.SettingsRepository +import io.github.sds100.keymapper.base.utils.SettingsRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/GetDefaultKeyMapOptionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/GetDefaultKeyMapOptionsUseCase.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/GetDefaultKeyMapOptionsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/GetDefaultKeyMapOptionsUseCase.kt index 8739d46d52..11e3b89199 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/GetDefaultKeyMapOptionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/GetDefaultKeyMapOptionsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMap.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt similarity index 99% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMap.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt index 4faf929ce4..b128fbafaa 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMap.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import android.view.KeyEvent import io.github.sds100.keymapper.actions.Action diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapAppBarState.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt similarity index 90% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapAppBarState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt index 7e3c8043b6..209f8002c6 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapAppBarState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt @@ -1,10 +1,10 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.groups.GroupListItemModel import io.github.sds100.keymapper.home.HomeWarningListItem import io.github.sds100.keymapper.home.SelectedKeyMapsEnabled -import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel sealed class KeyMapAppBarState { data class RootGroup( diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapGroup.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt similarity index 64% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapGroup.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt index a5321f3e1f..ea8d866b34 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapGroup.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt @@ -1,7 +1,7 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.groups.Group -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State data class KeyMapGroup( val group: Group?, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListItemCreator.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt similarity index 97% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListItemCreator.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt index 6544f8096c..dc4c4d2445 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListItemCreator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.outlined.ArrowForward @@ -6,7 +6,7 @@ import androidx.compose.material.icons.outlined.Add import io.github.sds100.keymapper.R import io.github.sds100.keymapper.actions.ActionErrorSnapshot import io.github.sds100.keymapper.actions.ActionUiHelper -import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.constraints.ConstraintErrorSnapshot import io.github.sds100.keymapper.constraints.ConstraintState import io.github.sds100.keymapper.constraints.ConstraintUiHelper @@ -22,10 +22,10 @@ import io.github.sds100.keymapper.trigger.Trigger import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.trigger.TriggerKeyDevice import io.github.sds100.keymapper.trigger.TriggerMode -import io.github.sds100.keymapper.base.util.isFixable -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.system.accessibility.FingerprintGestureType class KeyMapListItemCreator( private val displayMapping: DisplayKeyMapUseCase, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt similarity index 97% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt index 428995170d..bfe9ff8c5e 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Arrangement @@ -16,7 +16,6 @@ import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState -import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.text.InlineTextContent import androidx.compose.foundation.text.appendInlineContent @@ -54,17 +53,17 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.trigger.KeyMapListItemModel import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.compose.CompactChip -import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.ErrorCompactChip +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.compose.CompactChip +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.ErrorCompactChip @Composable fun KeyMapList( diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListState.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt similarity index 68% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt index 0575c55528..366624deb2 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt @@ -1,7 +1,7 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.trigger.KeyMapListItemModel -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State data class KeyMapListState( val appBarState: KeyMapAppBarState, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt similarity index 95% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index f192e36b7e..441fe6a4e3 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -8,11 +8,11 @@ import io.github.sds100.keymapper.actions.ActionErrorSnapshot import io.github.sds100.keymapper.backup.BackupRestoreMappingsUseCase import io.github.sds100.keymapper.backup.ImportExportState import io.github.sds100.keymapper.backup.RestoreType -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.constraints.ConstraintErrorSnapshot import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.constraints.ConstraintUiHelper @@ -35,26 +35,26 @@ import io.github.sds100.keymapper.trigger.SetupGuiKeyboardState import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.trigger.TriggerError import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.dataOrNull -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.common.util.state.ifIsData -import io.github.sds100.keymapper.common.util.state.mapData -import io.github.sds100.keymapper.base.util.ui.DialogResponse -import io.github.sds100.keymapper.base.util.ui.MultiSelectProvider -import io.github.sds100.keymapper.base.util.ui.NavDestination -import io.github.sds100.keymapper.base.util.ui.NavigateEvent -import io.github.sds100.keymapper.base.util.ui.NavigationViewModel -import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.SelectionState -import io.github.sds100.keymapper.base.util.ui.ViewModelHelper -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.navigate -import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.common.utils.ifIsData +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider +import io.github.sds100.keymapper.base.utils.ui.NavDestination +import io.github.sds100.keymapper.base.utils.ui.NavigateEvent +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.SelectionState +import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapOptionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt similarity index 96% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapOptionsScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt index f8b87432ba..ce0e39e3d5 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapOptionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import android.content.ClipData import androidx.compose.animation.AnimatedVisibility @@ -43,13 +43,13 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.ui.SliderMaximums -import io.github.sds100.keymapper.base.util.ui.SliderMinimums -import io.github.sds100.keymapper.base.util.ui.SliderStepSizes -import io.github.sds100.keymapper.base.util.ui.compose.CheckBoxText -import io.github.sds100.keymapper.base.util.ui.compose.SliderOptionText -import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.ui.SliderMaximums +import io.github.sds100.keymapper.base.utils.ui.SliderMinimums +import io.github.sds100.keymapper.base.utils.ui.SliderStepSizes +import io.github.sds100.keymapper.base.utils.ui.compose.CheckBoxText +import io.github.sds100.keymapper.base.utils.ui.compose.SliderOptionText +import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe import kotlinx.coroutines.launch @Composable diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapRepository.kt similarity index 86% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapRepository.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapRepository.kt index 5b2f6a54f2..20c2df9dae 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/KeyMapRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapRepository.kt @@ -1,7 +1,7 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.data.entities.KeyMapEntity -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow interface KeyMapRepository { diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ListKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt similarity index 97% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ListKeyMapsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt index 4b850fc3da..367965b689 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ListKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt @@ -1,12 +1,12 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.R import io.github.sds100.keymapper.backup.BackupManager import io.github.sds100.keymapper.backup.BackupManagerImpl import io.github.sds100.keymapper.backup.BackupUtils -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.ConstraintEntityMapper import io.github.sds100.keymapper.constraints.ConstraintMode @@ -19,9 +19,9 @@ import io.github.sds100.keymapper.groups.Group import io.github.sds100.keymapper.groups.GroupEntityMapper import io.github.sds100.keymapper.groups.GroupFamily import io.github.sds100.keymapper.system.files.FileAdapter -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.dataOrNull -import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/PauseKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt similarity index 86% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/PauseKeyMapsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt index e36b4918e9..b32d239ebb 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/PauseKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt @@ -1,12 +1,10 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps -import android.content.Context -import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.media.MediaAdapter import io.github.sds100.keymapper.system.ringtone.RingtoneAdapter -import io.github.sds100.keymapper.base.util.SettingsRepository +import io.github.sds100.keymapper.base.utils.SettingsRepository import javax.inject.Inject import javax.inject.Singleton import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt new file mode 100644 index 0000000000..3d964bcf9a --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutModel.kt @@ -0,0 +1,9 @@ +package io.github.sds100.keymapper.base.keymaps + +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo + +data class ShortcutModel( + val icon: ComposeIconInfo, + val text: String, + val data: T, +) diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt similarity index 96% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutRow.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt index 84f1c72325..a98a91edcc 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.Arrangement @@ -27,8 +27,8 @@ import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.trigger.TriggerKeyShortcut -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @Composable fun ShortcutRow( diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/SimpleMappingController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/SimpleMappingController.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt index 9be82852e8..2f00bd8c75 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/SimpleMappingController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.PerformActionsUseCase @@ -7,7 +7,7 @@ import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.constraints.isSatisfied import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase -import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.base.utils.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineStart import kotlinx.coroutines.Job diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectKeyMapModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt similarity index 79% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectKeyMapModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt index f7a8aa9bbd..b732403cc2 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectKeyMapModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.constraints.ConstraintState import io.github.sds100.keymapper.base.keymaps.KeyMap diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt similarity index 96% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectKeyMapsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt index 3a680b6e6f..0f1468c4ba 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import android.accessibilityservice.AccessibilityService import android.os.SystemClock @@ -29,11 +29,10 @@ import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.system.vibrator.VibratorAdapter import io.github.sds100.keymapper.system.volume.VolumeAdapter import io.github.sds100.keymapper.trigger.FingerprintTriggerKey -import io.github.sds100.keymapper.base.util.InputEventType -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.dataOrNull -import io.github.sds100.keymapper.base.util.ResourceProvider -import io.github.sds100.keymapper.base.util.SettingsRepository +import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.base.utils.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectScreenOffKeyEventsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt similarity index 96% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectScreenOffKeyEventsController.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt index 3388b8c7bc..ef500d4d05 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DetectScreenOffKeyEventsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt @@ -1,14 +1,14 @@ -package io.github.sds100.keymapper.mapping.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import android.view.InputDevice import android.view.KeyEvent -import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DpadMotionEventTracker.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DpadMotionEventTracker.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt index 7746364f5b..df0b59f33d 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/DpadMotionEventTracker.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import android.view.InputDevice import android.view.KeyEvent diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/ParallelTriggerActionPerformer.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/ParallelTriggerActionPerformer.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt index 5cba444b56..b99fc266c8 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/ParallelTriggerActionPerformer.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.ActionData @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.actions.PerformActionsUseCase import io.github.sds100.keymapper.actions.RepeatMode import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.base.utils.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/SequenceTriggerActionPerformer.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt similarity index 90% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/SequenceTriggerActionPerformer.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt index 7438117cc4..aea479084d 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/SequenceTriggerActionPerformer.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt @@ -1,8 +1,8 @@ -package io.github.sds100.keymapper.mapping.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.actions.Action import io.github.sds100.keymapper.actions.PerformActionsUseCase -import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.base.utils.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt similarity index 95% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt index 8b6565bd7b..2b61bc4705 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.actions.PerformActionsUseCase import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt index 4acae4ad35..8791689186 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt @@ -3,10 +3,10 @@ package io.github.sds100.keymapper.base.logging import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.clipboard.ClipboardAdapter import io.github.sds100.keymapper.system.files.FileAdapter -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.ifIsData -import io.github.sds100.keymapper.common.util.state.mapData -import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.ifIsData +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt index 76b30d8f75..051f7cd4f2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.logging -import io.github.sds100.keymapper.base.util.ui.TintType +import io.github.sds100.keymapper.base.utils.ui.TintType data class LogEntryListItem( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt index ab26c179f7..0a370bab4b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt @@ -18,11 +18,11 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.logEntry import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment -import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.utils.ui.showPopups import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt index ad4991cd17..aa0d291008 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.logging import io.github.sds100.keymapper.data.entities.LogEntryEntity -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt index 7a658257d1..43c5d8cb1d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt @@ -5,17 +5,17 @@ import androidx.lifecycle.viewModelScope import com.michaelflisar.dragselectrecyclerview.DragSelectionProcessor import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.ifIsData -import io.github.sds100.keymapper.common.util.state.mapData -import io.github.sds100.keymapper.base.util.ui.MultiSelectProvider -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.SelectionState -import io.github.sds100.keymapper.base.util.ui.TintType -import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.ifIsData +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.SelectionState +import io.github.sds100.keymapper.base.utils.ui.TintType +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt index b026d7aae1..88e25e6df5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt @@ -1,14 +1,11 @@ package io.github.sds100.keymapper.base.onboarding -import android.content.Context import androidx.datastore.preferences.core.Preferences -import dagger.hilt.android.qualifiers.ApplicationContext -import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.canUseImeToPerform import io.github.sds100.keymapper.actions.canUseShizukuToPerform -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.handle +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.handle import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.data.repositories.PreferenceRepository @@ -23,11 +20,10 @@ import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.leanback.LeanbackAdapter import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.base.util.PrefDelegate -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.VersionHelper -import io.github.sds100.keymapper.base.util.ResourceProvider -import io.github.sds100.keymapper.base.util.SettingsRepository +import io.github.sds100.keymapper.base.utils.PrefDelegate +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.VersionHelper +import io.github.sds100.keymapper.base.utils.SettingsRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filterIsInstance diff --git a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt index 9d95c8feef..fb0e5df86a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.purchasing -import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.utils.Error sealed class PurchasingError : Error() { data object PurchasingNotImplemented : PurchasingError() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt index fd9a4d5555..e88f8eed04 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.purchasing -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt index df31687030..ca6e78e29e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt @@ -4,7 +4,7 @@ import android.view.KeyEvent import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputmethod.InputKeyModel -import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.base.utils.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt index ce884f971d..a1db5f27a0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -7,8 +7,8 @@ import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper -import io.github.sds100.keymapper.common.util.firstBlocking -import io.github.sds100.keymapper.base.util.SettingsRepository +import io.github.sds100.keymapper.common.utils.firstBlocking +import io.github.sds100.keymapper.base.utils.SettingsRepository import kotlinx.coroutines.flow.map import kotlinx.coroutines.runBlocking import javax.inject.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt index 05e81fa007..c9a70dc003 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt @@ -10,13 +10,13 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.system.leanback.LeanbackUtils import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.str -import io.github.sds100.keymapper.base.util.ui.ChooseAppStoreModel -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.showPopup -import io.github.sds100.keymapper.common.util.viewLifecycleScope +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.base.utils.ui.ChooseAppStoreModel +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest class Android11BugWorkaroundSettingsFragment : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt index b8ea11ef10..87ae6767fa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt @@ -10,9 +10,9 @@ import androidx.preference.isEmpty import io.github.sds100.keymapper.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.system.notifications.NotificationController +import io.github.sds100.keymapper.base.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils -import io.github.sds100.keymapper.common.util.viewLifecycleScope +import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope class AutomaticallyChangeImeSettings : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt index 89e65613ca..0f2d22383e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt @@ -12,9 +12,9 @@ import androidx.preference.PreferenceFragmentCompat import com.google.android.material.bottomappbar.BottomAppBar import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.str -import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.base.utils.ui.showPopups abstract class BaseSettingsFragment : PreferenceFragmentCompat() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt index b572a4c7ab..10219f1ee0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.settings import androidx.datastore.preferences.core.Preferences import io.github.sds100.keymapper.actions.sound.SoundFileInfo import io.github.sds100.keymapper.actions.sound.SoundsManager -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.PreferenceRepository @@ -18,7 +18,7 @@ import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.channelFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt index f87b480072..370b13133b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt @@ -9,10 +9,10 @@ import androidx.preference.isEmpty import io.github.sds100.keymapper.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.SliderMaximums -import io.github.sds100.keymapper.base.util.ui.SliderMinimums -import io.github.sds100.keymapper.common.util.viewLifecycleScope +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.SliderMaximums +import io.github.sds100.keymapper.base.utils.ui.SliderMinimums +import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest class DefaultOptionsSettingsFragment : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt index ad7438f11b..5fc659c4bb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt @@ -9,9 +9,9 @@ import androidx.preference.SwitchPreferenceCompat import androidx.preference.isEmpty import io.github.sds100.keymapper.R import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.system.notifications.NotificationController +import io.github.sds100.keymapper.base.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils -import io.github.sds100.keymapper.common.util.viewLifecycleScope +import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope class ImePickerSettingsFragment : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt index 0b0507f0da..34c003cca0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt @@ -21,13 +21,13 @@ import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.system.notifications.NotificationController +import io.github.sds100.keymapper.base.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils -import io.github.sds100.keymapper.common.util.firstBlocking -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.str -import io.github.sds100.keymapper.base.util.strArray -import io.github.sds100.keymapper.common.util.viewLifecycleScope +import io.github.sds100.keymapper.common.utils.firstBlocking +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.base.utils.strArray +import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import splitties.alertdialog.appcompat.alertDialog import splitties.alertdialog.appcompat.messageResource diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt index 088a8c3d12..9644e4e272 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt @@ -2,22 +2,21 @@ package io.github.sds100.keymapper.base.settings import androidx.datastore.preferences.core.Preferences import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess -import io.github.sds100.keymapper.common.util.result.otherwise -import io.github.sds100.keymapper.base.util.SharedPrefsDataStoreWrapper -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.ui.DialogResponse -import io.github.sds100.keymapper.base.util.ui.MultiChoiceItem -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.common.utils.otherwise +import io.github.sds100.keymapper.base.utils.SharedPrefsDataStoreWrapper +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow @@ -25,7 +24,6 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.base.settings.ConfigSettingsUseCase import javax.inject.Inject @HiltViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt index 31a825fee2..9c86eed10b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt @@ -7,10 +7,10 @@ import androidx.preference.Preference import androidx.preference.isEmpty import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.str -import io.github.sds100.keymapper.common.util.viewLifecycleScope +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn diff --git a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt index a09e86272e..d306ed78bf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt @@ -7,7 +7,7 @@ import android.os.SystemClock import android.view.KeyEvent import io.github.sds100.keymapper.system.inputevents.InputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel -import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.base.utils.InputEventType import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import rikka.shizuku.ShizukuBinderWrapper diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt index 89bd1b93f8..450ff69fc7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt @@ -70,8 +70,8 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.util.ui.compose.DraggableItem -import io.github.sds100.keymapper.base.util.ui.compose.rememberDragDropState +import io.github.sds100.keymapper.base.utils.ui.compose.DraggableItem +import io.github.sds100.keymapper.base.utils.ui.compose.rememberDragDropState import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt index 6edc28b35e..943eadf8ff 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt @@ -1,7 +1,5 @@ package io.github.sds100.keymapper.base.sorting -import android.content.Context -import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase @@ -10,7 +8,7 @@ import io.github.sds100.keymapper.sorting.comparators.KeyMapActionsComparator import io.github.sds100.keymapper.sorting.comparators.KeyMapConstraintsComparator import io.github.sds100.keymapper.sorting.comparators.KeyMapOptionsComparator import io.github.sds100.keymapper.sorting.comparators.KeyMapTriggerComparator -import io.github.sds100.keymapper.base.util.SettingsRepository +import io.github.sds100.keymapper.base.utils.SettingsRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt index e402303587..fe2a308fc8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt @@ -2,9 +2,9 @@ package io.github.sds100.keymapper.base.sorting.comparators import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.DisplayActionUseCase -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.base.keymaps.KeyMap class KeyMapActionsComparator( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt index c06a4867e8..58f6e558b6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.sorting.comparators -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.then -import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.then +import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.DisplayConstraintUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt index 1bb90b069f..6a82550597 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt @@ -4,17 +4,17 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.fixError import io.github.sds100.keymapper.simple -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.ListItem -import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils -import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld -import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment -import io.github.sds100.keymapper.base.util.ui.TextListItem +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.ListItem +import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils +import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.utils.ui.TextListItem import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt index e94a9f1e43..1d9058094b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt @@ -4,15 +4,15 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.bluetooth.ChooseBluetoothDeviceUseCase -import io.github.sds100.keymapper.base.util.ui.DefaultSimpleListItem -import io.github.sds100.keymapper.base.util.ui.ListItem -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.TextListItem +import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem +import io.github.sds100.keymapper.base.utils.ui.ListItem +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.TextListItem import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeRecorder.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt similarity index 95% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeRecorder.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt index becc2fcf78..7523bcf648 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeRecorder.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt @@ -1,13 +1,14 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.base.system.accessibility import android.accessibilityservice.AccessibilityService import android.os.Build import android.os.CountDownTimer import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityNodeInfo -import io.github.sds100.keymapper.actions.uielement.NodeInteractionType import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository +import io.github.sds100.keymapper.system.accessibility.NodeInteractionType +import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapter.kt similarity index 86% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapter.kt index f7ddd1c811..3c42a52ae5 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.base.system.accessibility import android.content.ActivityNotFoundException import android.content.Context @@ -9,18 +9,18 @@ import android.os.Build import android.os.Handler import android.os.Looper import android.provider.Settings -import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess +import dagger.hilt.android.qualifiers.ApplicationContext +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SettingsUtils +import io.github.sds100.keymapper.system.accessibility.ServiceState import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.system.service.ServiceAdapter import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableSharedFlow @@ -32,21 +32,22 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import kotlinx.coroutines.withTimeoutOrNull import timber.log.Timber +import javax.inject.Singleton -class AccessibilityServiceAdapter( - context: Context, +@Singleton +class AccessibilityServiceAdapter( + @ApplicationContext context: Context, private val coroutineScope: CoroutineScope, + private val permissionAdapter: PermissionAdapter ) : ServiceAdapter { private val ctx = context.applicationContext - override val eventReceiver = MutableSharedFlow() + override val eventReceiver = MutableSharedFlow() - val eventsToService = MutableSharedFlow() + val eventsToService = MutableSharedFlow() override val state = MutableStateFlow(ServiceState.DISABLED) - - private val permissionAdapter: PermissionAdapter by lazy { ServiceLocator.permissionAdapter(ctx) } - + init { // use job scheduler because there is there is a much shorter delay when the app is in the background if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { @@ -75,13 +76,13 @@ class AccessibilityServiceAdapter( }.launchIn(coroutineScope) } - override fun sendAsync(event: ServiceEvent) { + override fun sendAsync(event: E) { coroutineScope.launch { eventsToService.emit(event) } } - override suspend fun send(event: ServiceEvent): Result<*> { + override suspend fun send(event: E): Result<*> { state.value = getState() if (state.value == ServiceState.DISABLED) { @@ -120,11 +121,11 @@ class AccessibilityServiceAdapter( delay(100) Timber.d("Ping service to check if crashed") - eventsToService.emit(ServiceEvent.Ping(key)) + eventsToService.emit(E.Ping(key)) } - val pong: ServiceEvent.Pong? = withTimeoutOrNull(2000L) { - eventReceiver.first { it == ServiceEvent.Pong(key) } as ServiceEvent.Pong? + val pong: E.Pong? = withTimeoutOrNull(2000L) { + eventReceiver.first { it == E.Pong(key) } as E.Pong? } if (pong == null) { @@ -192,7 +193,7 @@ class AccessibilityServiceAdapter( private suspend fun disableServiceSuspend() { // disableSelf method only exists in 7.0.0+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - send(ServiceEvent.DisableService).onSuccess { + send(E.DisableService).onSuccess { Timber.i("Disabling service by calling disableSelf()") return @@ -211,7 +212,7 @@ class AccessibilityServiceAdapter( enabledServices ?: return - val className = MyAccessibilityService::class.java.name + val className = io.github.sds100.keymapper.system.accessibility.MyAccessibilityService::class.java.name val keyMapperEntry = "${Constants.PACKAGE_NAME}/$className" @@ -242,13 +243,13 @@ class AccessibilityServiceAdapter( val pingJob = coroutineScope.launch { repeat(20) { - eventsToService.emit(ServiceEvent.Ping(key)) + eventsToService.emit(E.Ping(key)) delay(100) } } - val pong: ServiceEvent.Pong? = withTimeoutOrNull(2000L) { - eventReceiver.first { it == ServiceEvent.Pong(key) } as ServiceEvent.Pong? + val pong: E.Pong? = withTimeoutOrNull(2000L) { + eventReceiver.first { it == E.Pong(key) } as E.Pong? } pingJob.cancel() @@ -285,7 +286,7 @@ class AccessibilityServiceAdapter( Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, ) - val className = MyAccessibilityService::class.java.name + val className = io.github.sds100.keymapper.system.accessibility.MyAccessibilityService::class.java.name val keyMapperEntry = "${Constants.PACKAGE_NAME}/$className" diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceEvent.kt new file mode 100644 index 0000000000..c4648ff849 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceEvent.kt @@ -0,0 +1,86 @@ +package io.github.sds100.keymapper.base.system.accessibility + +import android.os.Parcelable +import io.github.sds100.keymapper.actions.ActionData +import io.github.sds100.keymapper.mapping.trigger.KeyEventDetectionSource +import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState +import io.github.sds100.keymapper.system.devices.InputDeviceInfo +import io.github.sds100.keymapper.trigger.KeyEventDetectionSource +import kotlinx.parcelize.Parcelize +import kotlinx.serialization.Serializable + +@Serializable +sealed class AccessibilityServiceEvent { + + @Serializable + data class Ping(val key: String) : AccessibilityServiceEvent() + + @Serializable + data class Pong(val key: String) : AccessibilityServiceEvent() + + @Parcelize + @Serializable + data class RecordedTriggerKey( + val keyCode: Int, + val device: InputDeviceInfo?, + val detectionSource: KeyEventDetectionSource, + ) : AccessibilityServiceEvent(), + Parcelable + + @Serializable + object StartRecordingTrigger : AccessibilityServiceEvent() + + @Serializable + object StopRecordingTrigger : AccessibilityServiceEvent() + + @Serializable + data class OnIncrementRecordTriggerTimer(val timeLeft: Int) : AccessibilityServiceEvent() + + @Serializable + object OnStoppedRecordingTrigger : AccessibilityServiceEvent() + + @Serializable + object OnHideKeyboardEvent : AccessibilityServiceEvent() + + @Serializable + object OnShowKeyboardEvent : AccessibilityServiceEvent() + + @Serializable + object HideKeyboard : AccessibilityServiceEvent() + + @Serializable + object ShowKeyboard : AccessibilityServiceEvent() + + @Serializable + data class TestAction(val action: ActionData) : AccessibilityServiceEvent() + + @Serializable + data class ChangeIme(val imeId: String) : AccessibilityServiceEvent() + + @Serializable + object DisableService : AccessibilityServiceEvent() + + @Serializable + object DismissLastNotification : AccessibilityServiceEvent() + + @Serializable + object DismissAllNotifications : AccessibilityServiceEvent() + + @Serializable + data class OnInputFocusChange(val isFocussed: Boolean) : AccessibilityServiceEvent() + + @Serializable + data class TriggerKeyMap(val uid: String) : AccessibilityServiceEvent() + + @Serializable + data class EnableInputMethod(val imeId: String) : AccessibilityServiceEvent() + + @Serializable + data object StartRecordingNodes : AccessibilityServiceEvent() + + @Serializable + data object StopRecordingNodes : AccessibilityServiceEvent() + + @Serializable + data class OnRecordNodeStateChanged(val state: RecordAccessibilityNodeState) : AccessibilityServiceEvent() +} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt similarity index 50% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt index 9de93a3735..8f73d15c1f 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt @@ -1,21 +1,15 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.base.system.accessibility import android.accessibilityservice.AccessibilityService import android.accessibilityservice.FingerprintGestureController -import android.accessibilityservice.GestureDescription -import android.accessibilityservice.GestureDescription.StrokeDescription -import android.annotation.SuppressLint import android.app.ActivityManager import android.content.Intent import android.content.res.Configuration -import android.graphics.Path -import android.graphics.Point import android.os.Build import android.view.KeyEvent import android.view.MotionEvent import android.view.accessibility.AccessibilityEvent import androidx.core.content.getSystemService -import androidx.core.os.bundleOf import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry @@ -23,21 +17,17 @@ import androidx.savedstate.SavedStateRegistry import androidx.savedstate.SavedStateRegistryController import androidx.savedstate.SavedStateRegistryOwner import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback import io.github.sds100.keymapper.api.KeyEventRelayService import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapperImpl -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.InputEventType -import io.github.sds100.keymapper.base.util.MathUtils +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.system.accessibility.AccessibilityNodeModel +import io.github.sds100.keymapper.system.accessibility.IAccessibilityService +import io.github.sds100.keymapper.system.accessibility.toModel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update @@ -45,15 +35,12 @@ import timber.log.Timber -class MyAccessibilityService : +class BaseAccessibilityService : AccessibilityService(), LifecycleOwner, IAccessibilityService, SavedStateRegistryOwner { - // virtual distance between fingers on multitouch gestures - private val fingerGestureDistance = 10L - private var lifecycleRegistry: LifecycleRegistry = LifecycleRegistry(this) private var savedStateRegistryController: SavedStateRegistryController? = SavedStateRegistryController.create(this) @@ -325,258 +312,4 @@ class MyAccessibilityService : override val lifecycle: Lifecycle get() = lifecycleRegistry - override fun hideKeyboard() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - softKeyboardController.showMode = SHOW_MODE_HIDDEN - } - } - - override fun showKeyboard() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - softKeyboardController.showMode = SHOW_MODE_AUTO - } - } - - override fun switchIme(imeId: String) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - softKeyboardController.switchToInputMethod(imeId) - } - } - - override fun performActionOnNode( - findNode: (node: AccessibilityNodeModel) -> Boolean, - performAction: (node: AccessibilityNodeModel) -> AccessibilityNodeAction?, - ): Result<*> { - val node = rootInActiveWindow.findNodeRecursively { - findNode(it.toModel()) - } - - if (node == null) { - return Error.FailedToFindAccessibilityNode - } - - val (action, extras) = performAction(node.toModel()) ?: return Success(Unit) - - node.performAction(action, bundleOf(*extras.toList().toTypedArray())) - node.recycle() - - return Success(Unit) - } - - override fun doGlobalAction(action: Int): Result<*> { - val success = performGlobalAction(action) - - if (success) { - return Success(Unit) - } else { - return Error.FailedToPerformAccessibilityGlobalAction(action) - } - } - - override fun tapScreen(x: Int, y: Int, inputEventType: InputEventType): Result<*> { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - val duration = 1L // ms - - val path = Path().apply { - moveTo(x.toFloat(), y.toFloat()) - } - - val strokeDescription = - when { - inputEventType == InputEventType.DOWN && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> - StrokeDescription( - path, - 0, - duration, - true, - ) - - inputEventType == InputEventType.UP && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> - StrokeDescription( - path, - 59999, - duration, - false, - ) - - else -> StrokeDescription(path, 0, duration) - } - - strokeDescription.let { - val gestureDescription = GestureDescription.Builder().apply { - addStroke(it) - }.build() - - val success = dispatchGesture(gestureDescription, null, null) - - return if (success) { - Success(Unit) - } else { - Error.FailedToDispatchGesture - } - } - } - - return Error.SdkVersionTooLow(Build.VERSION_CODES.N) - } - - override fun swipeScreen( - xStart: Int, - yStart: Int, - xEnd: Int, - yEnd: Int, - fingerCount: Int, - duration: Int, - inputEventType: InputEventType, - ): Result<*> { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - if (fingerCount >= GestureDescription.getMaxStrokeCount()) { - return Error.GestureStrokeCountTooHigh - } - if (duration >= GestureDescription.getMaxGestureDuration()) { - return Error.GestureDurationTooHigh - } - - val pStart = Point(xStart, yStart) - val pEnd = Point(xEnd, yEnd) - - val gestureBuilder = GestureDescription.Builder() - - if (fingerCount == 1) { - val p = Path() - p.moveTo(pStart.x.toFloat(), pStart.y.toFloat()) - p.lineTo(pEnd.x.toFloat(), pEnd.y.toFloat()) - gestureBuilder.addStroke(StrokeDescription(p, 0, duration.toLong())) - } else { - // segments between fingers - val segmentCount = fingerCount - 1 - // the line of the perpendicular line which will be created to place the virtual fingers on it - val perpendicularLineLength = (fingerGestureDistance * fingerCount).toInt() - - // the length of each segment between fingers - val segmentLength = perpendicularLineLength / segmentCount - // perpendicular line of the start swipe point - val perpendicularLineStart = MathUtils.getPerpendicularOfLine( - pStart, - pEnd, - perpendicularLineLength, - ) - // perpendicular line of the end swipe point - val perpendicularLineEnd = MathUtils.getPerpendicularOfLine( - pEnd, - pStart, - perpendicularLineLength, - true, - ) - - // this is the angle between start and end point to rotate all virtual fingers on the perpendicular lines in the same direction - val angle = - MathUtils.angleBetweenPoints(Point(xStart, yStart), Point(xEnd, yEnd)) - 90 - - // create the virtual fingers - for (index in 0..segmentCount) { - // offset of each finger - val fingerOffsetLength = index * segmentLength * 2 - // move the coordinates of the current virtual finger on the perpendicular line for the start coordinates - val startFingerCoordinateWithOffset = - MathUtils.movePointByDistanceAndAngle( - perpendicularLineStart.start, - fingerOffsetLength, - angle, - ) - // move the coordinates of the current virtual finger on the perpendicular line for the end coordinates - val endFingerCoordinateWithOffset = - MathUtils.movePointByDistanceAndAngle( - perpendicularLineEnd.start, - fingerOffsetLength, - angle, - ) - - // create a path for each finger, move the the coordinates on the perpendicular line and draw it to the end coordinates of the perpendicular line of the end swipe point - val p = Path() - p.moveTo( - startFingerCoordinateWithOffset.x.toFloat(), - startFingerCoordinateWithOffset.y.toFloat(), - ) - p.lineTo( - endFingerCoordinateWithOffset.x.toFloat(), - endFingerCoordinateWithOffset.y.toFloat(), - ) - - gestureBuilder.addStroke(StrokeDescription(p, 0, duration.toLong())) - } - } - - val success = dispatchGesture(gestureBuilder.build(), null, null) - - return if (success) { - Success(Unit) - } else { - Error.FailedToDispatchGesture - } - } - - return Error.SdkVersionTooLow(Build.VERSION_CODES.N) - } - - override fun pinchScreen( - x: Int, - y: Int, - distance: Int, - pinchType: PinchScreenType, - fingerCount: Int, - duration: Int, - inputEventType: InputEventType, - ): Result<*> { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - if (fingerCount >= GestureDescription.getMaxStrokeCount()) { - return Error.GestureStrokeCountTooHigh - } - if (duration >= GestureDescription.getMaxGestureDuration()) { - return Error.GestureDurationTooHigh - } - - val gestureBuilder = GestureDescription.Builder() - val distributedPoints: List = - MathUtils.distributePointsOnCircle(Point(x, y), distance.toFloat() / 2, fingerCount) - - for (index in distributedPoints.indices) { - val p = Path() - if (pinchType == PinchScreenType.PINCH_IN) { - p.moveTo(x.toFloat(), y.toFloat()) - p.lineTo( - distributedPoints[index].x.toFloat(), - distributedPoints[index].y.toFloat(), - ) - } else { - p.moveTo( - distributedPoints[index].x.toFloat(), - distributedPoints[index].y.toFloat(), - ) - p.lineTo(x.toFloat(), y.toFloat()) - } - - gestureBuilder.addStroke(StrokeDescription(p, 0, duration.toLong())) - } - - val success = dispatchGesture(gestureBuilder.build(), null, null) - - return if (success) { - Success(Unit) - } else { - Error.FailedToDispatchGesture - } - } - - return Error.SdkVersionTooLow(Build.VERSION_CODES.N) - } - - override fun findFocussedNode(focus: Int): AccessibilityNodeModel? = findFocus(focus)?.toModel() - - override fun setInputMethodEnabled(imeId: String, enabled: Boolean) { - @SuppressLint("CheckResult") - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - softKeyboardController.setInputMethodEnabled(imeId, enabled) - } - } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt similarity index 88% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt index d21b8f9822..487cc8c522 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/BaseAccessibilityServiceController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt @@ -1,5 +1,6 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.base.system.accessibility +import android.accessibilityservice.AccessibilityService import android.accessibilityservice.AccessibilityServiceInfo import android.content.res.Configuration import android.os.Build @@ -7,22 +8,16 @@ import android.view.KeyEvent import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityNodeInfo import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.actions.PerformActionsUseCase -import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType -import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase -import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectScreenOffKeyEventsController import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker import io.github.sds100.keymapper.base.keymaps.detection.KeyMapController import io.github.sds100.keymapper.base.keymaps.detection.TriggerKeyMapFromOtherAppsController +import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase import io.github.sds100.keymapper.reroutekeyevents.RerouteKeyEventsController -import io.github.sds100.keymapper.reroutekeyevents.RerouteKeyEventsUseCase import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent @@ -30,8 +25,14 @@ import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.base.util.ServiceEvent -import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.base.utils.firstBlocking +import io.github.sds100.keymapper.mapping.actions.PerformActionsUseCase +import io.github.sds100.keymapper.mapping.constraints.DetectConstraintsUseCase +import io.github.sds100.keymapper.mapping.keymaps.FingerprintGesturesSupportedUseCase +import io.github.sds100.keymapper.mapping.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.mapping.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.system.accessibility.FingerprintGestureType +import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -61,9 +62,9 @@ import timber.log.Timber abstract class BaseAccessibilityServiceController( private val coroutineScope: CoroutineScope, - private val service: MyAccessibilityService, - private val inputEvents: SharedFlow, - private val outputEvents: MutableSharedFlow, + private val service: AccessibilityService, + private val inputEvents: SharedFlow, + private val outputEvents: MutableSharedFlow, private val detectConstraintsUseCase: DetectConstraintsUseCase, private val performActionsUseCase: PerformActionsUseCase, private val detectKeyMapsUseCase: DetectKeyMapsUseCase, @@ -247,9 +248,9 @@ abstract class BaseAccessibilityServiceController( .drop(1) // Don't send it when collecting initially .onEach { isHidden -> if (isHidden) { - outputEvents.emit(ServiceEvent.OnHideKeyboardEvent) + outputEvents.emit(AccessibilityServiceEvent.OnHideKeyboardEvent) } else { - outputEvents.emit(ServiceEvent.OnShowKeyboardEvent) + outputEvents.emit(AccessibilityServiceEvent.OnShowKeyboardEvent) } }.launchIn(coroutineScope) @@ -276,7 +277,7 @@ abstract class BaseAccessibilityServiceController( coroutineScope.launch { accessibilityNodeRecorder.recordState.collectLatest { state -> - outputEvents.emit(ServiceEvent.OnRecordNodeStateChanged(state)) + outputEvents.emit(AccessibilityServiceEvent.OnRecordNodeStateChanged(state)) } } @@ -393,7 +394,7 @@ abstract class BaseAccessibilityServiceController( coroutineScope.launch { outputEvents.emit( - ServiceEvent.RecordedTriggerKey( + AccessibilityServiceEvent.RecordedTriggerKey( uniqueEvent.keyCode, uniqueEvent.device, detectionSource, @@ -472,7 +473,7 @@ abstract class BaseAccessibilityServiceController( coroutineScope.launch { outputEvents.emit( - ServiceEvent.RecordedTriggerKey( + AccessibilityServiceEvent.RecordedTriggerKey( keyEvent.keyCode, keyEvent.device, KeyEventDetectionSource.INPUT_METHOD, @@ -510,12 +511,12 @@ abstract class BaseAccessibilityServiceController( if (focussedNode?.isEditable == true && focussedNode.isFocused) { Timber.d("Got input focus") coroutineScope.launch { - outputEvents.emit(ServiceEvent.OnInputFocusChange(isFocussed = true)) + outputEvents.emit(AccessibilityServiceEvent.OnInputFocusChange(isFocussed = true)) } } else { Timber.d("Lost input focus") coroutineScope.launch { - outputEvents.emit(ServiceEvent.OnInputFocusChange(isFocussed = false)) + outputEvents.emit(AccessibilityServiceEvent.OnInputFocusChange(isFocussed = false)) } } } @@ -529,16 +530,16 @@ abstract class BaseAccessibilityServiceController( triggerKeyMapFromOtherAppsController.onDetected(uid) } - open fun onEventFromUi(event: ServiceEvent) { + open fun onEventFromUi(event: AccessibilityServiceEvent) { Timber.d("Service received event from UI: $event") when (event) { - is ServiceEvent.StartRecordingTrigger -> + is AccessibilityServiceEvent.StartRecordingTrigger -> if (!recordingTrigger) { recordDpadMotionEventTracker.reset() recordingTriggerJob = recordTriggerJob() } - is ServiceEvent.StopRecordingTrigger -> { + is AccessibilityServiceEvent.StopRecordingTrigger -> { val wasRecordingTrigger = recordingTrigger recordingTriggerJob?.cancel() @@ -547,39 +548,39 @@ abstract class BaseAccessibilityServiceController( if (wasRecordingTrigger) { coroutineScope.launch { - outputEvents.emit(ServiceEvent.OnStoppedRecordingTrigger) + outputEvents.emit(AccessibilityServiceEvent.OnStoppedRecordingTrigger) } } } - is ServiceEvent.TestAction -> coroutineScope.launch { + is AccessibilityServiceEvent.TestAction -> coroutineScope.launch { performActionsUseCase.perform( event.action, ) } - is ServiceEvent.Ping -> coroutineScope.launch { - outputEvents.emit(ServiceEvent.Pong(event.key)) + is AccessibilityServiceEvent.Ping -> coroutineScope.launch { + outputEvents.emit(AccessibilityServiceEvent.Pong(event.key)) } - is ServiceEvent.HideKeyboard -> service.hideKeyboard() - is ServiceEvent.ShowKeyboard -> service.showKeyboard() - is ServiceEvent.ChangeIme -> service.switchIme(event.imeId) - is ServiceEvent.DisableService -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + is AccessibilityServiceEvent.HideKeyboard -> service.hideKeyboard() + is AccessibilityServiceEvent.ShowKeyboard -> service.showKeyboard() + is AccessibilityServiceEvent.ChangeIme -> service.switchIme(event.imeId) + is AccessibilityServiceEvent.DisableService -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { service.disableSelf() } - is ServiceEvent.TriggerKeyMap -> triggerKeyMapFromIntent(event.uid) + is AccessibilityServiceEvent.TriggerKeyMap -> triggerKeyMapFromIntent(event.uid) - is ServiceEvent.EnableInputMethod -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + is AccessibilityServiceEvent.EnableInputMethod -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { service.setInputMethodEnabled(event.imeId, true) } - is ServiceEvent.StartRecordingNodes -> { + is AccessibilityServiceEvent.StartRecordingNodes -> { accessibilityNodeRecorder.startRecording() } - is ServiceEvent.StopRecordingNodes -> { + is AccessibilityServiceEvent.StopRecordingNodes -> { accessibilityNodeRecorder.stopRecording() } @@ -591,13 +592,13 @@ abstract class BaseAccessibilityServiceController( repeat(RECORD_TRIGGER_TIMER_LENGTH) { iteration -> if (isActive) { val timeLeft = RECORD_TRIGGER_TIMER_LENGTH - iteration - outputEvents.emit(ServiceEvent.OnIncrementRecordTriggerTimer(timeLeft)) + outputEvents.emit(AccessibilityServiceEvent.OnIncrementRecordTriggerTimer(timeLeft)) delay(1000) } } - outputEvents.emit(ServiceEvent.OnStoppedRecordingTrigger) + outputEvents.emit(AccessibilityServiceEvent.OnStoppedRecordingTrigger) } private fun requestFingerprintGestureDetection() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppActivityListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppActivityListItem.kt index 48c5e88d6f..7d99470e00 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppActivityListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppActivityListItem.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.system.apps import io.github.sds100.keymapper.system.apps.ActivityInfo -import io.github.sds100.keymapper.base.util.ui.IconInfo -import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld -import io.github.sds100.keymapper.base.util.ui.TintType +import io.github.sds100.keymapper.base.utils.ui.IconInfo +import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.utils.ui.TintType data class AppActivityListItem( val appName: String, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppShortcutListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppShortcutListItem.kt index 88e1d7eea3..4e83db7b23 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppShortcutListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppShortcutListItem.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.system.apps import io.github.sds100.keymapper.system.apps.AppShortcutInfo -import io.github.sds100.keymapper.base.util.ui.IconInfo -import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld -import io.github.sds100.keymapper.base.util.ui.TintType +import io.github.sds100.keymapper.base.utils.ui.IconInfo +import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.utils.ui.TintType data class AppShortcutListItem( val shortcutInfo: AppShortcutInfo, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt index e4471ec98f..3467be6765 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt @@ -3,12 +3,12 @@ package io.github.sds100.keymapper.base.system.apps import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils -import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils +import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment import kotlinx.coroutines.flow.Flow import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt index 61cbed43d5..53a52f69a3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt @@ -3,10 +3,10 @@ package io.github.sds100.keymapper.base.system.apps import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.common.util.result.valueOrNull -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.filterByQuery -import io.github.sds100.keymapper.base.util.ui.IconInfo +import io.github.sds100.keymapper.common.utils.valueOrNull +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.filterByQuery +import io.github.sds100.keymapper.base.utils.ui.IconInfo import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt index 7a6d0f703e..9696d292ce 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt @@ -8,14 +8,14 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.databinding.FragmentChooseAppBinding import io.github.sds100.keymapper.simple -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.RecyclerViewFragment -import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils -import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.RecyclerViewFragment +import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils +import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.map diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt index 2bccb2c543..adf930932c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt @@ -32,13 +32,13 @@ import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.util.drawable -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.SearchAppBarActions -import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItem -import io.github.sds100.keymapper.base.util.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.SearchAppBarActions +import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItem +import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel @Composable fun ChooseAppScreen( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt index 937dc884c8..15b81ec755 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt @@ -9,15 +9,15 @@ import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple import io.github.sds100.keymapper.system.apps.AppShortcutInfo -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.RecyclerViewUtils -import io.github.sds100.keymapper.base.util.ui.SimpleRecyclerViewFragment -import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils +import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.utils.ui.showPopups import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt index 43862564c6..5589c377db 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt @@ -5,16 +5,16 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.valueOrNull -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.mapData -import io.github.sds100.keymapper.base.util.filterByQuery -import io.github.sds100.keymapper.base.util.ui.IconInfo -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.common.utils.valueOrNull +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.base.utils.filterByQuery +import io.github.sds100.keymapper.base.utils.ui.IconInfo +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppViewModel.kt index f77b1cea4a..6b5e56e27a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppViewModel.kt @@ -3,14 +3,14 @@ package io.github.sds100.keymapper.base.system.apps import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.common.util.result.valueOrNull -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.mapData +import io.github.sds100.keymapper.common.utils.valueOrNull +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.mapData import io.github.sds100.keymapper.system.apps.PackageInfo -import io.github.sds100.keymapper.base.util.filterByQuery -import io.github.sds100.keymapper.base.util.ui.DefaultSimpleListItem -import io.github.sds100.keymapper.base.util.ui.IconInfo -import io.github.sds100.keymapper.base.util.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.utils.filterByQuery +import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem +import io.github.sds100.keymapper.base.utils.ui.IconInfo +import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt index 402a27ed4d..cbf9744d4c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.system.apps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.apps.AppShortcutAdapter import io.github.sds100.keymapper.system.apps.AppShortcutInfo import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt index 84410dd548..9cab0fae64 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.system.apps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.apps.PackageInfo import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt similarity index 89% rename from system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt index 11bdf69a1c..0a0ca4f8e8 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AutoSwitchImeController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt @@ -1,21 +1,23 @@ -package io.github.sds100.keymapper.system.inputmethod +package io.github.sds100.keymapper.base.system.inputmethod import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess -import io.github.sds100.keymapper.common.util.result.otherwise +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.common.utils.otherwise import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter +import io.github.sds100.keymapper.system.service.ServiceAdapter import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.popup.PopupMessageAdapter -import io.github.sds100.keymapper.base.util.PrefDelegate -import io.github.sds100.keymapper.base.util.ServiceEvent -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.PrefDelegate +import io.github.sds100.keymapper.base.utils.ServiceEvent +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter +import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt index 71c2c5688c..977e711255 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt @@ -25,10 +25,10 @@ import io.github.sds100.keymapper.intentExtraGeneric import io.github.sds100.keymapper.system.intents.BoolIntentExtraListItem import io.github.sds100.keymapper.system.intents.GenericIntentExtraListItem import io.github.sds100.keymapper.system.intents.IntentExtraListItem -import io.github.sds100.keymapper.base.util.Inject -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.ui.setupNavigation -import io.github.sds100.keymapper.base.util.ui.showPopups +import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.base.utils.ui.showPopups import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt index 3cd10d8a6d..ec21642ed4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt @@ -33,17 +33,17 @@ import io.github.sds100.keymapper.system.intents.ShortArrayExtraType import io.github.sds100.keymapper.system.intents.ShortExtraType import io.github.sds100.keymapper.system.intents.StringArrayExtraType import io.github.sds100.keymapper.system.intents.StringExtraType -import io.github.sds100.keymapper.base.util.DialogResponse -import io.github.sds100.keymapper.base.util.MultiChoiceItem -import io.github.sds100.keymapper.base.util.NavDestination -import io.github.sds100.keymapper.base.util.NavigationViewModel -import io.github.sds100.keymapper.base.util.NavigationViewModelImpl -import io.github.sds100.keymapper.base.util.PopupUi -import io.github.sds100.keymapper.base.util.PopupViewModel -import io.github.sds100.keymapper.base.util.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ResourceProvider -import io.github.sds100.keymapper.base.util.navigate -import io.github.sds100.keymapper.base.util.showPopup +import io.github.sds100.keymapper.base.utils.DialogResponse +import io.github.sds100.keymapper.base.utils.MultiChoiceItem +import io.github.sds100.keymapper.base.utils.NavDestination +import io.github.sds100.keymapper.base.utils.NavigationViewModel +import io.github.sds100.keymapper.base.utils.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.PopupUi +import io.github.sds100.keymapper.base.utils.PopupViewModel +import io.github.sds100.keymapper.base.utils.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ResourceProvider +import io.github.sds100.keymapper.base.utils.navigate +import io.github.sds100.keymapper.base.utils.showPopup import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/ManageNotificationsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/ManageNotificationsUseCase.kt similarity index 92% rename from system/src/main/java/io/github/sds100/keymapper/system/notifications/ManageNotificationsUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/notifications/ManageNotificationsUseCase.kt index 63a7e41dea..698c40e0a1 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/ManageNotificationsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/ManageNotificationsUseCase.kt @@ -1,8 +1,11 @@ -package io.github.sds100.keymapper.system.notifications +package io.github.sds100.keymapper.base.system.notifications import android.os.Build import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository +import io.github.sds100.keymapper.system.notifications.NotificationAdapter +import io.github.sds100.keymapper.system.notifications.NotificationChannelModel +import io.github.sds100.keymapper.system.notifications.NotificationModel import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt similarity index 90% rename from system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt index 46b24caab4..e47cafed49 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt @@ -1,23 +1,27 @@ -package io.github.sds100.keymapper.system.notifications +package io.github.sds100.keymapper.base.system.notifications import android.provider.Settings import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import io.github.sds100.keymapper.base.BaseMainActivity -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess -import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.common.BuildConfigProvider +import io.github.sds100.keymapper.common.ui.ResourceProvider +import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.common.utils.DispatcherProvider +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.mapping.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.system.accessibility.ControlAccessibilityServiceUseCase import io.github.sds100.keymapper.system.accessibility.ServiceState import io.github.sds100.keymapper.system.inputmethod.ShowHideInputMethodUseCase import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.system.inputmethod.ToggleCompatibleImeUseCase -import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.util.DispatcherProvider -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.system.notifications.NotificationChannelModel +import io.github.sds100.keymapper.system.notifications.NotificationIntentType +import io.github.sds100.keymapper.system.notifications.NotificationModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow @@ -30,7 +34,6 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import javax.inject.Inject import javax.inject.Singleton -import io.github.sds100.keymapper.common.BuildConfigProvider @Singleton class NotificationController @Inject constructor( @@ -67,31 +70,31 @@ class NotificationController @Inject constructor( @Deprecated("Removed in 2.0. This channel shouldn't exist") private const val CHANNEL_ID_PERSISTENT = "channel_persistent" + } - private const val ACTION_RESUME_MAPPINGS = - "${buildConfigProvider.packageName}.ACTION_RESUME_MAPPINGS" + private val ACTION_RESUME_MAPPINGS = + "${buildConfigProvider.packageName}.ACTION_RESUME_MAPPINGS" - private const val ACTION_PAUSE_MAPPINGS = "${buildConfigProvider.packageName}.ACTION_PAUSE_MAPPINGS" + private val ACTION_PAUSE_MAPPINGS = "${buildConfigProvider.packageName}.ACTION_PAUSE_MAPPINGS" - private const val ACTION_START_SERVICE = - "${buildConfigProvider.packageName}.ACTION_START_ACCESSIBILITY_SERVICE" + private val ACTION_START_SERVICE = + "${buildConfigProvider.packageName}.ACTION_START_ACCESSIBILITY_SERVICE" - private const val ACTION_RESTART_SERVICE = - "${buildConfigProvider.packageName}.ACTION_RESTART_ACCESSIBILITY_SERVICE" + private val ACTION_RESTART_SERVICE = + "${buildConfigProvider.packageName}.ACTION_RESTART_ACCESSIBILITY_SERVICE" - private const val ACTION_STOP_SERVICE = - "${buildConfigProvider.packageName}.ACTION_STOP_ACCESSIBILITY_SERVICE" + private val ACTION_STOP_SERVICE = + "${buildConfigProvider.packageName}.ACTION_STOP_ACCESSIBILITY_SERVICE" - private const val ACTION_DISMISS_TOGGLE_MAPPINGS = - "${buildConfigProvider.packageName}.ACTION_DISMISS_TOGGLE_MAPPINGS" + private val ACTION_DISMISS_TOGGLE_MAPPINGS = + "${buildConfigProvider.packageName}.ACTION_DISMISS_TOGGLE_MAPPINGS" - private const val ACTION_SHOW_IME_PICKER = - "${buildConfigProvider.packageName}.ACTION_SHOW_IME_PICKER" - private const val ACTION_SHOW_KEYBOARD = "${buildConfigProvider.packageName}.ACTION_SHOW_KEYBOARD" + private val ACTION_SHOW_IME_PICKER = + "${buildConfigProvider.packageName}.ACTION_SHOW_IME_PICKER" + private val ACTION_SHOW_KEYBOARD = "${buildConfigProvider.packageName}.ACTION_SHOW_KEYBOARD" - private const val ACTION_TOGGLE_KEYBOARD = - "${buildConfigProvider.packageName}.ACTION_TOGGLE_KEYBOARD" - } + private val ACTION_TOGGLE_KEYBOARD = + "${buildConfigProvider.packageName}.ACTION_TOGGLE_KEYBOARD" /** * Open the app and use the String as the Intent action. diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/AssistantTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/AssistantTriggerKey.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt index 4fcccf79f1..0d4b0691e7 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/AssistantTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.data.entities.AssistantTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/AssistantTriggerType.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerType.kt similarity index 92% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/AssistantTriggerType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerType.kt index 2e0725d12a..c7ec0a2b9e 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/AssistantTriggerType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger /** * The type of assistant that triggers an assistant trigger key. The voice assistant diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt similarity index 77% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/BaseConfigTriggerViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index b823b8d7a2..d9719c7e45 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import android.view.KeyEvent import androidx.compose.material.icons.Icons @@ -9,9 +9,9 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapOptionsViewModel import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase @@ -27,22 +27,22 @@ import io.github.sds100.keymapper.purchasing.ProductId import io.github.sds100.keymapper.purchasing.PurchasingManager import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.state.dataOrNull -import io.github.sds100.keymapper.common.util.state.ifIsData -import io.github.sds100.keymapper.common.util.state.mapData -import io.github.sds100.keymapper.base.util.ui.CheckBoxListItem -import io.github.sds100.keymapper.base.util.ui.DialogResponse -import io.github.sds100.keymapper.base.util.ui.LinkType -import io.github.sds100.keymapper.base.util.ui.NavigationViewModel -import io.github.sds100.keymapper.base.util.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.base.util.ui.PopupUi -import io.github.sds100.keymapper.base.util.ui.PopupViewModel -import io.github.sds100.keymapper.base.util.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.util.ui.ResourceProvider -import io.github.sds100.keymapper.base.util.ui.ViewModelHelper -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.showPopup +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.common.utils.ifIsData +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.LinkType +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow @@ -66,11 +66,11 @@ abstract class BaseConfigTriggerViewModel( private val coroutineScope: CoroutineScope, private val onboarding: OnboardingUseCase, private val config: ConfigKeyMapUseCase, - private val recordTrigger: io.github.sds100.keymapper.mapping.trigger.RecordTriggerUseCase, + private val recordTrigger: io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase, private val createKeyMapShortcut: CreateKeyMapShortcutUseCase, private val displayKeyMap: DisplayKeyMapUseCase, private val purchasingManager: PurchasingManager, - private val setupGuiKeyboard: io.github.sds100.keymapper.mapping.trigger.SetupGuiKeyboardUseCase, + private val setupGuiKeyboard: io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase, private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, ) : ResourceProvider by resourceProvider, @@ -94,14 +94,14 @@ abstract class BaseConfigTriggerViewModel( fingerprintGesturesSupported.isSupported, purchasingManager.purchases, ) { isFingerprintGesturesSupported, purchasesState -> - val newShortcuts = mutableSetOf>() + val newShortcuts = mutableSetOf>() if (isFingerprintGesturesSupported == true) { newShortcuts.add( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.Fingerprint), text = getString(R.string.trigger_key_shortcut_add_fingerprint_gesture), - data = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyShortcut.FINGERPRINT_GESTURE, + data = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut.FINGERPRINT_GESTURE, ), ) } @@ -113,7 +113,7 @@ abstract class BaseConfigTriggerViewModel( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.Assistant), text = getString(R.string.trigger_key_shortcut_add_assistant), - data = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyShortcut.ASSISTANT, + data = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut.ASSISTANT, ), ) } @@ -123,7 +123,7 @@ abstract class BaseConfigTriggerViewModel( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.BubbleChart), text = getString(R.string.trigger_key_shortcut_add_floating_button), - data = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyShortcut.FLOATING_BUTTON, + data = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut.FLOATING_BUTTON, ), ) } @@ -133,36 +133,36 @@ abstract class BaseConfigTriggerViewModel( newShortcuts } - private val _state: MutableStateFlow> = + private val _state: MutableStateFlow> = MutableStateFlow(State.Loading) - val state: StateFlow> = _state.asStateFlow() + val state: StateFlow> = _state.asStateFlow() - val recordTriggerState: StateFlow = recordTrigger.state.stateIn( + val recordTriggerState: StateFlow = recordTrigger.state.stateIn( coroutineScope, SharingStarted.Lazily, - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.RecordTriggerState.Idle, + _root_ide_package_.io.github.sds100.keymapper.base.trigger.RecordTriggerState.Idle, ) var showAdvancedTriggersBottomSheet: Boolean by mutableStateOf(false) var showDpadTriggerSetupBottomSheet: Boolean by mutableStateOf(false) var showNoKeysRecordedBottomSheet: Boolean by mutableStateOf(false) - val setupGuiKeyboardState: StateFlow = combine( + val setupGuiKeyboardState: StateFlow = combine( setupGuiKeyboard.isInstalled, setupGuiKeyboard.isEnabled, setupGuiKeyboard.isChosen, ) { isInstalled, isEnabled, isChosen -> - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.SetupGuiKeyboardState( + _root_ide_package_.io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardState( isInstalled, isEnabled, isChosen, ) }.stateIn(coroutineScope, SharingStarted.Lazily, - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.SetupGuiKeyboardState.Companion.DEFAULT + _root_ide_package_.io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardState.Companion.DEFAULT ) val triggerKeyOptionsUid = MutableStateFlow(null) - val triggerKeyOptionsState: StateFlow = + val triggerKeyOptionsState: StateFlow = combine(config.keyMap, triggerKeyOptionsUid, transform = ::buildKeyOptionsUiState) .stateIn(coroutineScope, SharingStarted.Lazily, null) @@ -222,7 +222,7 @@ abstract class BaseConfigTriggerViewModel( // "button not detected" bottom sheet isn't shown when // the screen is opened. recordTrigger.state.drop(1).onEach { state -> - if (state is io.github.sds100.keymapper.mapping.trigger.RecordTriggerState.Completed && + if (state is io.github.sds100.keymapper.base.trigger.RecordTriggerState.Completed && state.recordedKeys.isEmpty() && onboarding.showNoKeysDetectedBottomSheet.first() && !isRecordingCompletionUserInitiated @@ -235,8 +235,8 @@ abstract class BaseConfigTriggerViewModel( }.launchIn(coroutineScope) } - open fun onClickTriggerKeyShortcut(shortcut: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyShortcut) { - if (shortcut == _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyShortcut.FINGERPRINT_GESTURE) { + open fun onClickTriggerKeyShortcut(shortcut: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut) { + if (shortcut == _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut.FINGERPRINT_GESTURE) { coroutineScope.launch { val listItems = listOf( FingerprintGestureType.SWIPE_DOWN to getString(R.string.fingerprint_gesture_down), @@ -261,16 +261,16 @@ abstract class BaseConfigTriggerViewModel( private fun buildUiState( keyMapState: State, showDeviceDescriptors: Boolean, - triggerKeyShortcuts: Set>, - triggerErrorSnapshot: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerErrorSnapshot, + triggerKeyShortcuts: Set>, + triggerErrorSnapshot: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot, showRecordTriggerTapTarget: Boolean, showAdvancedTriggersTapTarget: Boolean, - ): State<_root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState> { + ): State { return keyMapState.mapData { keyMap -> val trigger = keyMap.trigger if (trigger.keys.isEmpty()) { - return@mapData _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty( + return@mapData _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty( triggerKeyShortcuts, showRecordTriggerTapTarget = showRecordTriggerTapTarget, showAdvancedTriggersTapTarget = showAdvancedTriggersTapTarget, @@ -306,18 +306,18 @@ abstract class BaseConfigTriggerViewModel( clickTypeButtons.add(ClickType.DOUBLE_PRESS) } - if (trigger.keys.isNotEmpty() && trigger.mode !is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Sequence && trigger.keys.all { it.allowedLongPress }) { + if (trigger.keys.isNotEmpty() && trigger.mode !is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Sequence && trigger.keys.all { it.allowedLongPress }) { clickTypeButtons.add(ClickType.SHORT_PRESS) clickTypeButtons.add(ClickType.LONG_PRESS) } val checkedClickType: ClickType? = when { - trigger.mode is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Parallel -> trigger.mode.clickType + trigger.mode is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Parallel -> trigger.mode.clickType trigger.keys.size == 1 -> trigger.keys[0].clickType else -> null } - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Loaded( + _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Loaded( triggerKeys = triggerKeys, isReorderingEnabled = isReorderingEnabled, clickTypeButtons = clickTypeButtons, @@ -334,7 +334,7 @@ abstract class BaseConfigTriggerViewModel( private suspend fun buildKeyOptionsUiState( keyMapState: State, triggerKeyUid: String?, - ): _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState? { + ): _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState? { if (triggerKeyUid == null) { return null } @@ -346,14 +346,14 @@ abstract class BaseConfigTriggerViewModel( val key = trigger.keys.find { it.uid == triggerKeyUid } ?: return null - val showClickTypes = trigger.mode is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Sequence + val showClickTypes = trigger.mode is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Sequence when (key) { - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.KeyCodeTriggerKey -> { + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey -> { val showDeviceDescriptors = displayKeyMap.showDeviceDescriptors.first() val deviceListItems: List = config.getAvailableTriggerKeyDevices() - .map { device: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice -> + .map { device: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice -> buildDeviceListItem( device = device, showDeviceDescriptors = showDeviceDescriptors, @@ -361,7 +361,7 @@ abstract class BaseConfigTriggerViewModel( ) } - return _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.KeyCode( + return _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.KeyCode( doNotRemapChecked = !key.consumeEvent, clickType = key.clickType, showClickTypes = showClickTypes, @@ -369,23 +369,23 @@ abstract class BaseConfigTriggerViewModel( ) } - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.AssistantTriggerKey -> { - return _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.Assistant( + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.AssistantTriggerKey -> { + return _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.Assistant( assistantType = key.type, clickType = key.clickType, ) } - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.FloatingButtonKey -> { - return _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.FloatingButton( + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.FloatingButtonKey -> { + return _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.FloatingButton( clickType = key.clickType, showClickTypes = showClickTypes, isPurchased = displayKeyMap.isFloatingButtonsPurchased(), ) } - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.FingerprintTriggerKey -> { - return _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.FingerprintGesture( + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey -> { + return _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.FingerprintGesture( gestureType = key.type, clickType = key.clickType, ) @@ -396,24 +396,24 @@ abstract class BaseConfigTriggerViewModel( } private fun buildDeviceListItem( - device: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice, + device: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice, isChecked: Boolean, showDeviceDescriptors: Boolean, ): CheckBoxListItem { return when (device) { - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.Any -> CheckBoxListItem( - id = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_ANY, + _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.Any -> CheckBoxListItem( + id = _root_ide_package_.io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_ANY, isChecked = isChecked, label = getString(R.string.any_device), ) - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.Internal -> CheckBoxListItem( - id = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_INTERNAL, + _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.Internal -> CheckBoxListItem( + id = _root_ide_package_.io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_INTERNAL, isChecked = isChecked, label = getString(R.string.this_device), ) - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.External -> { + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.External -> { val name = if (showDeviceDescriptors) { InputDeviceUtils.appendDeviceDescriptorToName( device.descriptor, @@ -432,8 +432,8 @@ abstract class BaseConfigTriggerViewModel( } } - private suspend fun onTriggerModeChanged(mode: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode) { - if (mode is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Parallel) { + private suspend fun onTriggerModeChanged(mode: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode) { + if (mode is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Parallel) { if (onboarding.shownParallelTriggerOrderExplanation) { return } @@ -447,7 +447,7 @@ abstract class BaseConfigTriggerViewModel( onboarding.shownParallelTriggerOrderExplanation = true } - if (mode is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Sequence) { + if (mode is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Sequence) { if (onboarding.shownSequenceTriggerExplanation) { return } @@ -463,7 +463,7 @@ abstract class BaseConfigTriggerViewModel( } } - private suspend fun onRecordTriggerKey(key: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.RecordedKey) { + private suspend fun onRecordTriggerKey(key: _root_ide_package_.io.github.sds100.keymapper.base.trigger.RecordedKey) { // Add the trigger key before showing the dialog so it doesn't // need to be dismissed before it is added. config.addKeyCodeTriggerKey(key.keyCode, key.device, key.detectionSource) @@ -505,7 +505,7 @@ abstract class BaseConfigTriggerViewModel( // Issue #491. Some key codes can only be detected through an input method. This will // be shown to the user by showing a keyboard icon next to the trigger key name so // explain this to the user. - if (key.detectionSource == _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.KeyEventDetectionSource.INPUT_METHOD && displayKeyMap.showTriggerKeyboardIconExplanation.first()) { + if (key.detectionSource == _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource.INPUT_METHOD && displayKeyMap.showTriggerKeyboardIconExplanation.first()) { val dialog = PopupUi.Dialog( title = getString(R.string.dialog_title_keyboard_icon_means_ime_detection), message = getString(R.string.dialog_message_keyboard_icon_means_ime_detection), @@ -559,15 +559,15 @@ abstract class BaseConfigTriggerViewModel( fun onSelectTriggerKeyDevice(descriptor: String) { triggerKeyOptionsUid.value?.let { triggerKeyUid -> val device = when (descriptor) { - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_ANY -> _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.Any - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_INTERNAL -> _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.Internal + _root_ide_package_.io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_ANY -> _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.Any + _root_ide_package_.io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_INTERNAL -> _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.Internal else -> { val device = config.getAvailableTriggerKeyDevices() - .filterIsInstance<_root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.External>() + .filterIsInstance<_root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.External>() .firstOrNull { it.descriptor == descriptor } ?: return - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.External( + _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.External( device.descriptor, device.name ) @@ -581,7 +581,7 @@ abstract class BaseConfigTriggerViewModel( } } - fun onSelectTriggerKeyAssistantType(type: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.AssistantTriggerType) { + fun onSelectTriggerKeyAssistantType(type: _root_ide_package_.io.github.sds100.keymapper.base.trigger.AssistantTriggerType) { triggerKeyOptionsUid.value?.let { triggerKeyUid -> config.setAssistantTriggerKeyType(triggerKeyUid, type) } @@ -598,13 +598,13 @@ abstract class BaseConfigTriggerViewModel( val recordTriggerState = recordTrigger.state.firstOrNull() ?: return@launch val result = when (recordTriggerState) { - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.RecordTriggerState.CountingDown -> { + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.RecordTriggerState.CountingDown -> { isRecordingCompletionUserInitiated = true recordTrigger.stopRecording() } - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.RecordTriggerState.Completed, - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.RecordTriggerState.Idle, + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.RecordTriggerState.Completed, + _root_ide_package_.io.github.sds100.keymapper.base.trigger.RecordTriggerState.Idle, -> recordTrigger.startRecording() } @@ -631,10 +631,10 @@ abstract class BaseConfigTriggerViewModel( } } - open fun onTriggerErrorClick(error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError) { + open fun onTriggerErrorClick(error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError) { coroutineScope.launch { when (error) { - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError.DND_ACCESS_DENIED -> + _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError.DND_ACCESS_DENIED -> ViewModelHelper.showDialogExplainingDndAccessBeingUnavailable( resourceProvider = this@BaseConfigTriggerViewModel, popupViewModel = this@BaseConfigTriggerViewModel, @@ -642,7 +642,7 @@ abstract class BaseConfigTriggerViewModel( fixError = { displayKeyMap.fixTriggerError(error) }, ) - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError.DPAD_IME_NOT_SELECTED -> { + _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError.DPAD_IME_NOT_SELECTED -> { showDpadTriggerSetupBottomSheet = true } @@ -655,27 +655,27 @@ abstract class BaseConfigTriggerViewModel( keyMap: KeyMap, showDeviceDescriptors: Boolean, shortcutCount: Int, - triggerErrorSnapshot: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerErrorSnapshot, - ): List<_root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel> { + triggerErrorSnapshot: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot, + ): List<_root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel> { val trigger = keyMap.trigger return trigger.keys.mapIndexed { index, key -> val error = triggerErrorSnapshot.getTriggerError(keyMap, key) - val clickType = if (trigger.mode is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Parallel) { + val clickType = if (trigger.mode is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Parallel) { trigger.mode.clickType } else { key.clickType } val linkType = when { - trigger.mode is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Sequence && (index < trigger.keys.lastIndex) -> LinkType.ARROW + trigger.mode is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Sequence && (index < trigger.keys.lastIndex) -> LinkType.ARROW (index < trigger.keys.lastIndex) -> LinkType.PLUS else -> LinkType.HIDDEN } when (key) { - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.AssistantTriggerKey -> _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.Assistant( + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.AssistantTriggerKey -> _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.Assistant( id = key.uid, assistantType = key.type, clickType = clickType, @@ -683,7 +683,7 @@ abstract class BaseConfigTriggerViewModel( error = error, ) - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.FingerprintTriggerKey -> _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FingerprintGesture( + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey -> _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FingerprintGesture( id = key.uid, gestureType = key.type, clickType = clickType, @@ -691,7 +691,7 @@ abstract class BaseConfigTriggerViewModel( error = error, ) - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.KeyCodeTriggerKey -> _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.KeyCode( + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey -> _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.KeyCode( id = key.uid, keyName = getTriggerKeyName(key), clickType = clickType, @@ -703,15 +703,15 @@ abstract class BaseConfigTriggerViewModel( error = error, ) - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.FloatingButtonKey -> { + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.FloatingButtonKey -> { if (key.button == null) { - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButtonDeleted( + _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButtonDeleted( id = key.uid, clickType = clickType, linkType = linkType, ) } else { - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButton( + _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButton( id = key.uid, buttonName = key.button.appearance.text, layoutName = key.button.layoutName, @@ -726,7 +726,7 @@ abstract class BaseConfigTriggerViewModel( } private fun getTriggerKeyExtraInfo( - key: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.KeyCodeTriggerKey, + key: _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey, showDeviceDescriptors: Boolean, ): String { return buildString { @@ -739,11 +739,11 @@ abstract class BaseConfigTriggerViewModel( } } - private fun getTriggerKeyName(key: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.KeyCodeTriggerKey): String { + private fun getTriggerKeyName(key: _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey): String { return buildString { append(InputEventUtils.keyCodeToString(key.keyCode)) - if (key.detectionSource == _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.KeyEventDetectionSource.INPUT_METHOD) { + if (key.detectionSource == _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource.INPUT_METHOD) { val midDot = getString(R.string.middot) append(" $midDot ${getString(R.string.flag_detect_from_input_method)}") } @@ -751,12 +751,12 @@ abstract class BaseConfigTriggerViewModel( } private fun getTriggerKeyDeviceName( - device: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice, + device: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice, showDeviceDescriptors: Boolean, ): String = when (device) { - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.Internal -> getString(R.string.this_device) - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.Any -> getString(R.string.any_device) - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice.External -> { + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.Internal -> getString(R.string.this_device) + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.Any -> getString(R.string.any_device) + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.External -> { if (showDeviceDescriptors) { InputDeviceUtils.appendDeviceDescriptorToName( device.descriptor, @@ -800,32 +800,32 @@ abstract class BaseConfigTriggerViewModel( } sealed class ConfigTriggerState { - abstract val shortcuts: Set> + abstract val shortcuts: Set> abstract val showAdvancedTriggersTapTarget: Boolean data class Empty( - override val shortcuts: Set> = emptySet(), + override val shortcuts: Set> = emptySet(), val showRecordTriggerTapTarget: Boolean = false, override val showAdvancedTriggersTapTarget: Boolean = false, - ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState() + ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState() data class Loaded( - val triggerKeys: List<_root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel> = emptyList(), + val triggerKeys: List<_root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel> = emptyList(), val isReorderingEnabled: Boolean = false, val clickTypeButtons: Set = emptySet(), val checkedClickType: ClickType? = null, - val checkedTriggerMode: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerMode.Undefined, + val checkedTriggerMode: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Undefined, val triggerModeButtonsEnabled: Boolean = false, val triggerModeButtonsVisible: Boolean = false, - override val shortcuts: Set> = emptySet(), + override val shortcuts: Set> = emptySet(), override val showAdvancedTriggersTapTarget: Boolean = false, - ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState() + ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState() } sealed class TriggerKeyListItemModel { abstract val id: String abstract val linkType: LinkType - abstract val error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError? + abstract val error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError? abstract val clickType: ClickType data class KeyCode( @@ -834,24 +834,24 @@ sealed class TriggerKeyListItemModel { val keyName: String, override val clickType: ClickType, val extraInfo: String?, - override val error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError?, - ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel() + override val error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError?, + ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel() data class Assistant( override val id: String, override val linkType: LinkType, - val assistantType: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.AssistantTriggerType, + val assistantType: _root_ide_package_.io.github.sds100.keymapper.base.trigger.AssistantTriggerType, override val clickType: ClickType, - override val error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError?, - ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel() + override val error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError?, + ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel() data class FingerprintGesture( override val id: String, override val linkType: LinkType, val gestureType: FingerprintGestureType, override val clickType: ClickType, - override val error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError?, - ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel() + override val error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError?, + ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel() data class FloatingButton( override val id: String, @@ -859,16 +859,16 @@ sealed class TriggerKeyListItemModel { val buttonName: String, val layoutName: String, override val clickType: ClickType, - override val error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError?, - ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel() + override val error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError?, + ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel() data class FloatingButtonDeleted( override val id: String, override val linkType: LinkType, override val clickType: ClickType, - ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel() { - override val error: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError = - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerError.FLOATING_BUTTON_DELETED + ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel() { + override val error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError = + _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError.FLOATING_BUTTON_DELETED } } @@ -882,14 +882,14 @@ sealed class TriggerKeyOptionsState { override val clickType: ClickType, override val showClickTypes: Boolean, val devices: List, - ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState() { + ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState() { override val showLongPressClickType: Boolean = true } data class Assistant( - val assistantType: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.AssistantTriggerType, + val assistantType: _root_ide_package_.io.github.sds100.keymapper.base.trigger.AssistantTriggerType, override val clickType: ClickType, - ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState() { + ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState() { override val showClickTypes: Boolean = false override val showLongPressClickType: Boolean = false } @@ -897,7 +897,7 @@ sealed class TriggerKeyOptionsState { data class FingerprintGesture( val gestureType: FingerprintGestureType, override val clickType: ClickType, - ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState() { + ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState() { override val showClickTypes: Boolean = false override val showLongPressClickType: Boolean = false } @@ -906,7 +906,7 @@ sealed class TriggerKeyOptionsState { override val clickType: ClickType, override val showClickTypes: Boolean, val isPurchased: Boolean, - ) : _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState() { + ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState() { override val showLongPressClickType: Boolean = true } } diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/ChooseTriggerKeyDeviceModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/ChooseTriggerKeyDeviceModel.kt similarity index 69% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/ChooseTriggerKeyDeviceModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/ChooseTriggerKeyDeviceModel.kt index 3f29a0ac49..efc216cd3f 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/ChooseTriggerKeyDeviceModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/ChooseTriggerKeyDeviceModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger data class ChooseTriggerKeyDeviceModel( val triggerKeyUid: String, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/FingerprintTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/FingerprintTriggerKey.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt index ce20873635..a6c7c70de8 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/FingerprintTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.data.entities.FingerprintTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/FloatingButtonKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/FloatingButtonKey.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt index abf0718b03..6cba7f44c5 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/FloatingButtonKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout import io.github.sds100.keymapper.data.entities.FloatingButtonKeyEntity diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyCodeTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyCodeTriggerKey.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt index 586bca32a6..df48d78f34 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyCodeTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyEventDetectionSource.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyEventDetectionSource.kt similarity index 62% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyEventDetectionSource.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyEventDetectionSource.kt index e33066be6f..c231beff8a 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyEventDetectionSource.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyEventDetectionSource.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger enum class KeyEventDetectionSource { ACCESSIBILITY_SERVICE, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyMapListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt similarity index 83% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyMapListItemModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt index eaa22d1dd1..8fef31c8c6 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/KeyMapListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt @@ -1,8 +1,8 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import androidx.compose.ui.graphics.vector.ImageVector import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.base.util.ui.compose.ComposeChipModel +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel data class KeyMapListItemModel( val isSelected: Boolean, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerButtonRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt similarity index 96% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerButtonRow.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt index 4e2bd778cd..993285f8d1 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerButtonRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -24,8 +24,8 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.onboarding.OnboardingTapTarget -import io.github.sds100.keymapper.base.util.ui.compose.KeyMapperTapTarget -import io.github.sds100.keymapper.base.util.ui.compose.keyMapperShowcaseStyle +import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperTapTarget +import io.github.sds100.keymapper.base.utils.ui.compose.keyMapperShowcaseStyle @Composable fun RecordTriggerButtonRow( diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerState.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt similarity index 86% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt index bf00e7427c..dcab40a81d 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger sealed class RecordTriggerState { diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt similarity index 94% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt index 1ac4109bc2..d568da4407 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordTriggerUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt @@ -1,13 +1,13 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import android.view.KeyEvent -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter +import io.github.sds100.keymapper.system.service.ServiceAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyMotionEvent -import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.base.utils.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordedKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt similarity index 72% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordedKey.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt index 956b332678..cfc961f291 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/RecordedKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger data class RecordedKey( diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt similarity index 99% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardBottomSheet.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt index 9319718a10..c871914d92 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -35,7 +35,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe +import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class) diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardState.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardState.kt similarity index 87% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardState.kt index 9601578120..4870c06627 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger data class SetupGuiKeyboardState( val isKeyboardInstalled: Boolean, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt similarity index 95% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt index 2eac36c4d3..8797180f2f 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/SetupGuiKeyboardUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt @@ -1,6 +1,6 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger -import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.apps.PackageInfo import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.apps.getPackageInfoFlow diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/Trigger.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt similarity index 98% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/Trigger.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt index 194fc49cfc..1bdcf14911 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/Trigger.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt @@ -1,6 +1,6 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger -import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.data.entities.AssistantTriggerKeyEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.FingerprintTriggerKeyEntity diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerError.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt similarity index 92% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerError.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt index 032adf039a..8f20573b74 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerError.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger enum class TriggerError(val isFixable: Boolean) { diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt similarity index 92% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerErrorSnapshot.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt index 107a758ae4..64905b7e44 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt @@ -1,10 +1,10 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import android.os.Build import android.view.KeyEvent -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.requiresImeKeyEventForwardingInPhoneCall import io.github.sds100.keymapper.purchasing.ProductId diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt similarity index 95% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKey.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt index 88f49863b2..1239059181 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKey.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.Serializable diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyDevice.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt similarity index 96% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyDevice.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt index 2a35105cfa..e99b96af69 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyDevice.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.system.devices.InputDeviceInfo import kotlinx.serialization.Serializable diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt similarity index 88% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt index f3436fa8ef..b0601e966a 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.draggable @@ -44,13 +44,13 @@ import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType -import io.github.sds100.keymapper.base.util.ui.LinkType -import io.github.sds100.keymapper.base.util.ui.compose.DragDropState +import io.github.sds100.keymapper.base.utils.ui.LinkType +import io.github.sds100.keymapper.base.utils.ui.compose.DragDropState @Composable fun TriggerKeyListItem( modifier: Modifier = Modifier, - model: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel, + model: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel, index: Int, isDraggingEnabled: Boolean = false, isDragging: Boolean, @@ -109,9 +109,9 @@ fun TriggerKeyListItem( // To save space only show the icon if there is no error. if (model.error == null) { val icon = when (model) { - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.Assistant -> Icons.Outlined.Assistant - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButton -> Icons.Outlined.BubbleChart - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FingerprintGesture -> Icons.Outlined.Fingerprint + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.Assistant -> Icons.Outlined.Assistant + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButton -> Icons.Outlined.BubbleChart + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FingerprintGesture -> Icons.Outlined.Fingerprint else -> null } @@ -126,22 +126,22 @@ fun TriggerKeyListItem( } val primaryText = when (model) { - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.Assistant -> when (model.assistantType) { + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.Assistant -> when (model.assistantType) { AssistantTriggerType.ANY -> stringResource(R.string.assistant_any_trigger_name) AssistantTriggerType.VOICE -> stringResource(R.string.assistant_voice_trigger_name) AssistantTriggerType.DEVICE -> stringResource(R.string.assistant_device_trigger_name) } - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButton -> stringResource( + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButton -> stringResource( R.string.trigger_key_floating_button_description, model.buttonName, ) - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.KeyCode -> model.keyName + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.KeyCode -> model.keyName - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButtonDeleted -> stringResource(R.string.trigger_error_floating_button_deleted_title) + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButtonDeleted -> stringResource(R.string.trigger_error_floating_button_deleted_title) - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FingerprintGesture -> when (model.gestureType) { + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FingerprintGesture -> when (model.gestureType) { FingerprintGestureType.SWIPE_UP -> stringResource(R.string.trigger_key_fingerprint_gesture_up) FingerprintGestureType.SWIPE_DOWN -> stringResource(R.string.trigger_key_fingerprint_gesture_down) FingerprintGestureType.SWIPE_LEFT -> stringResource(R.string.trigger_key_fingerprint_gesture_left) @@ -159,8 +159,8 @@ fun TriggerKeyListItem( } val tertiaryText = when (model) { - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.KeyCode -> model.extraInfo - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButton -> model.layoutName + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.KeyCode -> model.extraInfo + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButton -> model.layoutName else -> null } @@ -201,7 +201,7 @@ fun TriggerKeyListItem( } } - if (model !is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButtonDeleted) { + if (model !is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButtonDeleted) { IconButton(onClick = onEditClick) { Icon( imageVector = Icons.Outlined.Settings, @@ -324,7 +324,7 @@ private fun ErrorTextColumn( @Composable private fun KeyCodePreview() { TriggerKeyListItem( - model = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.KeyCode( + model = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.KeyCode( id = "id", keyName = "Volume Up", clickType = ClickType.SHORT_PRESS, @@ -342,7 +342,7 @@ private fun KeyCodePreview() { @Composable private fun NoDragPreview() { TriggerKeyListItem( - model = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.KeyCode( + model = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.KeyCode( id = "id", keyName = "Volume Up", clickType = ClickType.LONG_PRESS, @@ -360,7 +360,7 @@ private fun NoDragPreview() { @Composable private fun AssistantPreview() { TriggerKeyListItem( - model = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.Assistant( + model = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.Assistant( id = "id", assistantType = AssistantTriggerType.DEVICE, clickType = ClickType.SHORT_PRESS, @@ -377,7 +377,7 @@ private fun AssistantPreview() { @Composable private fun AssistantErrorPreview() { TriggerKeyListItem( - model = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.Assistant( + model = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.Assistant( id = "id", assistantType = AssistantTriggerType.DEVICE, clickType = ClickType.DOUBLE_PRESS, @@ -394,7 +394,7 @@ private fun AssistantErrorPreview() { @Composable private fun FloatingButtonPreview() { TriggerKeyListItem( - model = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButton( + model = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButton( id = "id", buttonName = "😎", layoutName = "Gaming", @@ -412,7 +412,7 @@ private fun FloatingButtonPreview() { @Composable private fun FloatingButtonErrorPreview() { TriggerKeyListItem( - model = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButtonDeleted( + model = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButtonDeleted( id = "id", clickType = ClickType.DOUBLE_PRESS, linkType = LinkType.ARROW, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyOptionsBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt similarity index 93% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyOptionsBottomSheet.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt index 0c2350ada5..ce2a12477e 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyOptionsBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -38,10 +38,10 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType -import io.github.sds100.keymapper.base.util.ui.CheckBoxListItem -import io.github.sds100.keymapper.base.util.ui.compose.CheckBoxText -import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText -import io.github.sds100.keymapper.base.util.ui.compose.openUriSafe +import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem +import io.github.sds100.keymapper.base.utils.ui.compose.CheckBoxText +import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText +import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class) @@ -49,7 +49,7 @@ import kotlinx.coroutines.launch fun TriggerKeyOptionsBottomSheet( modifier: Modifier = Modifier, sheetState: SheetState, - state: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState, + state: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState, onDismissRequest: () -> Unit = {}, onCheckDoNotRemap: (Boolean) -> Unit = {}, onSelectClickType: (ClickType) -> Unit = {}, @@ -96,7 +96,7 @@ fun TriggerKeyOptionsBottomSheet( Spacer(modifier = Modifier.height(8.dp)) - if (state is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.KeyCode) { + if (state is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.KeyCode) { CheckBoxText( modifier = Modifier.padding(8.dp), text = stringResource(R.string.flag_dont_override_default_action), @@ -146,7 +146,7 @@ fun TriggerKeyOptionsBottomSheet( } } - if (state is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.KeyCode) { + if (state is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.KeyCode) { Text( modifier = Modifier.padding(horizontal = 16.dp), text = stringResource(R.string.trigger_key_device_header), @@ -161,7 +161,7 @@ fun TriggerKeyOptionsBottomSheet( onSelected = { onSelectDevice(device.id) }, ) } - } else if (state is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.Assistant) { + } else if (state is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.Assistant) { Text( modifier = Modifier.padding(horizontal = 16.dp), text = stringResource(R.string.trigger_key_assistant_type_header), @@ -188,7 +188,7 @@ fun TriggerKeyOptionsBottomSheet( isSelected = state.assistantType == AssistantTriggerType.VOICE, onSelected = { onSelectAssistantType(AssistantTriggerType.VOICE) }, ) - } else if (state is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.FingerprintGesture) { + } else if (state is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.FingerprintGesture) { Text( modifier = Modifier.padding(horizontal = 16.dp), text = stringResource(R.string.trigger_key_fingerprint_gesture_type_header), @@ -226,7 +226,7 @@ fun TriggerKeyOptionsBottomSheet( Spacer(Modifier.height(8.dp)) - if (state is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.FloatingButton && state.isPurchased) { + if (state is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.FloatingButton && state.isPurchased) { Row( modifier = Modifier .fillMaxWidth() @@ -296,7 +296,7 @@ private fun Preview() { TriggerKeyOptionsBottomSheet( sheetState = sheetState, - state = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.KeyCode( + state = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.KeyCode( doNotRemapChecked = true, clickType = ClickType.DOUBLE_PRESS, showClickTypes = true, @@ -330,7 +330,7 @@ private fun AssistantPreview() { TriggerKeyOptionsBottomSheet( sheetState = sheetState, - state = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.Assistant( + state = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.Assistant( assistantType = AssistantTriggerType.VOICE, clickType = ClickType.DOUBLE_PRESS, ), @@ -351,7 +351,7 @@ private fun FloatingButtonPreview() { TriggerKeyOptionsBottomSheet( sheetState = sheetState, - state = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyOptionsState.FloatingButton( + state = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.FloatingButton( clickType = ClickType.SHORT_PRESS, showClickTypes = true, isPurchased = true, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyShortcut.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyShortcut.kt similarity index 65% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyShortcut.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyShortcut.kt index 528e87b45a..c94755cbeb 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerKeyShortcut.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyShortcut.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger enum class TriggerKeyShortcut { ASSISTANT, diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerMode.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt similarity index 94% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerMode.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt index ea81b09dd2..7abf2853ab 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerMode.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.Serializable diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt similarity index 94% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt index 19dea21f58..da85d3dca3 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/trigger/TriggerScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.trigger +package io.github.sds100.keymapper.base.trigger import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -43,12 +43,12 @@ import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.ui.LinkType -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.util.ui.compose.DraggableItem -import io.github.sds100.keymapper.base.util.ui.compose.RadioButtonText -import io.github.sds100.keymapper.base.util.ui.compose.rememberDragDropState +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.ui.LinkType +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.compose.DraggableItem +import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText +import io.github.sds100.keymapper.base.utils.ui.compose.rememberDragDropState @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -185,7 +185,7 @@ private fun Loading(modifier: Modifier = Modifier) { @Composable private fun TriggerScreenVertical( modifier: Modifier = Modifier, - configState: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState, + configState: _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState, recordTriggerState: RecordTriggerState, onRemoveClick: (String) -> Unit = {}, onEditClick: (String) -> Unit = {}, @@ -204,7 +204,7 @@ private fun TriggerScreenVertical( Surface(modifier = modifier) { Column { when (configState) { - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty -> { + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty -> { Column( modifier = Modifier .weight(1f) @@ -238,7 +238,7 @@ private fun TriggerScreenVertical( } } - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Loaded -> { + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Loaded -> { val isCompact = isVerticalCompactLayout() Spacer(Modifier.height(8.dp)) @@ -292,7 +292,7 @@ private fun TriggerScreenVertical( onRecordTriggerClick = onRecordTriggerClick, recordTriggerState = recordTriggerState, onAdvancedTriggersClick = onAdvancedTriggersClick, - showRecordTriggerTapTarget = (configState as? _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty)?.showRecordTriggerTapTarget + showRecordTriggerTapTarget = (configState as? _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty)?.showRecordTriggerTapTarget ?: false, onRecordTriggerTapTargetCompleted = onRecordTriggerTapTargetCompleted, onSkipTapTarget = onSkipTapTarget, @@ -306,7 +306,7 @@ private fun TriggerScreenVertical( @Composable private fun TriggerScreenHorizontal( modifier: Modifier = Modifier, - configState: _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState, + configState: _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState, recordTriggerState: RecordTriggerState, onRemoveClick: (String) -> Unit = {}, onEditClick: (String) -> Unit = {}, @@ -324,7 +324,7 @@ private fun TriggerScreenHorizontal( ) { Surface(modifier = modifier) { when (configState) { - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty -> Row { + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty -> Row { Text( modifier = Modifier .widthIn(max = 400.dp) @@ -364,7 +364,7 @@ private fun TriggerScreenHorizontal( onRecordTriggerClick = onRecordTriggerClick, recordTriggerState = recordTriggerState, onAdvancedTriggersClick = onAdvancedTriggersClick, - showRecordTriggerTapTarget = (configState as? _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty)?.showRecordTriggerTapTarget + showRecordTriggerTapTarget = (configState as? _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty)?.showRecordTriggerTapTarget ?: false, onRecordTriggerTapTargetCompleted = onRecordTriggerTapTargetCompleted, onSkipTapTarget = onSkipTapTarget, @@ -373,7 +373,7 @@ private fun TriggerScreenHorizontal( } } - is _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Loaded -> Row { + is _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Loaded -> Row { TriggerList( modifier = Modifier .fillMaxHeight() @@ -445,7 +445,7 @@ private fun TriggerScreenHorizontal( @Composable private fun TriggerList( modifier: Modifier = Modifier, - triggerList: List<_root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel>, + triggerList: List<_root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel>, shortcuts: Set>, isReorderingEnabled: Boolean, onRemoveClick: (String) -> Unit, @@ -593,7 +593,7 @@ private fun TriggerModeRadioGroup( } private val sampleList = listOf( - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.KeyCode( + _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.KeyCode( id = "id1", keyName = "Volume Up", clickType = ClickType.SHORT_PRESS, @@ -601,7 +601,7 @@ private val sampleList = listOf( linkType = LinkType.ARROW, error = null, ), - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.FloatingButton( + _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButton( id = "id2", buttonName = "😎", layoutName = "Gaming", @@ -609,7 +609,7 @@ private val sampleList = listOf( linkType = LinkType.ARROW, error = null, ), - _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.TriggerKeyListItemModel.Assistant( + _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.Assistant( id = "id3", assistantType = AssistantTriggerType.DEVICE, clickType = ClickType.DOUBLE_PRESS, @@ -618,7 +618,7 @@ private val sampleList = listOf( ), ) -private val previewState = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Loaded( +private val previewState = _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Loaded( triggerKeys = sampleList, isReorderingEnabled = true, clickTypeButtons = setOf( @@ -666,7 +666,7 @@ private fun VerticalPreviewTiny() { private fun VerticalEmptyPreview() { KeyMapperTheme { TriggerScreenVertical( - configState = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty( + configState = _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty( shortcuts = setOf( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.Fingerprint), @@ -696,7 +696,7 @@ private fun HorizontalPreview() { private fun HorizontalEmptyPreview() { KeyMapperTheme { TriggerScreenHorizontal( - configState = _root_ide_package_.io.github.sds100.keymapper.mapping.trigger.ConfigTriggerState.Empty( + configState = _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty( shortcuts = setOf( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.Fingerprint), diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt new file mode 100644 index 0000000000..49f929e0da --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt @@ -0,0 +1,212 @@ +package io.github.sds100.keymapper.base.utils + +import android.content.pm.PackageManager +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.purchasing.ProductId +import io.github.sds100.keymapper.base.purchasing.PurchasingError +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.common.utils.BuildUtils +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.system.SystemError +import io.github.sds100.keymapper.system.permissions.Permission + +fun Error.getFullMessage(resourceProvider: ResourceProvider): String { + return when (this) { + is SystemError.PermissionDenied -> { + val resId = when (permission) { + Permission.WRITE_SETTINGS -> R.string.error_action_requires_write_settings_permission + Permission.CAMERA -> R.string.error_action_requires_camera_permission + Permission.DEVICE_ADMIN -> R.string.error_need_to_enable_device_admin + Permission.READ_PHONE_STATE -> R.string.error_action_requires_read_phone_state_permission + Permission.ACCESS_NOTIFICATION_POLICY -> R.string.error_action_notification_policy_permission + Permission.WRITE_SECURE_SETTINGS -> R.string.error_need_write_secure_settings_permission + Permission.NOTIFICATION_LISTENER -> R.string.error_denied_notification_listener_service_permission + Permission.CALL_PHONE -> R.string.error_denied_call_phone_permission + Permission.ROOT -> R.string.error_requires_root + Permission.IGNORE_BATTERY_OPTIMISATION -> R.string.error_battery_optimisation_enabled + Permission.SHIZUKU -> R.string.error_shizuku_permission_denied + Permission.ACCESS_FINE_LOCATION -> R.string.error_access_fine_location_permission_denied + Permission.ANSWER_PHONE_CALL -> R.string.error_answer_end_phone_call_permission_denied + Permission.FIND_NEARBY_DEVICES -> R.string.error_find_nearby_devices_permission_denied + Permission.POST_NOTIFICATIONS -> R.string.error_notifications_permission_denied + } + + resourceProvider.getString(resId) + } + + is Error.AppNotFound -> resourceProvider.getString( + R.string.error_app_isnt_installed, + packageName, + ) + + is Error.AppDisabled -> resourceProvider.getString( + R.string.error_app_is_disabled_package_name, + this.packageName, + ) + + is Error.NoCompatibleImeEnabled -> resourceProvider.getString(R.string.error_key_mapper_ime_service_disabled) + is Error.NoCompatibleImeChosen -> resourceProvider.getString(R.string.error_ime_must_be_chosen) + is Error.SystemFeatureNotSupported -> when (this.feature) { + PackageManager.FEATURE_NFC -> resourceProvider.getString(R.string.error_system_feature_nfc_unsupported) + PackageManager.FEATURE_CAMERA -> resourceProvider.getString(R.string.error_system_feature_camera_unsupported) + PackageManager.FEATURE_FINGERPRINT -> resourceProvider.getString(R.string.error_system_feature_fingerprint_unsupported) + PackageManager.FEATURE_WIFI -> resourceProvider.getString(R.string.error_system_feature_wifi_unsupported) + PackageManager.FEATURE_BLUETOOTH -> resourceProvider.getString(R.string.error_system_feature_bluetooth_unsupported) + PackageManager.FEATURE_DEVICE_ADMIN -> resourceProvider.getString(R.string.error_system_feature_device_admin_unsupported) + PackageManager.FEATURE_CAMERA_FLASH -> resourceProvider.getString(R.string.error_system_feature_camera_flash_unsupported) + PackageManager.FEATURE_TELEPHONY -> resourceProvider.getString(R.string.error_system_feature_telephony_unsupported) + else -> throw Exception("Don't know how to get error message for this system feature ${this.feature}") + } + + is Error.ExtraNotFound -> resourceProvider.getString( + R.string.error_extra_not_found, + extraId, + ) + + is Error.SdkVersionTooLow -> resourceProvider.getString( + R.string.error_sdk_version_too_low, + BuildUtils.getSdkVersionName(minSdk), + ) + + is Error.SdkVersionTooHigh -> resourceProvider.getString( + R.string.error_sdk_version_too_high, + BuildUtils.getSdkVersionName(maxSdk), + ) + + is Error.InputMethodNotFound -> resourceProvider.getString( + R.string.error_ime_not_found, + imeLabel, + ) + + is Error.FrontFlashNotFound -> resourceProvider.getString(R.string.error_front_flash_not_found) + is Error.BackFlashNotFound -> resourceProvider.getString(R.string.error_back_flash_not_found) + is Error.DeviceNotFound -> resourceProvider.getString(R.string.error_device_not_found) + is Error.Exception -> exception.toString() + is Error.EmptyJson -> resourceProvider.getString(R.string.error_empty_json) + is Error.InvalidNumber -> resourceProvider.getString(R.string.error_invalid_number) + is Error.NumberTooSmall -> resourceProvider.getString(R.string.error_number_too_small, min) + is Error.NumberTooBig -> resourceProvider.getString(R.string.error_number_too_big, max) + is Error.EmptyText -> resourceProvider.getString(R.string.error_cant_be_empty) + Error.BackupVersionTooNew -> resourceProvider.getString(R.string.error_backup_version_too_new) + Error.NoIncompatibleKeyboardsInstalled -> resourceProvider.getString(R.string.error_no_incompatible_input_methods_installed) + Error.NoMediaSessions -> resourceProvider.getString(R.string.error_no_media_sessions) + Error.NoVoiceAssistant -> resourceProvider.getString(R.string.error_voice_assistant_not_found) + Error.AccessibilityServiceDisabled -> resourceProvider.getString(R.string.error_accessibility_service_disabled) + Error.LauncherShortcutsNotSupported -> resourceProvider.getString(R.string.error_launcher_shortcuts_not_supported) + Error.AccessibilityServiceCrashed -> resourceProvider.getString(R.string.error_accessibility_service_crashed) + Error.CantFindImeSettings -> resourceProvider.getString(R.string.error_cant_find_ime_settings) + Error.CantShowImePickerInBackground -> resourceProvider.getString(R.string.error_cant_show_ime_picker_in_background) + Error.FailedToFindAccessibilityNode -> resourceProvider.getString(R.string.error_failed_to_find_accessibility_node) + is Error.FailedToPerformAccessibilityGlobalAction -> resourceProvider.getString( + R.string.error_failed_to_perform_accessibility_global_action, + action, + ) + + Error.FailedToDispatchGesture -> resourceProvider.getString(R.string.error_failed_to_dispatch_gesture) + Error.AppShortcutCantBeOpened -> resourceProvider.getString(R.string.error_opening_app_shortcut) + Error.InsufficientPermissionsToOpenAppShortcut -> resourceProvider.getString(R.string.error_keymapper_doesnt_have_permission_app_shortcut) + Error.NoAppToPhoneCall -> resourceProvider.getString(R.string.error_no_app_to_phone_call) + + Error.CameraInUse -> resourceProvider.getString(R.string.error_camera_in_use) + Error.CameraError -> resourceProvider.getString(R.string.error_camera_error) + Error.CameraDisabled -> resourceProvider.getString(R.string.error_camera_disabled) + Error.CameraDisconnected -> resourceProvider.getString(R.string.error_camera_disconnected) + Error.MaxCamerasInUse -> resourceProvider.getString(R.string.error_max_cameras_in_use) + Error.CameraVariableFlashlightStrengthUnsupported -> resourceProvider.getString(R.string.error_variable_flashlight_strength_unsupported) + + is Error.FailedToModifySystemSetting -> resourceProvider.getString( + R.string.error_failed_to_modify_system_setting, + setting, + ) + + is SystemError.ImeDisabled -> resourceProvider.getString( + R.string.error_ime_disabled, + this.ime.label, + ) + + Error.FailedToChangeIme -> resourceProvider.getString(R.string.error_failed_to_change_ime) + Error.NoCameraApp -> resourceProvider.getString(R.string.error_no_camera_app) + Error.NoDeviceAssistant -> resourceProvider.getString(R.string.error_no_device_assistant) + Error.NoSettingsApp -> resourceProvider.getString(R.string.error_no_settings_app) + Error.NoAppToOpenUrl -> resourceProvider.getString(R.string.error_no_app_to_open_url) + + Error.CantFindSoundFile -> resourceProvider.getString(R.string.error_cant_find_sound_file) + is Error.CorruptJsonFile -> reason + + is Error.CannotCreateFileInTarget -> resourceProvider.getString( + R.string.error_file_access_denied, + uri, + ) + + Error.FileOperationCancelled -> resourceProvider.getString(R.string.error_file_operation_cancelled) + is Error.NoSpaceLeftOnTarget -> resourceProvider.getString( + R.string.error_no_space_left_at_target, + uri, + ) + + is Error.NotADirectory -> resourceProvider.getString(R.string.error_not_a_directory, uri) + is Error.NotAFile -> resourceProvider.getString(R.string.error_not_a_file, uri) + is Error.SourceFileNotFound -> resourceProvider.getString( + R.string.error_source_file_not_found, + uri, + ) + + Error.StoragePermissionDenied -> resourceProvider.getString(R.string.error_storage_permission_denied) + Error.TargetDirectoryMatchesSourceDirectory -> resourceProvider.getString(R.string.error_matching_source_and_target_paths) + is Error.TargetDirectoryNotFound -> resourceProvider.getString( + R.string.error_directory_not_found, + uri, + ) + + is Error.TargetFileNotFound -> resourceProvider.getString( + R.string.error_target_file_not_found, + uri, + ) + + Error.UnknownIOError -> resourceProvider.getString(R.string.error_io_error) + Error.ShizukuNotStarted -> resourceProvider.getString(R.string.error_shizuku_not_started) + Error.NoFileName -> resourceProvider.getString(R.string.error_no_file_name) + Error.CantDetectKeyEventsInPhoneCall -> resourceProvider.getString(R.string.trigger_error_cant_detect_in_phone_call_explanation) + Error.GestureStrokeCountTooHigh -> resourceProvider.getString(R.string.trigger_error_gesture_stroke_count_too_high) + Error.GestureDurationTooHigh -> resourceProvider.getString(R.string.trigger_error_gesture_duration_too_high) + + PurchasingError.PurchasingProcessError.Cancelled -> resourceProvider.getString(R.string.purchasing_error_cancelled) + PurchasingError.PurchasingProcessError.NetworkError -> resourceProvider.getString(R.string.purchasing_error_network) + PurchasingError.PurchasingProcessError.ProductNotFound -> resourceProvider.getString(R.string.purchasing_error_product_not_found) + PurchasingError.PurchasingProcessError.StoreProblem -> resourceProvider.getString(R.string.purchasing_error_store_problem) + PurchasingError.PurchasingProcessError.PaymentPending -> resourceProvider.getString(R.string.purchasing_error_payment_pending) + PurchasingError.PurchasingProcessError.PurchaseInvalid -> resourceProvider.getString(R.string.purchasing_error_purchase_invalid) + is PurchasingError.PurchasingProcessError.Unexpected -> this.message + + is PurchasingError.ProductNotPurchased -> when (this.product) { + ProductId.ASSISTANT_TRIGGER -> resourceProvider.getString(R.string.purchasing_error_assistant_not_purchased_home_screen) + ProductId.FLOATING_BUTTONS -> resourceProvider.getString(R.string.purchasing_error_floating_buttons_not_purchased_home_screen) + } + + PurchasingError.PurchasingNotImplemented -> resourceProvider.getString(R.string.purchasing_error_not_implemented) + Error.DpadTriggerImeNotSelected -> resourceProvider.getString(R.string.trigger_error_dpad_ime_not_selected) + Error.InvalidBackup -> resourceProvider.getString(R.string.error_invalid_backup) + Error.MalformedUrl -> resourceProvider.getString(R.string.error_malformed_url) + Error.UiElementNotFound -> resourceProvider.getString(R.string.error_ui_element_not_found) + else -> throw IllegalArgumentException("Unknown error $this") + } +} + +// TODO move this to a field inside each error class +val Error.isFixable: Boolean + get() = when (this) { + is Error.AppNotFound, + is Error.AppDisabled, + Error.NoCompatibleImeEnabled, + Error.NoCompatibleImeChosen, + is SystemError.ImeDisabled, + Error.AccessibilityServiceDisabled, + Error.AccessibilityServiceCrashed, + is SystemError.PermissionDenied, + is Error.ShizukuNotStarted, + is Error.CantDetectKeyEventsInPhoneCall, + + -> true + + else -> false + } diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/FilterUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/FilterUtils.kt similarity index 83% rename from common/src/main/java/io/github/sds100/keymapper/common/util/FilterUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/FilterUtils.kt index f3e6796f8f..5ac7a28816 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/FilterUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/FilterUtils.kt @@ -1,7 +1,7 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.base.utils -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.ui.ISearchable +import io.github.sds100.keymapper.base.utils.ui.ISearchable +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/ShareUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ShareUtils.kt similarity index 94% rename from common/src/main/java/io/github/sds100/keymapper/common/util/ShareUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ShareUtils.kt index d3d8a78c16..200fb747e3 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/ShareUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ShareUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.base.utils import android.app.PendingIntent import android.content.ActivityNotFoundException @@ -10,9 +10,9 @@ import android.os.Build import android.service.chooser.ChooserAction import androidx.core.app.ShareCompat import androidx.core.net.toUri -import io.github.sds100.keymapper.BaseMainActivity +import io.github.sds100.keymapper.base.BaseMainActivity +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.R object ShareUtils { fun sendMail(ctx: Context, email: String, subject: String, body: String) { diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/VersionHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/VersionHelper.kt similarity index 71% rename from common/src/main/java/io/github/sds100/keymapper/common/util/VersionHelper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/VersionHelper.kt index 1b9de576c6..666009d8f3 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/VersionHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/VersionHelper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.base.utils object VersionHelper { @@ -11,7 +11,7 @@ object VersionHelper { const val FINGERPRINT_GESTURES_MIN_VERSION = 40 /** - * This is version 3.0.0-beta.1 when the assistant trigger was first introduced. + * This is version 3.0.0-beta.1 when floating buttons were first introduced. */ const val FLOATING_BUTTON_MIN_VERSION = 81 } diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/BindingAdapters.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/BindingAdapters.kt similarity index 93% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/BindingAdapters.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/BindingAdapters.kt index dbe1ed7b0d..4fb88c53fc 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/BindingAdapters.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/BindingAdapters.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import android.content.Context import android.content.res.ColorStateList @@ -13,11 +13,8 @@ import com.google.android.material.color.MaterialColors import com.google.android.material.slider.Slider import com.google.android.material.textfield.TextInputLayout import com.google.android.material.textview.MaterialTextView -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.base.util.str -import io.github.sds100.keymapper.base.util.styledColor -import io.github.sds100.keymapper.base.util.styledFloat @BindingAdapter("app:onTextChanged") fun EditText.onTextChangedListener(textWatcher: TextWatcher) { diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/CheckBoxListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/CheckBoxListItem.kt similarity index 71% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/CheckBoxListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/CheckBoxListItem.kt index 80bd33fa95..e14210c6e1 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/CheckBoxListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/CheckBoxListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui data class CheckBoxListItem( override val id: String, diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/ChooseAppStoreModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ChooseAppStoreModel.kt similarity index 74% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/ChooseAppStoreModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ChooseAppStoreModel.kt index c51e1bc561..e243c84ba7 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/ChooseAppStoreModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ChooseAppStoreModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui data class ChooseAppStoreModel( val playStoreLink: String? = null, diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/DefaultSimpleListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DefaultSimpleListItem.kt similarity index 92% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/DefaultSimpleListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DefaultSimpleListItem.kt index a663563d73..5a69457b35 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/DefaultSimpleListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DefaultSimpleListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui data class DefaultSimpleListItem( override val id: String, diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/DialogUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt similarity index 94% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/DialogUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt index ddd6313152..ca93b0317b 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/DialogUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import android.app.Dialog import android.content.Context @@ -14,17 +14,16 @@ import androidx.lifecycle.lifecycleScope import com.google.android.material.textfield.TextInputLayout import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.errorOrNull -import io.github.sds100.keymapper.common.util.result.isSuccess -import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.errorOrNull +import io.github.sds100.keymapper.common.utils.isSuccess +import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.databinding.DialogEdittextNumberBinding import io.github.sds100.keymapper.databinding.DialogEdittextStringBinding -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.common.util.resumeIfNotCompleted +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.common.utils.resumeIfNotCompleted import kotlinx.coroutines.CancellableContinuation import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.collectLatest diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/EpoxyRecyclerViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/EpoxyRecyclerViewModelHelper.kt similarity index 94% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/EpoxyRecyclerViewModelHelper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/EpoxyRecyclerViewModelHelper.kt index 1d03a5aef6..dc84e23b82 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/EpoxyRecyclerViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/EpoxyRecyclerViewModelHelper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import com.airbnb.epoxy.EpoxyController import io.github.sds100.keymapper.checkbox diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/ISearchable.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ISearchable.kt similarity index 57% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/ISearchable.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ISearchable.kt index cc216e0d85..5d9ee34efe 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/ISearchable.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ISearchable.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui interface ISearchable { fun getSearchableString(): String diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/IconInfo.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/IconInfo.kt similarity index 72% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/IconInfo.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/IconInfo.kt index 80a95b21e4..63790b11e8 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/IconInfo.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/IconInfo.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import android.graphics.drawable.Drawable diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/CoroutineUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/LifecycleUtils.kt similarity index 61% rename from common/src/main/java/io/github/sds100/keymapper/common/util/CoroutineUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/LifecycleUtils.kt index 0403b73cf4..21c3ac2831 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/CoroutineUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/LifecycleUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.base.utils.ui import androidx.fragment.app.Fragment import androidx.lifecycle.Lifecycle @@ -7,13 +7,9 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.coroutineScope import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle -import kotlinx.coroutines.CancellableContinuation import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking -import kotlin.coroutines.resume + val Fragment.viewLifecycleScope: LifecycleCoroutineScope get() = viewLifecycleOwner.lifecycle.coroutineScope @@ -25,12 +21,4 @@ fun LifecycleOwner.launchRepeatOnLifecycle( lifecycleScope.launch { this@launchRepeatOnLifecycle.repeatOnLifecycle(state, block) } -} - -fun CancellableContinuation.resumeIfNotCompleted(value: T) { - if (!this.isCompleted) { - this.resume(value) - } -} - -fun Flow.firstBlocking(): T = runBlocking { first() } +} \ No newline at end of file diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/LinkType.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/LinkType.kt similarity index 54% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/LinkType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/LinkType.kt index 3e7f429b9f..c87246d622 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/LinkType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/LinkType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui enum class LinkType { HIDDEN, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ListItem.kt new file mode 100644 index 0000000000..06f5600943 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ListItem.kt @@ -0,0 +1,5 @@ +package io.github.sds100.keymapper.base.utils.ui + +interface ListItem { + val id: String +} diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/MultiChoiceItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiChoiceItem.kt similarity index 67% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/MultiChoiceItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiChoiceItem.kt index 42f173c795..55ca90dfbc 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/MultiChoiceItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiChoiceItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui data class MultiChoiceItem(val id: ID, val label: String, val isChecked: Boolean = false) diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/MultiSelectProvider.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiSelectProvider.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/MultiSelectProvider.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiSelectProvider.kt index f2cd36908d..fc8dccc068 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/MultiSelectProvider.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiSelectProvider.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/NavDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt similarity index 99% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/NavDestination.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt index d8ff256673..21c0cc4419 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/NavDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import io.github.sds100.keymapper.actions.ActionData import io.github.sds100.keymapper.actions.pinchscreen.PinchPickCoordinateResult diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/NavResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavResult.kt similarity index 54% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/NavResult.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavResult.kt index a90f63559b..6fb7599ad9 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/NavResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavResult.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui data class NavResult(val key: String, val result: Any?) diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/NavigateEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigateEvent.kt similarity index 62% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/NavigateEvent.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigateEvent.kt index a0711c81fa..e8b41ee289 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/NavigateEvent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigateEvent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui data class NavigateEvent(val key: String, val destination: NavDestination<*>) diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/NavigationUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationUtils.kt similarity index 94% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/NavigationUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationUtils.kt index 41c3dc0d97..d12827f9fa 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/NavigationUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import androidx.lifecycle.LifecycleOwner import androidx.navigation.NavBackStackEntry diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt similarity index 99% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/NavigationViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt index 2de461d3f6..211f265a2a 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import android.os.Bundle import androidx.core.os.bundleOf @@ -31,7 +31,7 @@ import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.base.system.ChooseBluetoothDeviceFragment import io.github.sds100.keymapper.base.system.intents.ConfigIntentFragment import io.github.sds100.keymapper.base.system.intents.ConfigIntentResult -import io.github.sds100.keymapper.ui.utils.getJsonSerializable +import io.github.sds100.keymapper.common.utils.getJsonSerializable import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/OnPopupResponseEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnPopupResponseEvent.kt similarity index 59% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/OnPopupResponseEvent.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnPopupResponseEvent.kt index e70b900c4b..55afbdfc76 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/OnPopupResponseEvent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnPopupResponseEvent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui data class OnPopupResponseEvent(val key: String, val response: Any?) diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/PopupUi.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupUi.kt similarity index 96% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/PopupUi.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupUi.kt index 7a9833dda2..88ad188d7f 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/PopupUi.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupUi.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/PopupViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt similarity index 98% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/PopupViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt index 93a2e21e41..b13611c994 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/PopupViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import android.content.Context import android.view.LayoutInflater @@ -13,7 +13,6 @@ import androidx.lifecycle.OnLifecycleEvent import io.github.sds100.keymapper.R import io.github.sds100.keymapper.databinding.DialogChooseAppStoreBinding import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/RadioButtonPairListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonPairListItem.kt similarity index 86% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/RadioButtonPairListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonPairListItem.kt index 950b7e4bae..a8a6052b98 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/RadioButtonPairListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonPairListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui data class RadioButtonPairListItem( diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/RadioButtonTripleListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonTripleListItem.kt similarity index 89% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/RadioButtonTripleListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonTripleListItem.kt index b530fd7aa7..cee285c9fb 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/RadioButtonTripleListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonTripleListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui data class RadioButtonTripleListItem( diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/RecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/RecyclerViewFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt index 2efdd41fd8..3ec556d59e 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/RecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import android.os.Bundle import android.view.LayoutInflater @@ -20,8 +20,7 @@ import androidx.savedstate.SavedStateRegistry import com.airbnb.epoxy.EpoxyRecyclerView import com.google.android.material.bottomappbar.BottomAppBar import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.common.util.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/RecyclerViewUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewUtils.kt similarity index 96% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/RecyclerViewUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewUtils.kt index 8d7bfe47bc..611aac380f 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/RecyclerViewUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import android.graphics.Rect import android.view.View diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/ResourceExt.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ResourceExt.kt similarity index 99% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/ResourceExt.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ResourceExt.kt index f353b42a24..735de5c661 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/ResourceExt.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ResourceExt.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import android.content.Context import android.content.res.ColorStateList diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/ResourceProvider.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ResourceProvider.kt similarity index 84% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/ResourceProvider.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ResourceProvider.kt index a9699df5aa..ca41420107 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/ResourceProvider.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ResourceProvider.kt @@ -1,19 +1,21 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import android.content.Context import android.graphics.drawable.Drawable import androidx.annotation.ColorRes import androidx.annotation.DrawableRes import androidx.annotation.StringRes +import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch +import javax.inject.Inject +import javax.inject.Singleton - - -class ResourceProviderImpl( - context: Context, +@Singleton +class ResourceProviderImpl @Inject constructor( + @ApplicationContext context: Context, private val coroutineScope: CoroutineScope, ) : ResourceProvider { private val ctx = context.applicationContext diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/SectionHeaderListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SectionHeaderListItem.kt similarity index 64% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/SectionHeaderListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SectionHeaderListItem.kt index 7e874730e2..65ec4dd379 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/SectionHeaderListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SectionHeaderListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui data class SectionHeaderListItem(override val id: String, val text: String) : ListItem diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/SelectionState.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SelectionState.kt similarity index 76% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/SelectionState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SelectionState.kt index 4b880ddad4..e17f93dcfc 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/SelectionState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SelectionState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui sealed class SelectionState { diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/ShowPopupEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowPopupEvent.kt similarity index 57% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/ShowPopupEvent.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowPopupEvent.kt index ec7f6f6bc4..7b841a99a0 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/ShowPopupEvent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowPopupEvent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui data class ShowPopupEvent(val key: String, val ui: PopupUi<*>) diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/SimpleRecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/SimpleRecyclerViewFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt index f2328a3504..bf39a199e4 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/SimpleRecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import android.view.LayoutInflater import android.view.ViewGroup diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/SliderMaximums.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMaximums.kt similarity index 90% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/SliderMaximums.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMaximums.kt index cac92c8814..ccbfa28326 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/SliderMaximums.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMaximums.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui object SliderMaximums { diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/SliderMinimums.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMinimums.kt similarity index 89% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/SliderMinimums.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMinimums.kt index 64648699af..40eaff2019 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/SliderMinimums.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMinimums.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui object SliderMinimums { diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/SliderStepSizes.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderStepSizes.kt similarity index 90% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/SliderStepSizes.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderStepSizes.kt index 942e40861f..d77b9a1013 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/SliderStepSizes.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderStepSizes.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui object SliderStepSizes { diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/SnackBarUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/SnackBarUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt index 15f649d45c..255a10cd42 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/SnackBarUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import androidx.coordinatorlayout.widget.CoordinatorLayout import io.github.sds100.keymapper.R diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/SquareImageButton.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SquareImageButton.kt similarity index 89% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/SquareImageButton.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SquareImageButton.kt index 9da8d446a4..01a559b799 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/SquareImageButton.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SquareImageButton.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import android.content.Context import android.util.AttributeSet diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/TextListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TextListItem.kt similarity index 84% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/TextListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TextListItem.kt index b24a0975bc..a7d7067e76 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/TextListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TextListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/TintType.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TintType.kt similarity index 83% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/TintType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TintType.kt index 8d500247b0..991ff969e6 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/TintType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TintType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import androidx.annotation.ColorInt diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/ViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt similarity index 96% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/ViewModelHelper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt index 4b1396cb0d..c495d7765d 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/ViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt @@ -1,11 +1,11 @@ -package io.github.sds100.keymapper.common.ui +package io.github.sds100.keymapper.base.utils.ui import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.isFixable +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.isFixable object ViewModelHelper { diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CheckBoxText.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/CheckBoxText.kt similarity index 96% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CheckBoxText.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/CheckBoxText.kt index f86821a066..cbe29ef5af 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CheckBoxText.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/CheckBoxText.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CollapsableFloatingActionButton.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/CollapsableFloatingActionButton.kt similarity index 95% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CollapsableFloatingActionButton.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/CollapsableFloatingActionButton.kt index e267edaeec..706c2299b8 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CollapsableFloatingActionButton.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/CollapsableFloatingActionButton.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedVisibility diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CompactChip.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/CompactChip.kt similarity index 98% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CompactChip.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/CompactChip.kt index 1ddaf94651..226b93841f 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/CompactChip.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/CompactChip.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeChipModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeChipModel.kt similarity index 76% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeChipModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeChipModel.kt index c730d1c405..29b28f6c70 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeChipModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeChipModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose sealed class ComposeChipModel { abstract val id: String @@ -13,7 +13,7 @@ sealed class ComposeChipModel { data class Error( override val id: String, override val text: String, - val error: io.github.sds100.keymapper.common.util.result.Error, + val error: io.github.sds100.keymapper.common.utils.Error, val isFixable: Boolean = true, ) : ComposeChipModel() } diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeDialogs.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeDialogs.kt similarity index 98% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeDialogs.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeDialogs.kt index f88d81258d..f05cf9f5f5 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeDialogs.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeDialogs.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeIconInfo.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeIconInfo.kt similarity index 81% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeIconInfo.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeIconInfo.kt index 71dc3748aa..4d2dfec387 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ComposeIconInfo.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeIconInfo.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.ui.graphics.vector.ImageVector diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/DragDropState.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/DragDropState.kt similarity index 99% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/DragDropState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/DragDropState.kt index 791474c3cc..391aa53804 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/DragDropState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/DragDropState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.Spring diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/DraggableItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/DraggableItem.kt similarity index 95% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/DraggableItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/DraggableItem.kt index 3450eaeb93..d40e0cb3cd 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/DraggableItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/DraggableItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperDropdownMenu.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperDropdownMenu.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperDropdownMenu.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperDropdownMenu.kt index 7300a32f8f..cd4629e72d 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperDropdownMenu.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperDropdownMenu.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperSliderThumb.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperSliderThumb.kt similarity index 89% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperSliderThumb.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperSliderThumb.kt index b088fca3d2..b869245f4d 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperSliderThumb.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperSliderThumb.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.material3.SliderDefaults diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperTapTarget.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperTapTarget.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperTapTarget.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperTapTarget.kt index d189bbd819..3ecc87ad6d 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/KeyMapperTapTarget.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperTapTarget.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.Column diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ListItemFixError.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ListItemFixError.kt similarity index 95% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ListItemFixError.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ListItemFixError.kt index d926791189..e71a7ba496 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/ListItemFixError.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ListItemFixError.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -20,7 +20,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.util.ui.TextListItem +import io.github.sds100.keymapper.base.utils.ui.TextListItem @Composable fun ListItemFixError( diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/OptionsHeaderRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/OptionsHeaderRow.kt similarity index 94% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/OptionsHeaderRow.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/OptionsHeaderRow.kt index 0f8aa87222..4754c14c69 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/OptionsHeaderRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/OptionsHeaderRow.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/RadioButtonText.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/RadioButtonText.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/RadioButtonText.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/RadioButtonText.kt index 29dbde5e81..aea3b6426a 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/RadioButtonText.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/RadioButtonText.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SearchAppBarActions.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SearchAppBarActions.kt similarity index 98% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SearchAppBarActions.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SearchAppBarActions.kt index 2663865603..5529b0b45f 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SearchAppBarActions.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SearchAppBarActions.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.foundation.layout.RowScope import androidx.compose.material.icons.Icons diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SimpleListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItem.kt similarity index 98% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SimpleListItem.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItem.kt index e862eadcc6..f09d140353 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SimpleListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItem.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -33,7 +33,7 @@ import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.util.drawable +import io.github.sds100.keymapper.base.utils.drawable @Composable fun SimpleListItemHeader( diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SimpleListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItemModel.kt similarity index 84% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SimpleListItemModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItemModel.kt index 520acec94f..1682d7c971 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SimpleListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItemModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose data class SimpleListItemGroup(val header: String, val items: List) diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SliderOptionText.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SliderOptionText.kt similarity index 99% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SliderOptionText.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SliderOptionText.kt index aebf53dcd6..3dd2b08d9d 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/SliderOptionText.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SliderOptionText.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.interaction.MutableInteractionSource diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/UriHandlerUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/UriHandlerUtils.kt similarity index 78% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/UriHandlerUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/UriHandlerUtils.kt index a11e0a212e..8d47e26311 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/UriHandlerUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/UriHandlerUtils.kt @@ -1,10 +1,10 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import android.content.Context import android.widget.Toast import androidx.compose.ui.platform.UriHandler import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.base.util.str +import io.github.sds100.keymapper.base.utils.str fun UriHandler.openUriSafe(ctx: Context, uri: String) { try { diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/WindowSizeClassExt.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/WindowSizeClassExt.kt similarity index 96% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/WindowSizeClassExt.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/WindowSizeClassExt.kt index e8ed0fbdee..bcdf0924a9 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/WindowSizeClassExt.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/WindowSizeClassExt.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose +package io.github.sds100.keymapper.base.utils.ui.compose import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/AdGroup.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/AdGroup.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/AdGroup.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/AdGroup.kt index a62c74c428..431a1e884f 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/AdGroup.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/AdGroup.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose.icons +package io.github.sds100.keymapper.base.utils.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/HomeIotDevice.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/HomeIotDevice.kt similarity index 98% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/HomeIotDevice.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/HomeIotDevice.kt index 4027e2ffe3..d03c326303 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/HomeIotDevice.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/HomeIotDevice.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose.icons +package io.github.sds100.keymapper.base.utils.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/Import.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/Import.kt similarity index 98% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/Import.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/Import.kt index 78ecffbbc3..8d71dc619a 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/Import.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/Import.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose.icons +package io.github.sds100.keymapper.base.utils.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/InstantMix.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/InstantMix.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/InstantMix.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/InstantMix.kt index d5b2caa1e2..fc5bbce79f 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/InstantMix.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/InstantMix.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose.icons +package io.github.sds100.keymapper.base.utils.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/JumpToElement.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/JumpToElement.kt similarity index 98% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/JumpToElement.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/JumpToElement.kt index 3c4b9ce202..afefdb1adb 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/JumpToElement.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/JumpToElement.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose.icons +package io.github.sds100.keymapper.base.utils.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/KeyMapperIcons.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/KeyMapperIcons.kt new file mode 100644 index 0000000000..1d5c1d891b --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/KeyMapperIcons.kt @@ -0,0 +1,3 @@ +package io.github.sds100.keymapper.base.utils.ui.compose.icons + +object KeyMapperIcons diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/MatchWord.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/MatchWord.kt similarity index 98% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/MatchWord.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/MatchWord.kt index cf03f23c52..5ae8142c46 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/MatchWord.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/MatchWord.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose.icons +package io.github.sds100.keymapper.base.utils.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/NfcOff.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/NfcOff.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/NfcOff.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/NfcOff.kt index def2fa1b85..cf198ec9cf 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/NfcOff.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/NfcOff.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose.icons +package io.github.sds100.keymapper.base.utils.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TextSelectEnd.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/TextSelectEnd.kt similarity index 98% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TextSelectEnd.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/TextSelectEnd.kt index 7647b535bc..bc6adec357 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TextSelectEnd.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/TextSelectEnd.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose.icons +package io.github.sds100.keymapper.base.utils.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TextSelectMoveForwardCharacter.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/TextSelectMoveForwardCharacter.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TextSelectMoveForwardCharacter.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/TextSelectMoveForwardCharacter.kt index 204fd1ce2d..2e6be90307 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TextSelectMoveForwardCharacter.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/TextSelectMoveForwardCharacter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose.icons +package io.github.sds100.keymapper.base.utils.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TopPanelClose.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/TopPanelClose.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TopPanelClose.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/TopPanelClose.kt index 622fd3843c..7795f4ee29 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TopPanelClose.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/TopPanelClose.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose.icons +package io.github.sds100.keymapper.base.utils.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TopPanelOpen.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/TopPanelOpen.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TopPanelOpen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/TopPanelOpen.kt index f5d947c687..531319676b 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/ui/compose/icons/TopPanelOpen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/TopPanelOpen.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.ui.compose.icons +package io.github.sds100.keymapper.base.utils.ui.compose.icons import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor diff --git a/base/src/main/res/layout/dialog_choose_app_store.xml b/base/src/main/res/layout/dialog_choose_app_store.xml index 3b36c33602..af7de866af 100644 --- a/base/src/main/res/layout/dialog_choose_app_store.xml +++ b/base/src/main/res/layout/dialog_choose_app_store.xml @@ -8,7 +8,7 @@ + type="io.github.sds100.keymapper.base.utils.ui.ChooseAppStoreModel" /> + type="io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem" /> + type="io.github.sds100.keymapper.base.utils.ui.TextListItem.Error" /> - + + type="io.github.sds100.keymapper.base.utils.ui.RadioButtonPairListItem" /> + type="io.github.sds100.keymapper.base.utils.ui.RadioButtonTripleListItem" /> + type="io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld" /> - SystemError.PermissionDenied.getMessageForPermission( - resourceProvider, - permission, - ) - - is Error.AppNotFound -> resourceProvider.getString( - R.string.error_app_isnt_installed, - packageName, - ) - - is Error.AppDisabled -> resourceProvider.getString( - R.string.error_app_is_disabled_package_name, - this.packageName, - ) - - is Error.NoCompatibleImeEnabled -> resourceProvider.getString(R.string.error_key_mapper_ime_service_disabled) - is Error.NoCompatibleImeChosen -> resourceProvider.getString(R.string.error_ime_must_be_chosen) - is Error.SystemFeatureNotSupported -> when (this.feature) { - PackageManager.FEATURE_NFC -> resourceProvider.getString(R.string.error_system_feature_nfc_unsupported) - PackageManager.FEATURE_CAMERA -> resourceProvider.getString(R.string.error_system_feature_camera_unsupported) - PackageManager.FEATURE_FINGERPRINT -> resourceProvider.getString(R.string.error_system_feature_fingerprint_unsupported) - PackageManager.FEATURE_WIFI -> resourceProvider.getString(R.string.error_system_feature_wifi_unsupported) - PackageManager.FEATURE_BLUETOOTH -> resourceProvider.getString(R.string.error_system_feature_bluetooth_unsupported) - PackageManager.FEATURE_DEVICE_ADMIN -> resourceProvider.getString(R.string.error_system_feature_device_admin_unsupported) - PackageManager.FEATURE_CAMERA_FLASH -> resourceProvider.getString(R.string.error_system_feature_camera_flash_unsupported) - PackageManager.FEATURE_TELEPHONY -> resourceProvider.getString(R.string.error_system_feature_telephony_unsupported) - else -> throw Exception("Don't know how to get error message for this system feature ${this.feature}") - } - - is Error.ExtraNotFound -> resourceProvider.getString(R.string.error_extra_not_found, extraId) - is Error.SdkVersionTooLow -> resourceProvider.getString( - R.string.error_sdk_version_too_low, - BuildUtils.getSdkVersionName(minSdk), - ) - - is Error.SdkVersionTooHigh -> resourceProvider.getString( - R.string.error_sdk_version_too_high, - BuildUtils.getSdkVersionName(maxSdk), - ) - - is Error.InputMethodNotFound -> resourceProvider.getString( - R.string.error_ime_not_found, - imeLabel, - ) - - is Error.FrontFlashNotFound -> resourceProvider.getString(R.string.error_front_flash_not_found) - is Error.BackFlashNotFound -> resourceProvider.getString(R.string.error_back_flash_not_found) - is Error.DeviceNotFound -> resourceProvider.getString(R.string.error_device_not_found) - is Error.Exception -> exception.toString() - is Error.EmptyJson -> resourceProvider.getString(R.string.error_empty_json) - is Error.InvalidNumber -> resourceProvider.getString(R.string.error_invalid_number) - is Error.NumberTooSmall -> resourceProvider.getString(R.string.error_number_too_small, min) - is Error.NumberTooBig -> resourceProvider.getString(R.string.error_number_too_big, max) - is Error.EmptyText -> resourceProvider.getString(R.string.error_cant_be_empty) - Error.BackupVersionTooNew -> resourceProvider.getString(R.string.error_backup_version_too_new) - Error.NoIncompatibleKeyboardsInstalled -> resourceProvider.getString(R.string.error_no_incompatible_input_methods_installed) - Error.NoMediaSessions -> resourceProvider.getString(R.string.error_no_media_sessions) - Error.NoVoiceAssistant -> resourceProvider.getString(R.string.error_voice_assistant_not_found) - Error.AccessibilityServiceDisabled -> resourceProvider.getString(R.string.error_accessibility_service_disabled) - Error.LauncherShortcutsNotSupported -> resourceProvider.getString(R.string.error_launcher_shortcuts_not_supported) - Error.AccessibilityServiceCrashed -> resourceProvider.getString(R.string.error_accessibility_service_crashed) - Error.CantFindImeSettings -> resourceProvider.getString(R.string.error_cant_find_ime_settings) - Error.CantShowImePickerInBackground -> resourceProvider.getString(R.string.error_cant_show_ime_picker_in_background) - Error.FailedToFindAccessibilityNode -> resourceProvider.getString(R.string.error_failed_to_find_accessibility_node) - is Error.FailedToPerformAccessibilityGlobalAction -> resourceProvider.getString( - R.string.error_failed_to_perform_accessibility_global_action, - action, - ) - - Error.FailedToDispatchGesture -> resourceProvider.getString(R.string.error_failed_to_dispatch_gesture) - Error.AppShortcutCantBeOpened -> resourceProvider.getString(R.string.error_opening_app_shortcut) - Error.InsufficientPermissionsToOpenAppShortcut -> resourceProvider.getString(R.string.error_keymapper_doesnt_have_permission_app_shortcut) - Error.NoAppToPhoneCall -> resourceProvider.getString(R.string.error_no_app_to_phone_call) - - Error.CameraInUse -> resourceProvider.getString(R.string.error_camera_in_use) - Error.CameraError -> resourceProvider.getString(R.string.error_camera_error) - Error.CameraDisabled -> resourceProvider.getString(R.string.error_camera_disabled) - Error.CameraDisconnected -> resourceProvider.getString(R.string.error_camera_disconnected) - Error.MaxCamerasInUse -> resourceProvider.getString(R.string.error_max_cameras_in_use) - Error.CameraVariableFlashlightStrengthUnsupported -> resourceProvider.getString(R.string.error_variable_flashlight_strength_unsupported) - - is Error.FailedToModifySystemSetting -> resourceProvider.getString( - R.string.error_failed_to_modify_system_setting, - setting, - ) - - is SystemError.ImeDisabled -> resourceProvider.getString( - R.string.error_ime_disabled, - this.ime.label, - ) - Error.FailedToChangeIme -> resourceProvider.getString(R.string.error_failed_to_change_ime) - Error.NoCameraApp -> resourceProvider.getString(R.string.error_no_camera_app) - Error.NoDeviceAssistant -> resourceProvider.getString(R.string.error_no_device_assistant) - Error.NoSettingsApp -> resourceProvider.getString(R.string.error_no_settings_app) - Error.NoAppToOpenUrl -> resourceProvider.getString(R.string.error_no_app_to_open_url) - - Error.CantFindSoundFile -> resourceProvider.getString(R.string.error_cant_find_sound_file) - is Error.CorruptJsonFile -> reason - - is Error.CannotCreateFileInTarget -> resourceProvider.getString( - R.string.error_file_access_denied, - uri, - ) - - Error.FileOperationCancelled -> resourceProvider.getString(R.string.error_file_operation_cancelled) - is Error.NoSpaceLeftOnTarget -> resourceProvider.getString( - R.string.error_no_space_left_at_target, - uri, - ) - - is Error.NotADirectory -> resourceProvider.getString(R.string.error_not_a_directory, uri) - is Error.NotAFile -> resourceProvider.getString(R.string.error_not_a_file, uri) - is Error.SourceFileNotFound -> resourceProvider.getString( - R.string.error_source_file_not_found, - uri, - ) - - Error.StoragePermissionDenied -> resourceProvider.getString(R.string.error_storage_permission_denied) - Error.TargetDirectoryMatchesSourceDirectory -> resourceProvider.getString(R.string.error_matching_source_and_target_paths) - is Error.TargetDirectoryNotFound -> resourceProvider.getString( - R.string.error_directory_not_found, - uri, - ) - - is Error.TargetFileNotFound -> resourceProvider.getString( - R.string.error_target_file_not_found, - uri, - ) - - Error.UnknownIOError -> resourceProvider.getString(R.string.error_io_error) - Error.ShizukuNotStarted -> resourceProvider.getString(R.string.error_shizuku_not_started) - Error.NoFileName -> resourceProvider.getString(R.string.error_no_file_name) - Error.CantDetectKeyEventsInPhoneCall -> resourceProvider.getString(R.string.trigger_error_cant_detect_in_phone_call_explanation) - Error.GestureStrokeCountTooHigh -> resourceProvider.getString(R.string.trigger_error_gesture_stroke_count_too_high) - Error.GestureDurationTooHigh -> resourceProvider.getString(R.string.trigger_error_gesture_duration_too_high) - - PurchasingError.PurchasingProcessError.Cancelled -> resourceProvider.getString(R.string.purchasing_error_cancelled) - PurchasingError.PurchasingProcessError.NetworkError -> resourceProvider.getString(R.string.purchasing_error_network) - PurchasingError.PurchasingProcessError.ProductNotFound -> resourceProvider.getString(R.string.purchasing_error_product_not_found) - PurchasingError.PurchasingProcessError.StoreProblem -> resourceProvider.getString(R.string.purchasing_error_store_problem) - PurchasingError.PurchasingProcessError.PaymentPending -> resourceProvider.getString(R.string.purchasing_error_payment_pending) - PurchasingError.PurchasingProcessError.PurchaseInvalid -> resourceProvider.getString(R.string.purchasing_error_purchase_invalid) - is PurchasingError.PurchasingProcessError.Unexpected -> this.message - - is PurchasingError.ProductNotPurchased -> when (this.product) { - ProductId.ASSISTANT_TRIGGER -> resourceProvider.getString(R.string.purchasing_error_assistant_not_purchased_home_screen) - ProductId.FLOATING_BUTTONS -> resourceProvider.getString(R.string.purchasing_error_floating_buttons_not_purchased_home_screen) - } - - PurchasingError.PurchasingNotImplemented -> resourceProvider.getString(R.string.purchasing_error_not_implemented) - Error.DpadTriggerImeNotSelected -> resourceProvider.getString(R.string.trigger_error_dpad_ime_not_selected) - Error.InvalidBackup -> resourceProvider.getString(R.string.error_invalid_backup) - Error.MalformedUrl -> resourceProvider.getString(R.string.error_malformed_url) - Error.UiElementNotFound -> resourceProvider.getString(R.string.error_ui_element_not_found) - else -> throw IllegalArgumentException("Unknown error $this") -} - -val Error.isFixable: Boolean - get() = when (this) { - is Error.AppNotFound, - is Error.AppDisabled, - Error.NoCompatibleImeEnabled, - Error.NoCompatibleImeChosen, - is SystemError.ImeDisabled, - Error.AccessibilityServiceDisabled, - Error.AccessibilityServiceCrashed, - is SystemError.PermissionDenied, - is Error.ShizukuNotStarted, - is Error.CantDetectKeyEventsInPhoneCall, - - -> true - - else -> false - } diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/LoggingUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/LoggingUtils.kt deleted file mode 100644 index 53e5dcb0a7..0000000000 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/LoggingUtils.kt +++ /dev/null @@ -1,17 +0,0 @@ -package io.github.sds100.keymapper.common.util - -import timber.log.Timber -import kotlin.system.measureTimeMillis - - - -inline fun logMeasureTimeMillis(block: () -> T): T { - val result: T - val time = measureTimeMillis { - result = block.invoke() - } - - Timber.e("$time ms") - - return result -} diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/ServiceEvent.kt b/common/src/main/java/io/github/sds100/keymapper/common/util/ServiceEvent.kt deleted file mode 100644 index 5cf6c23625..0000000000 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/ServiceEvent.kt +++ /dev/null @@ -1,85 +0,0 @@ -package io.github.sds100.keymapper.common.util - -import android.os.Parcelable -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState -import io.github.sds100.keymapper.system.devices.InputDeviceInfo -import io.github.sds100.keymapper.trigger.KeyEventDetectionSource -import kotlinx.parcelize.Parcelize -import kotlinx.serialization.Serializable - -@Serializable -sealed class ServiceEvent { - - @Serializable - data class Ping(val key: String) : ServiceEvent() - - @Serializable - data class Pong(val key: String) : ServiceEvent() - - @Parcelize - @Serializable - data class RecordedTriggerKey( - val keyCode: Int, - val device: InputDeviceInfo?, - val detectionSource: KeyEventDetectionSource, - ) : ServiceEvent(), - Parcelable - - @Serializable - object StartRecordingTrigger : ServiceEvent() - - @Serializable - object StopRecordingTrigger : ServiceEvent() - - @Serializable - data class OnIncrementRecordTriggerTimer(val timeLeft: Int) : ServiceEvent() - - @Serializable - object OnStoppedRecordingTrigger : ServiceEvent() - - @Serializable - object OnHideKeyboardEvent : ServiceEvent() - - @Serializable - object OnShowKeyboardEvent : ServiceEvent() - - @Serializable - object HideKeyboard : ServiceEvent() - - @Serializable - object ShowKeyboard : ServiceEvent() - - @Serializable - data class TestAction(val action: ActionData) : ServiceEvent() - - @Serializable - data class ChangeIme(val imeId: String) : ServiceEvent() - - @Serializable - object DisableService : ServiceEvent() - - @Serializable - object DismissLastNotification : ServiceEvent() - - @Serializable - object DismissAllNotifications : ServiceEvent() - - @Serializable - data class OnInputFocusChange(val isFocussed: Boolean) : ServiceEvent() - - @Serializable - data class TriggerKeyMap(val uid: String) : ServiceEvent() - - @Serializable - data class EnableInputMethod(val imeId: String) : ServiceEvent() - - @Serializable - data object StartRecordingNodes : ServiceEvent() - - @Serializable - data object StopRecordingNodes : ServiceEvent() - - @Serializable - data class OnRecordNodeStateChanged(val state: RecordAccessibilityNodeState) : ServiceEvent() -} diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/BundleUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/BundleUtils.kt similarity index 70% rename from common/src/main/java/io/github/sds100/keymapper/common/util/BundleUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/BundleUtils.kt index 116d092c98..da327c98d2 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/BundleUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/BundleUtils.kt @@ -1,8 +1,6 @@ -package io.github.sds100.keymapper.ui.utils +package io.github.sds100.keymapper.common.utils import android.os.Bundle -import kotlinx.serialization.decodeFromString -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json inline fun Bundle.getJsonSerializable(key: String): T? = diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/CoroutineUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/CoroutineUtils.kt new file mode 100644 index 0000000000..de93311481 --- /dev/null +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/CoroutineUtils.kt @@ -0,0 +1,15 @@ +package io.github.sds100.keymapper.common.utils + +import kotlinx.coroutines.CancellableContinuation +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.runBlocking +import kotlin.coroutines.resume + +fun CancellableContinuation.resumeIfNotCompleted(value: T) { + if (!this.isCompleted) { + this.resume(value) + } +} + +fun Flow.firstBlocking(): T = runBlocking { first() } diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/DispatcherProvider.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/DispatcherProvider.kt similarity index 89% rename from common/src/main/java/io/github/sds100/keymapper/common/util/DispatcherProvider.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/DispatcherProvider.kt index aced79390b..0d980b3ccd 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/DispatcherProvider.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/DispatcherProvider.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.common.utils import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/DisplayUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/DisplayUtils.kt similarity index 94% rename from common/src/main/java/io/github/sds100/keymapper/common/util/DisplayUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/DisplayUtils.kt index 8867632dd4..6f0f332b70 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/DisplayUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/DisplayUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.common.utils import android.content.Context import android.graphics.Point diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/InputEventType.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/InputEventType.kt similarity index 56% rename from common/src/main/java/io/github/sds100/keymapper/common/util/InputEventType.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/InputEventType.kt index 64b4c38227..e3805172d5 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/InputEventType.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/InputEventType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.common.utils enum class InputEventType { DOWN_UP, diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/ListUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/ListUtils.kt similarity index 95% rename from common/src/main/java/io/github/sds100/keymapper/common/util/ListUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/ListUtils.kt index e3f1642bbb..0b07f85202 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/ListUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/ListUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.common.utils import java.util.Collections diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/MapUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/MapUtils.kt similarity index 73% rename from common/src/main/java/io/github/sds100/keymapper/common/util/MapUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/MapUtils.kt index 337d6e0a5f..bd516de8a9 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/MapUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/MapUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.common.utils diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/MathUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/MathUtils.kt similarity index 97% rename from common/src/main/java/io/github/sds100/keymapper/common/util/MathUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/MathUtils.kt index b18ff45b57..ad24560739 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/MathUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/MathUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.common.utils import android.graphics.Point import kotlin.math.atan2 diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PinchScreenType.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/PinchScreenType.kt similarity index 54% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PinchScreenType.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/PinchScreenType.kt index e24d29f4f8..c21d5c4fab 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/actions/PinchScreenType.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/PinchScreenType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.actions +package io.github.sds100.keymapper.common.utils enum class PinchScreenType { PINCH_IN, diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/result/Result.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/Result.kt similarity index 99% rename from common/src/main/java/io/github/sds100/keymapper/common/util/result/Result.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/Result.kt index cb11b1ec42..c077c31186 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/result/Result.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/Result.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util.result +package io.github.sds100.keymapper.common.utils /** * Inspired from @antonyharfield great example! diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/SizeKM.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/SizeKM.kt similarity index 77% rename from common/src/main/java/io/github/sds100/keymapper/common/util/SizeKM.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/SizeKM.kt index 10d907112a..04e65dc7f7 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/SizeKM.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/SizeKM.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.common.utils import kotlinx.serialization.Serializable diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/state/State.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/State.kt similarity index 91% rename from common/src/main/java/io/github/sds100/keymapper/common/util/state/State.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/State.kt index cfc1a42759..b02b884c75 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/state/State.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/State.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util.state +package io.github.sds100.keymapper.common.utils sealed class State { diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/StringUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/StringUtils.kt similarity index 87% rename from common/src/main/java/io/github/sds100/keymapper/common/util/StringUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/StringUtils.kt index 4c74cd95ab..e593631591 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/StringUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/StringUtils.kt @@ -1,11 +1,8 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.common.utils -import androidx.annotation.IntRange import kotlin.math.roundToInt - - -fun String.getWordBoundaries(@IntRange(from = 0L) cursorPosition: Int): Pair? { +fun String.getWordBoundaries(cursorPosition: Int): Pair? { if (this.isBlank()) return null // return null if there is just whitespace around the position diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/TimeUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/TimeUtils.kt similarity index 85% rename from common/src/main/java/io/github/sds100/keymapper/common/util/TimeUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/TimeUtils.kt index 740660c8bf..450e438d9b 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/TimeUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/TimeUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.common.utils import java.time.format.DateTimeFormatter import java.time.format.FormatStyle diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/TreeNode.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/TreeNode.kt similarity index 89% rename from common/src/main/java/io/github/sds100/keymapper/common/util/TreeNode.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/TreeNode.kt index b78d5eb79a..1165dfb6fc 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/TreeNode.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/TreeNode.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.common.utils data class TreeNode(val value: T, val children: MutableList> = mutableListOf()) diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/UserHandleUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/UserHandleUtils.kt similarity index 81% rename from common/src/main/java/io/github/sds100/keymapper/common/util/UserHandleUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/UserHandleUtils.kt index 2c4009e1cb..58e5a79dc7 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/UserHandleUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/UserHandleUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.common.utils import android.os.UserHandle diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/UuidGenerator.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/UuidGenerator.kt similarity index 80% rename from common/src/main/java/io/github/sds100/keymapper/common/util/UuidGenerator.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/UuidGenerator.kt index 5daaea049f..337a6911fc 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/UuidGenerator.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/UuidGenerator.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.common.utils import java.util.UUID diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 987835ff52..798821646c 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -44,7 +44,6 @@ android { dependencies { implementation(project(":common")) - implementation(project(":system")) // kotlin stuff implementation(libs.kotlinx.coroutines.android) @@ -52,6 +51,7 @@ dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.room.ktx) implementation(libs.androidx.datastore.preferences) + implementation(libs.androidx.preference.ktx) implementation(libs.kotson) implementation(libs.dagger.hilt.android) diff --git a/data/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt index f84769395c..e257148fd5 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt @@ -4,7 +4,6 @@ import android.os.Parcelable import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey -import io.github.sds100.keymapper.actions.uielement.NodeInteractionType import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.KEY_ACTIONS import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.KEY_CLASS_NAME import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.KEY_CONTENT_DESCRIPTION @@ -17,6 +16,7 @@ import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.KEY import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.KEY_UNIQUE_ID import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.KEY_VIEW_RESOURCE_ID import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.TABLE_NAME +import io.github.sds100.keymapper.system.accessibility.NodeInteractionType import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable diff --git a/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt index 3f7fb8e160..4856d28f15 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt @@ -4,7 +4,7 @@ import android.os.Parcelable import com.github.salomonbrys.kotson.byString import com.github.salomonbrys.kotson.jsonDeserializer import com.google.gson.annotations.SerializedName -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Success import kotlinx.parcelize.Parcelize @Parcelize diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt index 5b352338cd..3cc5416217 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt @@ -15,7 +15,7 @@ import com.google.gson.JsonArray import com.google.gson.JsonElement import com.google.gson.JsonObject import com.google.gson.JsonParser -import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.base.utils.firstBlocking /** * Move fingerprint maps from data store into sqlite database and move device info list information diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt index 18179e4e29..9ba1d6649e 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.data.repositories import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt index 2f6e117b0a..c0976c442d 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt @@ -3,9 +3,9 @@ package io.github.sds100.keymapper.data.repositories import io.github.sds100.keymapper.data.db.dao.FloatingButtonDao import io.github.sds100.keymapper.data.entities.FloatingButtonEntity import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout -import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.util.DispatcherProvider -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.base.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt index afc783fb02..8afded7195 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt @@ -4,9 +4,9 @@ import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.data.db.dao.FloatingLayoutDao import io.github.sds100.keymapper.data.entities.FloatingLayoutEntity import io.github.sds100.keymapper.data.entities.FloatingLayoutEntityWithButtons -import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.util.DispatcherProvider -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.base.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt index 1257e1fd1c..de118bb02c 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt @@ -4,8 +4,8 @@ import io.github.sds100.keymapper.data.db.dao.GroupDao import io.github.sds100.keymapper.data.entities.GroupEntity import io.github.sds100.keymapper.data.entities.GroupEntityWithChildren import io.github.sds100.keymapper.data.entities.KeyMapEntitiesWithGroup -import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.util.DispatcherProvider +import io.github.sds100.keymapper.base.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.utils.DispatcherProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt index f604da80c8..d4f67e4a55 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt @@ -6,10 +6,10 @@ import io.github.sds100.keymapper.data.entities.FingerprintMapEntity import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.data.migration.fingerprintmaps.FingerprintToKeyMapMigration import io.github.sds100.keymapper.base.keymaps.KeyMapRepository -import io.github.sds100.keymapper.base.util.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.util.DispatcherProvider -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.splitIntoBatches +import io.github.sds100.keymapper.base.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.base.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.splitIntoBatches import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt index 5753055544..ecdb1fe8ea 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.data.repositories import io.github.sds100.keymapper.data.db.dao.LogEntryDao import io.github.sds100.keymapper.data.entities.LogEntryEntity import io.github.sds100.keymapper.logging.LogRepository -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/PreferenceDelegate.kt b/data/src/main/java/io/github/sds100/keymapper/data/utils/PreferenceDelegate.kt similarity index 89% rename from common/src/main/java/io/github/sds100/keymapper/common/util/PreferenceDelegate.kt rename to data/src/main/java/io/github/sds100/keymapper/data/utils/PreferenceDelegate.kt index 48dbd6c4c6..c9e030276b 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/PreferenceDelegate.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/utils/PreferenceDelegate.kt @@ -1,7 +1,7 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.data.utils import androidx.datastore.preferences.core.Preferences -import io.github.sds100.keymapper.common.util.firstBlocking +import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.data.repositories.PreferenceRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/common/src/main/java/io/github/sds100/keymapper/common/util/SharedPrefsDataStoreWrapper.kt b/data/src/main/java/io/github/sds100/keymapper/data/utils/SharedPrefsDataStoreWrapper.kt similarity index 58% rename from common/src/main/java/io/github/sds100/keymapper/common/util/SharedPrefsDataStoreWrapper.kt rename to data/src/main/java/io/github/sds100/keymapper/data/utils/SharedPrefsDataStoreWrapper.kt index 0b3fe6e378..18d6341db6 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/util/SharedPrefsDataStoreWrapper.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/utils/SharedPrefsDataStoreWrapper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.common.util +package io.github.sds100.keymapper.data.utils import androidx.datastore.preferences.core.booleanPreferencesKey import androidx.datastore.preferences.core.doublePreferencesKey @@ -8,13 +8,12 @@ import androidx.datastore.preferences.core.longPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey import androidx.datastore.preferences.core.stringSetPreferencesKey import androidx.preference.PreferenceDataStore -import io.github.sds100.keymapper.base.settings.ConfigSettingsUseCase +import io.github.sds100.keymapper.data.repositories.PreferenceRepository import kotlinx.coroutines.flow.first import kotlinx.coroutines.runBlocking - class SharedPrefsDataStoreWrapper( - private val configSettingsUseCase: ConfigSettingsUseCase, + private val preferenceRepository: PreferenceRepository, ) : PreferenceDataStore() { override fun getBoolean(key: String, defValue: Boolean) = getFromSharedPrefs(key, defValue) @@ -26,30 +25,28 @@ class SharedPrefsDataStoreWrapper( override fun getInt(key: String, defValue: Int) = getFromSharedPrefs(key, defValue) override fun putInt(key: String, value: Int) = setFromSharedPrefs(key, value) - override fun getStringSet(key: String, defValues: MutableSet?) = - getStringSetFromSharedPrefs(key, defValues ?: emptySet()) + override fun getStringSet(key: String, defValues: MutableSet?) = getStringSetFromSharedPrefs(key, defValues ?: emptySet()) - override fun putStringSet(key: String, defValues: MutableSet?) = - setStringSetFromSharedPrefs(key, defValues) + override fun putStringSet(key: String, defValues: MutableSet?) = setStringSetFromSharedPrefs(key, defValues) private inline fun getFromSharedPrefs(key: String, default: T): T = runBlocking { when (default) { - is String? -> configSettingsUseCase.getPreference(stringPreferencesKey(key)).first() + is String? -> preferenceRepository.get(stringPreferencesKey(key)).first() ?: default - is Boolean? -> configSettingsUseCase.getPreference(booleanPreferencesKey(key)) + is Boolean? -> preferenceRepository.get(booleanPreferencesKey(key)) .first() ?: default - is Int? -> configSettingsUseCase.getPreference(intPreferencesKey(key)).first() + is Int? -> preferenceRepository.get(intPreferencesKey(key)).first() ?: default - is Long? -> configSettingsUseCase.getPreference(longPreferencesKey(key)).first() + is Long? -> preferenceRepository.get(longPreferencesKey(key)).first() ?: default - is Float? -> configSettingsUseCase.getPreference(floatPreferencesKey(key)).first() + is Float? -> preferenceRepository.get(floatPreferencesKey(key)).first() ?: default - is Double? -> configSettingsUseCase.getPreference(doublePreferencesKey(key)).first() + is Double? -> preferenceRepository.get(doublePreferencesKey(key)).first() ?: default else -> { @@ -63,12 +60,12 @@ class SharedPrefsDataStoreWrapper( key ?: return when (value) { - is String -> configSettingsUseCase.setPreference(stringPreferencesKey(key), value) - is Boolean -> configSettingsUseCase.setPreference(booleanPreferencesKey(key), value) - is Int -> configSettingsUseCase.setPreference(intPreferencesKey(key), value) - is Long -> configSettingsUseCase.setPreference(longPreferencesKey(key), value) - is Float -> configSettingsUseCase.setPreference(floatPreferencesKey(key), value) - is Double -> configSettingsUseCase.setPreference(doublePreferencesKey(key), value) + is String -> preferenceRepository.set(stringPreferencesKey(key), value) + is Boolean -> preferenceRepository.set(booleanPreferencesKey(key), value) + is Int -> preferenceRepository.set(intPreferencesKey(key), value) + is Long -> preferenceRepository.set(longPreferencesKey(key), value) + is Float -> preferenceRepository.set(floatPreferencesKey(key), value) + is Double -> preferenceRepository.set(doublePreferencesKey(key), value) else -> { val type = value?.let { it::class.java.name } throw IllegalArgumentException("Don't know how to set a value in shared preferences for this type $type") @@ -76,14 +73,13 @@ class SharedPrefsDataStoreWrapper( } } - private fun getStringSetFromSharedPrefs(key: String, default: Set?): Set = - runBlocking { - configSettingsUseCase.getPreference(stringSetPreferencesKey(key)).first() ?: emptySet() - } + private fun getStringSetFromSharedPrefs(key: String, default: Set?): Set = runBlocking { + preferenceRepository.get(stringSetPreferencesKey(key)).first() ?: emptySet() + } private fun setStringSetFromSharedPrefs(key: String?, value: Set?) { key ?: return - configSettingsUseCase.setPreference(stringSetPreferencesKey(key), value) + preferenceRepository.set(stringSetPreferencesKey(key), value) } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4bf0332a42..96e0aca749 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -202,12 +202,8 @@ dagger-hilt-android = { id = "com.google.dagger.hilt.android", version.ref = "da [bundles] splitties = [ - "splitties-bitflags", "splitties-alertdialog-appcompat-coroutines", "splitties-alertdialog-material", - "splitties-snackbar", - "splitties-toast", - "splitties-mainthread", ] androidx-lifecycle = [ "androidx-lifecycle-viewmodel-ktx", diff --git a/mapping/.gitignore b/mapping/.gitignore deleted file mode 100644 index 42afabfd2a..0000000000 --- a/mapping/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/mapping/build.gradle.kts b/mapping/build.gradle.kts deleted file mode 100644 index a62a1fe491..0000000000 --- a/mapping/build.gradle.kts +++ /dev/null @@ -1,52 +0,0 @@ -plugins { - alias(libs.plugins.android.library) - alias(libs.plugins.kotlin.android) - alias(libs.plugins.kotlin.serialization) - alias(libs.plugins.kotlin.parcelize) - alias(libs.plugins.google.devtools.ksp) - alias(libs.plugins.jlleitschuh.gradle.ktlint) -} - -android { - namespace = "io.github.sds100.keymapper.mapping" - compileSdk = libs.versions.compile.sdk.get().toInt() - - defaultConfig { - minSdk = libs.versions.min.sdk.get().toInt() - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } - kotlinOptions { - jvmTarget = "11" - } -} - -dependencies { - implementation(project(":common")) - implementation(project(":data")) - implementation(project(":system")) - - implementation(libs.kotlinx.coroutines.android) - implementation(libs.kotlinx.serialization.json) - implementation(libs.kotson) - - implementation(libs.dagger.hilt.android) - ksp(libs.dagger.hilt.android.compiler) - - testImplementation(libs.junit) -} diff --git a/mapping/consumer-rules.pro b/mapping/consumer-rules.pro deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/mapping/proguard-rules.pro b/mapping/proguard-rules.pro deleted file mode 100644 index 481bb43481..0000000000 --- a/mapping/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/mapping/src/androidTest/java/io/github/sds100/keymapper/mapping/ExampleInstrumentedTest.kt b/mapping/src/androidTest/java/io/github/sds100/keymapper/mapping/ExampleInstrumentedTest.kt deleted file mode 100644 index 2f3ba46836..0000000000 --- a/mapping/src/androidTest/java/io/github/sds100/keymapper/mapping/ExampleInstrumentedTest.kt +++ /dev/null @@ -1,24 +0,0 @@ -package io.github.sds100.keymapper.mapping - -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.ext.junit.runners.AndroidJUnit4 - -import org.junit.Test -import org.junit.runner.RunWith - -import org.junit.Assert.* - -/** - * Instrumented test, which will execute on an Android device. - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -@RunWith(AndroidJUnit4::class) -class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("io.github.sds100.keymapper.mapping.test", appContext.packageName) - } -} \ No newline at end of file diff --git a/mapping/src/main/AndroidManifest.xml b/mapping/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e68ab..0000000000 --- a/mapping/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintMode.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintMode.kt deleted file mode 100644 index 208c5ac810..0000000000 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/constraints/ConstraintMode.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.sds100.keymapper.mapping.constraints - -enum class ConstraintMode { - AND, - OR, -} diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutModel.kt b/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutModel.kt deleted file mode 100644 index 3159aa00a1..0000000000 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/ShortcutModel.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.github.sds100.keymapper.mapping.keymaps - -import io.github.sds100.keymapper.base.util.ui.compose.ComposeIconInfo - -data class ShortcutModel( - val icon: ComposeIconInfo, - val text: String, - val data: T, -) diff --git a/mapping/src/test/java/io/github/sds100/keymapper/mapping/ExampleUnitTest.kt b/mapping/src/test/java/io/github/sds100/keymapper/mapping/ExampleUnitTest.kt deleted file mode 100644 index f91e26d3b4..0000000000 --- a/mapping/src/test/java/io/github/sds100/keymapper/mapping/ExampleUnitTest.kt +++ /dev/null @@ -1,17 +0,0 @@ -package io.github.sds100.keymapper.mapping - -import org.junit.Test - -import org.junit.Assert.* - -/** - * Example local unit test, which will execute on the development machine (host). - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -class ExampleUnitTest { - @Test - fun addition_isCorrect() { - assertEquals(4, 2 + 2) - } -} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index e62231a8cc..eb729a3931 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -30,4 +30,3 @@ include(":api") include(":system") include(":common") include(":data") -include(":mapping") diff --git a/system/build.gradle.kts b/system/build.gradle.kts index 8ae37a99f3..631c1525e4 100644 --- a/system/build.gradle.kts +++ b/system/build.gradle.kts @@ -12,8 +12,6 @@ android { compileSdk = libs.versions.compile.sdk.get().toInt() defaultConfig { - minSdk = 21 - minSdk = libs.versions.min.sdk.get().toInt() } @@ -37,7 +35,7 @@ android { dependencies { implementation(project(":common")) - implementation(project(":api")) + implementation(project(":data")) // kotlin stuff implementation(libs.kotlinx.coroutines.android) diff --git a/system/src/main/AndroidManifest.xml b/system/src/main/AndroidManifest.xml index dcfa0cf4d5..11ed17254c 100644 --- a/system/src/main/AndroidManifest.xml +++ b/system/src/main/AndroidManifest.xml @@ -2,6 +2,29 @@ + + + + + + + + + + + + + + + + + + + + + + + "Jelly Bean 4.1" + Build.VERSION_CODES.JELLY_BEAN_MR1 -> "Jelly Bean 4.2" + Build.VERSION_CODES.JELLY_BEAN_MR2 -> "Jelly Bean 4.3" + Build.VERSION_CODES.KITKAT -> "KitKat 4.4" + Build.VERSION_CODES.LOLLIPOP -> "Lollipop 5.0" + Build.VERSION_CODES.LOLLIPOP_MR1 -> "Lollipop 5.1" + Build.VERSION_CODES.M -> "Marshmallow 6.0" + Build.VERSION_CODES.N -> "Nougat 7.0" + Build.VERSION_CODES.N_MR1 -> "Nougat 7.1" + Build.VERSION_CODES.O -> "Oreo 8.0" + Build.VERSION_CODES.O_MR1 -> "Oreo 8.1" + Build.VERSION_CODES.P -> "Pie 9.0" + Build.VERSION_CODES.Q -> "10" + Build.VERSION_CODES.R -> "11" + Build.VERSION_CODES.S -> "12" + Build.VERSION_CODES.S_V2 -> "12L" + Build.VERSION_CODES.TIRAMISU -> "13" + Build.VERSION_CODES.UPSIDE_DOWN_CAKE -> "14" + Build.VERSION_CODES.VANILLA_ICE_CREAM -> "15" + else -> "API $version" + } +} \ No newline at end of file diff --git a/system/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt deleted file mode 100644 index 760787dbee..0000000000 --- a/system/src/main/java/io/github/sds100/keymapper/system/BuildUtils.kt +++ /dev/null @@ -1,50 +0,0 @@ -package io.github.sds100.keymapper.system - -import android.os.Build -import android.os.Build.VERSION_CODES.JELLY_BEAN -import android.os.Build.VERSION_CODES.JELLY_BEAN_MR1 -import android.os.Build.VERSION_CODES.JELLY_BEAN_MR2 -import android.os.Build.VERSION_CODES.KITKAT -import android.os.Build.VERSION_CODES.LOLLIPOP -import android.os.Build.VERSION_CODES.LOLLIPOP_MR1 -import android.os.Build.VERSION_CODES.M -import android.os.Build.VERSION_CODES.N -import android.os.Build.VERSION_CODES.N_MR1 -import android.os.Build.VERSION_CODES.O -import android.os.Build.VERSION_CODES.O_MR1 -import android.os.Build.VERSION_CODES.P -import android.os.Build.VERSION_CODES.Q -import android.os.Build.VERSION_CODES.R -import android.os.Build.VERSION_CODES.S -import android.os.Build.VERSION_CODES.S_V2 -import android.os.Build.VERSION_CODES.TIRAMISU -import android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE - -object BuildUtils { - /** - * @return the name of the android version for each [Build.VERSION_CODES] after the minimum api for this app. - * - * E.g 28 = "Pie 9.0" - */ - fun getSdkVersionName(version: Int): String = when (version) { - JELLY_BEAN -> "Jelly Bean 4.1" - JELLY_BEAN_MR1 -> "Jelly Bean 4.2" - JELLY_BEAN_MR2 -> "Jelly Bean 4.3" - KITKAT -> "KitKat 4.4" - LOLLIPOP -> "Lollipop 5.0" - LOLLIPOP_MR1 -> "Lollipop 5.1" - M -> "Marshmallow 6.0" - N -> "Nougat 7.0" - N_MR1 -> "Nougat 7.1" - O -> "Oreo 8.0" - O_MR1 -> "Oreo 8.1" - P -> "Pie 9.0" - Q -> "10" - R -> "11" - S -> "12" - S_V2 -> "12L" - TIRAMISU -> "13" - UPSIDE_DOWN_CAKE -> "14" - else -> "API $version" - } -} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt b/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt index 4af8bf1251..658f09489d 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.shell.ShellAdapter import java.io.IOException import java.io.InputStream diff --git a/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt b/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt index 87a3944a67..c3752210eb 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt @@ -1,41 +1,11 @@ package io.github.sds100.keymapper.system -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.Error +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider sealed class SystemError : Error() { - data class PermissionDenied(val permission: Permission) : Error() { - companion object { - - fun getMessageForPermission( - resourceProvider: ResourceProvider, - permission: Permission, - ): String { - val resId = when (permission) { - Permission.WRITE_SETTINGS -> R.string.error_action_requires_write_settings_permission - Permission.CAMERA -> R.string.error_action_requires_camera_permission - Permission.DEVICE_ADMIN -> R.string.error_need_to_enable_device_admin - Permission.READ_PHONE_STATE -> R.string.error_action_requires_read_phone_state_permission - Permission.ACCESS_NOTIFICATION_POLICY -> R.string.error_action_notification_policy_permission - Permission.WRITE_SECURE_SETTINGS -> R.string.error_need_write_secure_settings_permission - Permission.NOTIFICATION_LISTENER -> R.string.error_denied_notification_listener_service_permission - Permission.CALL_PHONE -> R.string.error_denied_call_phone_permission - Permission.ROOT -> R.string.error_requires_root - Permission.IGNORE_BATTERY_OPTIMISATION -> R.string.error_battery_optimisation_enabled - Permission.SHIZUKU -> R.string.error_shizuku_permission_denied - Permission.ACCESS_FINE_LOCATION -> R.string.error_access_fine_location_permission_denied - Permission.ANSWER_PHONE_CALL -> R.string.error_answer_end_phone_call_permission_denied - Permission.FIND_NEARBY_DEVICES -> R.string.error_find_nearby_devices_permission_denied - Permission.POST_NOTIFICATIONS -> R.string.error_notifications_permission_denied - } - - return resourceProvider.getString(resId) - } - } - } - + data class PermissionDenied(val permission: Permission) : Error() data class ImeDisabled(val ime: ImeInfo) : Error() } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt b/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt index 7a849c8c30..40edaa2bba 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt @@ -1,13 +1,9 @@ package io.github.sds100.keymapper.system -import android.content.Context import dagger.Binds import dagger.Module -import dagger.Provides import dagger.hilt.InstallIn -import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.airplanemode.AndroidAirplaneModeAdapter import io.github.sds100.keymapper.system.airplanemode.AirplaneModeAdapter import io.github.sds100.keymapper.system.apps.AndroidAppShortcutAdapter @@ -59,7 +55,6 @@ import io.github.sds100.keymapper.system.vibrator.AndroidVibratorAdapter import io.github.sds100.keymapper.system.vibrator.VibratorAdapter import io.github.sds100.keymapper.system.volume.AndroidVolumeAdapter import io.github.sds100.keymapper.system.volume.VolumeAdapter -import kotlinx.coroutines.CoroutineScope import javax.inject.Singleton @Module diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceUtils.kt new file mode 100644 index 0000000000..3ebbeafb8f --- /dev/null +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceUtils.kt @@ -0,0 +1,316 @@ +package io.github.sds100.keymapper.system.accessibility + +import android.accessibilityservice.AccessibilityService +import android.accessibilityservice.AccessibilityService.SHOW_MODE_AUTO +import android.accessibilityservice.AccessibilityService.SHOW_MODE_HIDDEN +import android.accessibilityservice.GestureDescription +import android.accessibilityservice.GestureDescription.StrokeDescription +import android.annotation.SuppressLint +import android.graphics.Path +import android.graphics.Point +import android.os.Build +import android.view.accessibility.AccessibilityNodeInfo +import androidx.core.os.bundleOf +import io.github.sds100.keymapper.common.utils.InputEventType +import io.github.sds100.keymapper.common.utils.MathUtils +import io.github.sds100.keymapper.common.utils.PinchScreenType +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success + +fun AccessibilityService.performActionOnNode( + findNode: (node: AccessibilityNodeModel) -> Boolean, + performAction: (node: AccessibilityNodeModel) -> AccessibilityNodeAction?, +): Result<*> { + val node = rootInActiveWindow.findNodeRecursively { + findNode(it.toModel()) + } + + if (node == null) { + return Error.FailedToFindAccessibilityNode + } + + val (action, extras) = performAction(node.toModel()) ?: return Success(Unit) + + node.performAction(action, bundleOf(*extras.toList().toTypedArray())) + node.recycle() + + return Success(Unit) +} + +fun AccessibilityService.hideKeyboard() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + softKeyboardController.showMode = SHOW_MODE_HIDDEN + } +} + +fun AccessibilityService.showKeyboard() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + softKeyboardController.showMode = SHOW_MODE_AUTO + } +} + +fun AccessibilityService.switchIme(imeId: String) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + softKeyboardController.switchToInputMethod(imeId) + } +} + +fun AccessibilityService.doGlobalAction(action: Int): Result<*> { + val success = performGlobalAction(action) + + if (success) { + return Success(Unit) + } else { + return Error.FailedToPerformAccessibilityGlobalAction(action) + } +} + +fun AccessibilityService.findFocussedNode(focus: Int): AccessibilityNodeModel? = findFocus(focus)?.toModel() + +fun AccessibilityService.setInputMethodEnabled(imeId: String, enabled: Boolean) { + @SuppressLint("CheckResult") + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + softKeyboardController.setInputMethodEnabled(imeId, enabled) + } +} + +fun AccessibilityService.pinchScreen( + x: Int, + y: Int, + distance: Int, + pinchType: PinchScreenType, + fingerCount: Int, + duration: Int, +): Result<*> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + if (fingerCount >= GestureDescription.getMaxStrokeCount()) { + return Error.GestureStrokeCountTooHigh + } + if (duration >= GestureDescription.getMaxGestureDuration()) { + return Error.GestureDurationTooHigh + } + + val gestureBuilder = GestureDescription.Builder() + val distributedPoints: List = + MathUtils.distributePointsOnCircle(Point(x, y), distance.toFloat() / 2, fingerCount) + + for (index in distributedPoints.indices) { + val p = Path() + if (pinchType == PinchScreenType.PINCH_IN) { + p.moveTo(x.toFloat(), y.toFloat()) + p.lineTo( + distributedPoints[index].x.toFloat(), + distributedPoints[index].y.toFloat(), + ) + } else { + p.moveTo( + distributedPoints[index].x.toFloat(), + distributedPoints[index].y.toFloat(), + ) + p.lineTo(x.toFloat(), y.toFloat()) + } + + gestureBuilder.addStroke(StrokeDescription(p, 0, duration.toLong())) + } + + val success = dispatchGesture(gestureBuilder.build(), null, null) + + return if (success) { + Success(Unit) + } else { + Error.FailedToDispatchGesture + } + } + + return Error.SdkVersionTooLow(Build.VERSION_CODES.N) +} + +fun AccessibilityService.tapScreen(x: Int, y: Int, inputEventType: InputEventType): Result<*> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + val duration = 1L // ms + + val path = Path().apply { + moveTo(x.toFloat(), y.toFloat()) + } + + val strokeDescription = + when { + inputEventType == InputEventType.DOWN && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> + StrokeDescription( + path, + 0, + duration, + true, + ) + + inputEventType == InputEventType.UP && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> + StrokeDescription( + path, + 59999, + duration, + false, + ) + + else -> StrokeDescription(path, 0, duration) + } + + strokeDescription.let { + val gestureDescription = GestureDescription.Builder().apply { + addStroke(it) + }.build() + + val success = dispatchGesture(gestureDescription, null, null) + + return if (success) { + Success(Unit) + } else { + Error.FailedToDispatchGesture + } + } + } + + return Error.SdkVersionTooLow(Build.VERSION_CODES.N) +} + +fun AccessibilityService.swipeScreen( + xStart: Int, + yStart: Int, + xEnd: Int, + yEnd: Int, + fingerCount: Int, + duration: Int, +): Result<*> { + // virtual distance between fingers on multitouch gestures + val fingerGestureDistance = 10L + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + if (fingerCount >= GestureDescription.getMaxStrokeCount()) { + return Error.GestureStrokeCountTooHigh + } + if (duration >= GestureDescription.getMaxGestureDuration()) { + return Error.GestureDurationTooHigh + } + + val pStart = Point(xStart, yStart) + val pEnd = Point(xEnd, yEnd) + + val gestureBuilder = GestureDescription.Builder() + + if (fingerCount == 1) { + val p = Path() + p.moveTo(pStart.x.toFloat(), pStart.y.toFloat()) + p.lineTo(pEnd.x.toFloat(), pEnd.y.toFloat()) + gestureBuilder.addStroke(StrokeDescription(p, 0, duration.toLong())) + } else { + // segments between fingers + val segmentCount = fingerCount - 1 + // the line of the perpendicular line which will be created to place the virtual fingers on it + val perpendicularLineLength = (fingerGestureDistance * fingerCount).toInt() + + // the length of each segment between fingers + val segmentLength = perpendicularLineLength / segmentCount + // perpendicular line of the start swipe point + val perpendicularLineStart = MathUtils.getPerpendicularOfLine( + pStart, + pEnd, + perpendicularLineLength, + ) + // perpendicular line of the end swipe point + val perpendicularLineEnd = MathUtils.getPerpendicularOfLine( + pEnd, + pStart, + perpendicularLineLength, + true, + ) + + // this is the angle between start and end point to rotate all virtual fingers on the perpendicular lines in the same direction + val angle = + MathUtils.angleBetweenPoints(Point(xStart, yStart), Point(xEnd, yEnd)) - 90 + + // create the virtual fingers + for (index in 0..segmentCount) { + // offset of each finger + val fingerOffsetLength = index * segmentLength * 2 + // move the coordinates of the current virtual finger on the perpendicular line for the start coordinates + val startFingerCoordinateWithOffset = + MathUtils.movePointByDistanceAndAngle( + perpendicularLineStart.start, + fingerOffsetLength, + angle, + ) + // move the coordinates of the current virtual finger on the perpendicular line for the end coordinates + val endFingerCoordinateWithOffset = + MathUtils.movePointByDistanceAndAngle( + perpendicularLineEnd.start, + fingerOffsetLength, + angle, + ) + + // create a path for each finger, move the the coordinates on the perpendicular line and draw it to the end coordinates of the perpendicular line of the end swipe point + val p = Path() + p.moveTo( + startFingerCoordinateWithOffset.x.toFloat(), + startFingerCoordinateWithOffset.y.toFloat(), + ) + p.lineTo( + endFingerCoordinateWithOffset.x.toFloat(), + endFingerCoordinateWithOffset.y.toFloat(), + ) + + gestureBuilder.addStroke(StrokeDescription(p, 0, duration.toLong())) + } + } + + val success = dispatchGesture(gestureBuilder.build(), null, null) + + return if (success) { + Success(Unit) + } else { + Error.FailedToDispatchGesture + } + } + + return Error.SdkVersionTooLow(Build.VERSION_CODES.N) +} + +/** + * @return The node to find. Returns null if the node doesn't match the predicate + */ +fun AccessibilityNodeInfo?.findNodeRecursively( + nodeInfo: AccessibilityNodeInfo? = this, + depth: Int = 0, + predicate: (node: AccessibilityNodeInfo) -> Boolean, +): AccessibilityNodeInfo? { + if (nodeInfo == null) return null + + if (predicate(nodeInfo)) return nodeInfo + + for (i in 0 until nodeInfo.childCount) { + val node = findNodeRecursively(nodeInfo.getChild(i), depth + 1, predicate) + + if (node != null) { + return node + } + } + + return null +} + +fun AccessibilityNodeInfo.toModel(): AccessibilityNodeModel = AccessibilityNodeModel( + packageName = packageName?.toString(), + contentDescription = contentDescription?.toString(), + isFocused = isFocused, + textSelectionStart = textSelectionStart, + textSelectionEnd = textSelectionEnd, + text = text?.toString(), + isEditable = isEditable, + className = className?.toString(), + uniqueId = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + uniqueId + } else { + null + }, + viewResourceId = viewIdResourceName, + actions = actionList.map { it.id }, +) diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt deleted file mode 100644 index 5e1caf4740..0000000000 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityUtils.kt +++ /dev/null @@ -1,45 +0,0 @@ -package io.github.sds100.keymapper.system.accessibility - -import android.os.Build -import android.view.accessibility.AccessibilityNodeInfo - -/** - * @return The node to find. Returns null if the node doesn't match the predicate - */ -fun AccessibilityNodeInfo?.findNodeRecursively( - nodeInfo: AccessibilityNodeInfo? = this, - depth: Int = 0, - predicate: (node: AccessibilityNodeInfo) -> Boolean, -): AccessibilityNodeInfo? { - if (nodeInfo == null) return null - - if (predicate(nodeInfo)) return nodeInfo - - for (i in 0 until nodeInfo.childCount) { - val node = findNodeRecursively(nodeInfo.getChild(i), depth + 1, predicate) - - if (node != null) { - return node - } - } - - return null -} - -fun AccessibilityNodeInfo.toModel(): AccessibilityNodeModel = AccessibilityNodeModel( - packageName = packageName?.toString(), - contentDescription = contentDescription?.toString(), - isFocused = isFocused, - textSelectionStart = textSelectionStart, - textSelectionEnd = textSelectionEnd, - text = text?.toString(), - isEditable = isEditable, - className = className?.toString(), - uniqueId = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - uniqueId - } else { - null - }, - viewResourceId = viewIdResourceName, - actions = actionList.map { it.id }, -) diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt index dd2b9e2764..42f69699eb 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt @@ -2,6 +2,7 @@ package io.github.sds100.keymapper.system.accessibility import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter +import io.github.sds100.keymapper.system.service.ServiceAdapter import kotlinx.coroutines.flow.Flow class ControlAccessibilityServiceUseCaseImpl( diff --git a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/FingerprintGestureType.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/FingerprintGestureType.kt similarity index 64% rename from mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/FingerprintGestureType.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/FingerprintGestureType.kt index 2d4584ccfa..1b8caa56fb 100644 --- a/mapping/src/main/java/io/github/sds100/keymapper/mapping/keymaps/FingerprintGestureType.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/FingerprintGestureType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.mapping.keymaps +package io.github.sds100.keymapper.system.accessibility enum class FingerprintGestureType { SWIPE_DOWN, diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt index 23a7d0d05a..829078e1d7 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt @@ -2,9 +2,9 @@ package io.github.sds100.keymapper.system.accessibility import android.os.Build import androidx.annotation.RequiresApi -import io.github.sds100.keymapper.actions.pinchscreen.PinchScreenType -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.common.utils.PinchScreenType import kotlinx.coroutines.flow.Flow interface IAccessibilityService { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt index 168caa5bed..3c0b59ede8 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.airplanemode -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result interface AirplaneModeAdapter { fun isEnabled(): Boolean diff --git a/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt index 630bc9ee34..4e995642af 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt @@ -2,8 +2,8 @@ package io.github.sds100.keymapper.system.airplanemode import android.content.Context import android.provider.Settings -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.root.SuAdapter import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt index 0112b93657..ce92a86a96 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt @@ -14,11 +14,11 @@ import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.graphics.drawable.IconCompat import androidx.core.graphics.drawable.toBitmap import io.github.sds100.keymapper.api.LaunchKeyMapShortcutActivity -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.success -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.success +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import java.util.UUID diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt index 01ec62b15e..724157c541 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt @@ -21,11 +21,11 @@ import android.provider.MediaStore import android.provider.Settings import androidx.core.content.ContextCompat import androidx.core.content.pm.PackageInfoCompat -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.success -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.success +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt index a99b9324b0..4b5cec3707 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt @@ -4,8 +4,8 @@ import android.content.Intent import android.graphics.drawable.Drawable import android.os.Bundle import androidx.core.content.pm.ShortcutInfoCompat -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow interface AppShortcutAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt index 5476454dcf..fd887d6bad 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system.apps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.callbackFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt index e06ce9c59c..d2897e80d4 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt @@ -10,9 +10,9 @@ import android.content.IntentFilter import android.content.pm.PackageManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt index d26afba0aa..8f23c4cee2 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.bluetooth -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import kotlinx.coroutines.flow.Flow interface BluetoothAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt index 614a6aac63..d701c7edd7 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt @@ -7,9 +7,9 @@ import android.hardware.camera2.CameraManager import android.os.Build import androidx.annotation.RequiresApi import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.map diff --git a/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt index aad54543c0..ac7ac858cc 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.camera -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import kotlinx.coroutines.flow.Flow interface CameraAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt index e4b9b00375..62434da91c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt @@ -7,14 +7,14 @@ import android.hardware.input.InputManager import android.os.Handler import android.view.InputDevice import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.common.util.state.State -import io.github.sds100.keymapper.base.util.ifIsData +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.utils.ifIsData import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt index 83c78f41fd..c0567d2953 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system.devices -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.common.util.state.State +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt index 38f4b8a93c..4a21e3601b 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt @@ -9,12 +9,12 @@ import android.provider.Settings import android.view.Surface import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.SettingsUtils -import io.github.sds100.keymapper.base.util.SizeKM -import io.github.sds100.keymapper.base.util.getRealDisplaySize +import io.github.sds100.keymapper.base.utils.SizeKM +import io.github.sds100.keymapper.base.utils.getRealDisplaySize import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt index 8b74549ba7..bc4281cf57 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.display -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.base.util.SizeKM +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.base.utils.SizeKM import kotlinx.coroutines.flow.Flow interface DisplayAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt deleted file mode 100644 index b42d77c8ea..0000000000 --- a/system/src/main/java/io/github/sds100/keymapper/system/display/OrientationUtils.kt +++ /dev/null @@ -1,13 +0,0 @@ -package io.github.sds100.keymapper.system.display - -import io.github.sds100.keymapper.R - - -object OrientationUtils { - fun getLabel(orientation: Orientation) = when (orientation) { - Orientation.ORIENTATION_0 -> R.string.orientation_0 - Orientation.ORIENTATION_90 -> R.string.orientation_90 - Orientation.ORIENTATION_180 -> R.string.orientation_180 - Orientation.ORIENTATION_270 -> R.string.orientation_270 - } -} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt index fbe285db4c..62372a6439 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt @@ -11,9 +11,9 @@ import androidx.core.net.toUri import androidx.documentfile.provider.DocumentFile import com.anggrayudi.storage.file.toDocumentFile import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import net.lingala.zip4j.ZipFile diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt index 9cfa11b04a..66d0875346 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt @@ -12,9 +12,9 @@ import com.anggrayudi.storage.file.openInputStream import com.anggrayudi.storage.file.openOutputStream import com.anggrayudi.storage.file.recreateFile import com.anggrayudi.storage.media.FileDescription -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.io.File diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt index e99a88b17f..7fa90dc748 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.files -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import java.io.InputStream interface FileAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt index 96ff113731..18e86d2f57 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.files -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import java.io.File import java.io.InputStream import java.io.OutputStream diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt index 3ac5465379..306f8bdbfa 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt @@ -14,23 +14,23 @@ import android.view.inputmethod.InputMethodManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess -import io.github.sds100.keymapper.common.util.result.otherwise -import io.github.sds100.keymapper.common.util.result.then -import io.github.sds100.keymapper.common.util.result.valueOrNull +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.common.utils.otherwise +import io.github.sds100.keymapper.common.utils.then +import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter +import io.github.sds100.keymapper.system.service.ServiceAdapter import io.github.sds100.keymapper.system.accessibility.ServiceState import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.base.utils.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt index e0c53962fb..17e14de351 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt @@ -9,7 +9,7 @@ import android.view.KeyEvent import io.github.sds100.keymapper.api.KeyEventRelayService import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapper import io.github.sds100.keymapper.system.inputevents.InputEventInjector -import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.base.utils.InputEventType import timber.log.Timber /** diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt index 4e6611a2bb..8068606fdf 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.inputmethod import android.view.InputDevice -import io.github.sds100.keymapper.base.util.InputEventType +import io.github.sds100.keymapper.base.utils.InputEventType data class InputKeyModel( val keyCode: Int, diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt index 9a4d3ffd86..2dda7a9bf5 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.inputmethod -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt index e87d67ddd0..564a400cb9 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt @@ -1,13 +1,13 @@ package io.github.sds100.keymapper.system.inputmethod import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.onSuccess -import io.github.sds100.keymapper.common.util.result.suspendThen -import io.github.sds100.keymapper.common.util.result.then -import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.common.utils.suspendThen +import io.github.sds100.keymapper.common.utils.then +import io.github.sds100.keymapper.base.utils.firstBlocking import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt index 7435420a5a..90e8c38776 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.inputmethod -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter -import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.system.service.ServiceAdapter +import io.github.sds100.keymapper.base.utils.ServiceEvent import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.runBlocking diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt index d0c08b110a..ad5a7ea384 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.inputmethod -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt index f0d529c4b3..d68262782f 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt @@ -3,9 +3,9 @@ package io.github.sds100.keymapper.system.intents import android.content.Context import android.content.Intent import dagger.hilt.android.qualifiers.ApplicationContext -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import javax.inject.Inject import javax.inject.Singleton diff --git a/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt index 50171d2fc3..00de7b7ff2 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt @@ -10,8 +10,8 @@ import android.os.Build import androidx.annotation.RequiresApi import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update diff --git a/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt index 40abf00630..0f2374a6f2 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.lock import android.os.Build import androidx.annotation.RequiresApi -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt index 193e629076..ee7d119307 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt @@ -12,9 +12,9 @@ import android.os.Build import android.view.KeyEvent import androidx.annotation.RequiresApi import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.volume.VolumeStream import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt index a7e31c0420..032f20d5ed 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.media import android.os.Build import androidx.annotation.RequiresApi -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.system.volume.VolumeStream import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt b/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt index c66a9cc006..0374f1d213 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt @@ -2,8 +2,8 @@ package io.github.sds100.keymapper.system.navigation import android.view.KeyEvent import androidx.core.view.accessibility.AccessibilityNodeInfoCompat -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.success +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.system.accessibility.AccessibilityNodeAction import io.github.sds100.keymapper.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.system.inputevents.InputEventInjector @@ -11,8 +11,8 @@ import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.base.util.InputEventType -import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.base.utils.firstBlocking import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch diff --git a/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt index 51fb4ba1cd..773ff31161 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt @@ -9,9 +9,9 @@ import android.os.Build import android.telephony.TelephonyManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.root.SuAdapter import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt index f1577d9fdb..54a6ee3905 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.network -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt index 9120ea175c..747144fbda 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.system.nfc import android.content.Context import android.nfc.NfcManager import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.system.root.SuAdapter import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject diff --git a/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt index 2d33a6b22a..31a9c84ace 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.nfc -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result interface NfcAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt index 6942035f1a..27a2a40fe6 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt @@ -10,7 +10,7 @@ import androidx.core.app.NotificationManagerCompat import com.google.android.material.color.DynamicColors import io.github.sds100.keymapper.MainActivity import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.base.util.color +import io.github.sds100.keymapper.base.utils.color import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt index 9ea6674856..b64be0848b 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt @@ -11,7 +11,7 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry import androidx.lifecycle.lifecycleScope import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.base.utils.ServiceEvent import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import timber.log.Timber diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt index 109f3b631f..9c41efe6e4 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt @@ -11,14 +11,14 @@ import android.os.Looper import android.provider.Settings import androidx.core.app.NotificationManagerCompat import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter +import io.github.sds100.keymapper.system.service.ServiceAdapter import io.github.sds100.keymapper.system.accessibility.ServiceState import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.base.utils.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt index 0836a36846..1f0751093c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt @@ -16,20 +16,20 @@ import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat import androidx.core.content.getSystemService import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess -import io.github.sds100.keymapper.common.util.result.success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.DeviceAdmin import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter +import io.github.sds100.keymapper.system.service.ServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.base.util.getIdentifier +import io.github.sds100.keymapper.base.utils.getIdentifier import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt index 6ad616d10f..b367034d93 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt @@ -2,9 +2,9 @@ package io.github.sds100.keymapper.system.permissions import android.Manifest import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.util.result.onSuccess +import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.popup.PopupMessageAdapter -import io.github.sds100.keymapper.base.util.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt index 40c229d692..c78b9dda75 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.permissions -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt index aa31e6aa2c..c27cfde360 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt @@ -19,9 +19,9 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.DeviceAdmin -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter +import io.github.sds100.keymapper.system.service.ServiceAdapter import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.base.util.str +import io.github.sds100.keymapper.base.utils.str import rikka.shizuku.Shizuku import splitties.alertdialog.appcompat.messageResource import splitties.alertdialog.appcompat.negativeButton diff --git a/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt index aaee32972f..fa99dd4824 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt @@ -9,9 +9,9 @@ import android.telecom.TelecomManager import android.telephony.PhoneStateListener import android.telephony.TelephonyManager import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch diff --git a/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt index 66eb546930..5955480900 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.phone -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result import kotlinx.coroutines.flow.Flow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt index d5268a419a..802ec3d029 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt @@ -5,9 +5,9 @@ import android.media.Ringtone import android.media.RingtoneManager import android.os.Build import androidx.core.net.toUri -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success class AndroidRingtoneAdapter(context: Context) : RingtoneAdapter { private val ctx: Context = context.applicationContext diff --git a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt index 22149bc061..0149fc0eb3 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt @@ -1,14 +1,14 @@ package io.github.sds100.keymapper.system.root -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.Shell import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.base.util.firstBlocking +import io.github.sds100.keymapper.base.utils.firstBlocking import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/service/ServiceAdapter.kt similarity index 68% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/service/ServiceAdapter.kt index 0371aadab3..de770ed3e5 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/service/ServiceAdapter.kt @@ -1,12 +1,14 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.system.service -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.base.util.ServiceEvent +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.system.accessibility.ServiceState import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow - -interface ServiceAdapter { +/** + * [E] is the type for the events to send and receive. + */ +interface ServiceAdapter { val state: StateFlow /** @@ -30,16 +32,16 @@ interface ServiceAdapter { /** * Send an event to the service. */ - suspend fun send(event: ServiceEvent): Result<*> + suspend fun send(event: E): Result<*> /** * Send an event to the service asynchronously. This method * will return immediately and you won't be notified of whether it is sent. */ - fun sendAsync(event: ServiceEvent) + fun sendAsync(event: E) /** * A flow of events coming from the service. */ - val eventReceiver: SharedFlow + val eventReceiver: SharedFlow } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt index 218b922197..6acf64d220 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.shell -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result diff --git a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt b/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt index da4d5ec42b..a5482bb087 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt @@ -12,11 +12,11 @@ import androidx.lifecycle.lifecycleScope import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.UseCases -import io.github.sds100.keymapper.common.util.result.onFailure -import io.github.sds100.keymapper.common.util.result.onSuccess -import io.github.sds100.keymapper.base.util.getFullMessage -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.str +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.str import kotlinx.coroutines.flow.first import splitties.toast.toast diff --git a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt b/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt index a15585ea15..a1e06c1dae 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt @@ -12,9 +12,9 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.UseCases import io.github.sds100.keymapper.system.accessibility.ServiceState -import io.github.sds100.keymapper.base.util.firstBlocking -import io.github.sds100.keymapper.base.util.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.util.str +import io.github.sds100.keymapper.base.utils.firstBlocking +import io.github.sds100.keymapper.base.utils.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.str import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.combine diff --git a/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt index 52608da9b2..c649cfc587 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt @@ -4,7 +4,7 @@ import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result @Singleton class AndroidOpenUrlAdapter @Inject constructor( diff --git a/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt index c6478b4b9d..f3380f1309 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.url -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result interface OpenUrlAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt index ec09f4cc6c..708e747095 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt @@ -4,9 +4,9 @@ import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import androidx.core.net.toUri -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.success +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.success diff --git a/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt index 4d263a86bf..5b0caf1819 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt @@ -6,10 +6,10 @@ import android.media.AudioManager import android.os.Build import androidx.annotation.RequiresApi import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.util.result.Error -import io.github.sds100.keymapper.common.util.result.Result -import io.github.sds100.keymapper.common.util.result.Success -import io.github.sds100.keymapper.common.util.result.then +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt index fb01a75936..cebe0611f4 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.volume -import io.github.sds100.keymapper.common.util.result.Result +import io.github.sds100.keymapper.common.utils.Result interface VolumeAdapter { diff --git a/systemstubs/build.gradle.kts b/systemstubs/build.gradle.kts index 3e715ee3ff..0a2143212c 100644 --- a/systemstubs/build.gradle.kts +++ b/systemstubs/build.gradle.kts @@ -5,13 +5,10 @@ plugins { android { namespace = "io.github.sds100.keymapper.systemstubs" - compileSdk = 35 + compileSdk = libs.versions.compile.sdk.get().toInt() defaultConfig { - minSdk = 21 - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") + minSdk = libs.versions.min.sdk.get().toInt() } buildTypes { From d34a19d806a4234e25f44afac969b2bf930b2411 Mon Sep 17 00:00:00 2001 From: sds100 Date: Sun, 18 May 2025 11:58:05 +0200 Subject: [PATCH 19/71] #1711 WIP: refactor more files --- api/build.gradle.kts | 1 + .../sds100/keymapper/api/ApiHiltModule.kt | 15 + .../keymapper/api/KeyEventRelayService.kt | 3 - ...KeyMapShortcutActivityIntentBuilderImpl.kt | 21 + .../api/LaunchKeyMapShortcutActivity.kt | 14 +- .../api/PauseMappingsBroadcastReceiver.kt | 2 +- .../github/sds100/keymapper/KeyMapperApp.kt | 207 +--------- .../AccessibilityServiceController.kt | 2 +- .../floating/ListFloatingLayoutsUseCase.kt | 2 +- .../keymaps/detection/KeyMapController.kt | 6 +- .../trigger/ConfigTriggerViewModel.kt | 2 +- .../sds100/keymapper/base/AppHiltModule.kt | 4 +- .../sds100/keymapper/base/BaseKeyMapperApp.kt | 212 ++++++++++ .../sds100/keymapper/base/BaseMainActivity.kt | 6 +- .../keymapper/base}/BootBroadcastReceiver.kt | 5 +- .../sds100/keymapper/base/actions/Action.kt | 4 +- .../keymapper/base/actions/ActionData.kt | 4 +- .../base/actions/ActionDataEntityMapper.kt | 4 +- .../base/actions/ActionErrorSnapshot.kt | 4 +- .../keymapper/base/actions/ActionUiHelper.kt | 28 +- .../base/actions/CreateActionDelegate.kt | 17 +- .../base/actions/GetActionErrorUseCase.kt | 6 +- .../base/actions/PerformActionsUseCase.kt | 18 +- .../keymapper/base/actions/TestActionEvent.kt | 7 + .../base/actions/TestActionUseCase.kt | 4 +- .../keyevent/ChooseKeyCodeViewModel.kt | 2 +- .../keyevent/ConfigKeyEventActionViewModel.kt | 8 +- .../actions/sound/ChooseSoundFileViewModel.kt | 2 +- .../uielement/ChooseUiElementScreen.kt | 2 +- .../uielement/InteractUiElementScreen.kt | 2 +- .../uielement/InteractUiElementUseCase.kt | 6 +- .../uielement/InteractUiElementViewModel.kt | 6 +- .../keymapper/base/backup/BackupManager.kt | 8 +- .../constraints/ChooseConstraintViewModel.kt | 3 +- .../keymapper/base/constraints/Constraint.kt | 2 +- .../base/constraints/ConstraintSnapshot.kt | 4 +- .../base/constraints/ConstraintUiHelper.kt | 2 +- .../constraints/DetectConstraintsUseCase.kt | 2 +- .../base/floating/FloatingButtonData.kt | 4 +- .../base/home/ShowHomeScreenAlertsUseCase.kt | 10 +- .../keymaps/ConfigKeyMapOptionsViewModel.kt | 2 +- .../base/keymaps/ConfigKeyMapScreen.kt | 2 +- .../base/keymaps/ConfigKeyMapUseCase.kt | 7 +- .../base/keymaps/ConfigKeyMapViewModel.kt | 10 +- .../keymaps/CreateKeyMapShortcutViewModel.kt | 4 +- .../base/keymaps/DisplayKeyMapUseCase.kt | 14 +- .../sds100/keymapper/base/keymaps/KeyMap.kt | 8 +- .../base/keymaps/KeyMapListItemCreator.kt | 6 +- .../base/keymaps/KeyMapListViewModel.kt | 10 +- .../base/keymaps/ListKeyMapsUseCase.kt | 1 + .../base/keymaps/SimpleMappingController.kt | 6 +- .../base/keymaps/TriggerKeyMapEvent.kt | 7 + .../keymaps/detection/DetectKeyMapsUseCase.kt | 6 +- .../ParallelTriggerActionPerformer.kt | 8 +- .../SequenceTriggerActionPerformer.kt | 4 +- .../TriggerKeyMapFromOtherAppsController.kt | 2 +- .../base/logging/DisplayLogUseCase.kt | 1 + .../base/logging/KeyMapperLoggingTree.kt | 4 +- .../base/onboarding/OnboardingUseCase.kt | 30 +- .../RerouteKeyEventsUseCase.kt | 2 +- .../base/settings/ConfigSettingsUseCase.kt | 8 +- .../base/settings/MainSettingsFragment.kt | 2 +- .../base/shizuku/ShizukuInputEventInjector.kt | 2 +- .../comparators/KeyMapActionsComparator.kt | 4 +- .../accessibility/AccessibilityNodeAction.kt | 2 +- .../accessibility/AccessibilityNodeModel.kt | 2 +- .../AccessibilityNodeRecorder.kt | 3 +- ....kt => AccessibilityServiceAdapterImpl.kt} | 48 ++- .../AccessibilityServiceEvent.kt | 86 ---- .../AccessibilityServiceUtils.kt | 2 +- .../accessibility/BaseAccessibilityService.kt | 3 - .../BaseAccessibilityServiceController.kt | 36 +- .../ControlAccessibilityServiceUseCase.kt | 11 +- .../accessibility/FingerprintGestureType.kt | 2 +- .../accessibility/IAccessibilityService.kt | 2 +- .../RecordAccessibilityNodeEvent.kt | 15 + .../RecordAccessibilityNodeState.kt | 2 +- .../inputmethod/AutoSwitchImeController.kt | 23 +- .../inputmethod/ImeInputEventInjector.kt | 26 +- .../system/intents/ConfigIntentViewModel.kt | 4 +- .../notifications/NotificationController.kt | 12 +- .../tiles/ToggleKeyMapperKeyboardTile.kt | 45 ++- .../base}/tiles/ToggleMappingsTile.kt | 16 +- .../trigger/BaseConfigTriggerViewModel.kt | 4 +- .../base/trigger/KeyCodeTriggerKey.kt | 4 +- .../base/trigger/RecordTriggerEvent.kt | 30 ++ .../base/trigger/RecordTriggerUseCase.kt | 4 +- .../sds100/keymapper/base/trigger/Trigger.kt | 4 +- .../base/trigger/TriggerErrorSnapshot.kt | 4 +- .../sds100/keymapper/base/utils/ErrorUtils.kt | 3 +- .../keymapper/base/utils/InputEventStrings.kt | 375 ++++++++++++++++++ .../keymapper/base/utils/ui/NavDestination.kt | 8 +- .../base/utils/ui/NavigationViewModel.kt | 22 +- .../sds100/keymapper/BackupManagerTest.kt | 6 +- .../keymapper/ConfigKeyMapUseCaseTest.kt | 4 +- .../keymapper/TestDispatcherProvider.kt | 2 +- .../actions/GetActionFailedUseCaseTest.kt | 2 +- .../actions/PerformActionsUseCaseTest.kt | 4 +- ...onfigKeyServiceEventActionViewModelTest.kt | 4 +- .../keymapper/keymaps/KeyMapControllerTest.kt | 12 +- ...riggerKeyMapFromOtherAppsControllerTest.kt | 10 +- .../keymapper/util/TestConstraintSnapshot.kt | 2 +- .../keymapper/common/utils/BuildUtils.kt | 0 .../keymapper/common/utils/FlagUtils.kt | 43 ++ .../common/utils}/NodeInteractionType.kt | 2 +- .../keymapper/common/utils}/Orientation.kt | 2 +- .../sds100/keymapper/common/utils/Result.kt | 1 - data/build.gradle.kts | 1 + .../github/sds100/keymapper/data/DataError.kt | 6 + .../typeconverter/ConstantTypeConverters.kt | 2 +- .../NodeInteractionTypeSetTypeConverter.kt | 4 +- .../data/entities/AccessibilityNodeEntity.kt | 2 +- .../keymapper/data/entities/EntityExtra.kt | 4 +- .../data/migration/Migration11To12.kt | 2 +- .../keymapper/data/migration/Migration1To2.kt | 2 +- .../keymapper/data/migration/Migration2To3.kt | 2 +- .../keymapper/data/migration/Migration4To5.kt | 4 +- .../keymapper/data/migration/Migration6To7.kt | 6 +- .../data/migration/Migration9To10.kt | 6 +- .../FingerprintMapMigration0To1.kt | 6 +- .../FingerprintToKeyMapMigration.kt | 2 +- .../repositories/FloatingButtonRepository.kt | 4 +- .../repositories/FloatingLayoutRepository.kt | 4 +- .../data/repositories/GroupRepository.kt | 4 +- .../data/repositories}/KeyMapRepository.kt | 6 +- .../data/repositories}/LogRepository.kt | 5 +- .../data/repositories/RoomKeyMapRepository.kt | 7 +- .../data/repositories/RoomLogRepository.kt | 4 +- settings.gradle.kts | 1 + shizuku/.gitignore | 1 + shizuku/build.gradle.kts | 43 ++ shizuku/consumer-rules.pro | 0 shizuku/proguard-rules.pro | 21 + .../shizuku/ExampleInstrumentedTest.kt | 24 ++ shizuku/src/main/AndroidManifest.xml | 4 + .../keymapper/shizuku/ExampleUnitTest.kt | 17 + system/build.gradle.kts | 7 + system/src/main/AndroidManifest.xml | 25 +- .../keymapper/api/IKeyEventRelayService.aidl | 37 ++ .../api/IKeyEventRelayServiceCallback.aidl | 9 + .../sds100/keymapper/system/SystemError.kt | 1 - .../keymapper/system/SystemHiltModule.kt | 1 + .../AccessibilityServiceAdapter.kt} | 17 +- .../AccessibilityServiceEvent.kt | 38 ++ ...eState.kt => AccessibilityServiceState.kt} | 2 +- .../ObserveEnabledAccessibilityServicesJob.kt | 12 +- .../system/apps/AndroidAppShortcutAdapter.kt | 18 +- .../KeyMapShortcutActivityIntentBuilder.kt | 11 + .../bluetooth/BluetoothBroadcastReceiver.kt | 2 +- .../system/camera/CameraLensUtils.kt | 10 - .../system/devices/AndroidDevicesAdapter.kt | 6 +- .../system/display/AndroidDisplayAdapter.kt | 7 +- .../system/display/DisplayAdapter.kt | 3 +- .../system/files/AndroidFileAdapter.kt | 7 +- .../system/inputevents/InputEventUtils.kt | 368 +---------------- .../inputmethod/AndroidInputMethodAdapter.kt | 25 +- .../system/inputmethod/InputKeyModel.kt | 2 +- .../KeyEventRelayServiceWrapper.kt | 13 +- .../system/inputmethod/KeyMapperImeHelper.kt | 36 +- .../system/inputmethod/KeyMapperImeService.kt | 33 +- .../inputmethod/ObserveInputMethodsJob.kt | 12 +- .../inputmethod/ShowHideInputMethodUseCase.kt | 16 +- .../inputmethod/ToggleCompatibleImeUseCase.kt | 13 +- .../system/navigation/OpenMenuHelper.kt | 12 +- .../notifications/NotificationReceiver.kt | 2 +- .../NotificationReceiverAdapter.kt | 148 ++----- .../NotificationReceiverAdapterImpl.kt | 110 +++++ .../notifications/NotificationServiceEvent.kt | 13 + .../ObserveNotificationListenersJob.kt | 4 +- .../permissions/AndroidPermissionAdapter.kt | 10 +- .../permissions/RequestPermissionDelegate.kt | 6 +- .../sds100/keymapper/system/root/SuAdapter.kt | 2 +- 172 files changed, 1658 insertions(+), 1277 deletions(-) create mode 100644 api/src/main/java/io/github/sds100/keymapper/api/ApiHiltModule.kt create mode 100644 api/src/main/java/io/github/sds100/keymapper/api/KeyMapShortcutActivityIntentBuilderImpl.kt create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/BaseKeyMapperApp.kt rename {system/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base}/BootBroadcastReceiver.kt (67%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionEvent.kt create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapEvent.kt rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/accessibility/AccessibilityNodeAction.kt (61%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/accessibility/AccessibilityNodeModel.kt (90%) rename base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/{AccessibilityServiceAdapter.kt => AccessibilityServiceAdapterImpl.kt} (86%) delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceEvent.kt rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/accessibility/AccessibilityServiceUtils.kt (99%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/accessibility/ControlAccessibilityServiceUseCase.kt (75%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/accessibility/FingerprintGestureType.kt (62%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/accessibility/IAccessibilityService.kt (96%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/RecordAccessibilityNodeEvent.kt rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/accessibility/RecordAccessibilityNodeState.kt (83%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/inputmethod/ImeInputEventInjector.kt (89%) rename {system/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base}/tiles/ToggleKeyMapperKeyboardTile.kt (64%) rename {system/src/main/java/io/github/sds100/keymapper/system => base/src/main/java/io/github/sds100/keymapper/base}/tiles/ToggleMappingsTile.kt (91%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerEvent.kt create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/utils/InputEventStrings.kt rename {system => common}/src/main/java/io/github/sds100/keymapper/common/utils/BuildUtils.kt (100%) create mode 100644 common/src/main/java/io/github/sds100/keymapper/common/utils/FlagUtils.kt rename {system/src/main/java/io/github/sds100/keymapper/system/accessibility => common/src/main/java/io/github/sds100/keymapper/common/utils}/NodeInteractionType.kt (90%) rename {system/src/main/java/io/github/sds100/keymapper/system/display => common/src/main/java/io/github/sds100/keymapper/common/utils}/Orientation.kt (68%) create mode 100644 data/src/main/java/io/github/sds100/keymapper/data/DataError.kt rename {base/src/main/java/io/github/sds100/keymapper/base/keymaps => data/src/main/java/io/github/sds100/keymapper/data/repositories}/KeyMapRepository.kt (93%) rename {base/src/main/java/io/github/sds100/keymapper/base/logging => data/src/main/java/io/github/sds100/keymapper/data/repositories}/LogRepository.kt (86%) create mode 100644 shizuku/.gitignore create mode 100644 shizuku/build.gradle.kts create mode 100644 shizuku/consumer-rules.pro create mode 100644 shizuku/proguard-rules.pro create mode 100644 shizuku/src/androidTest/java/io/github/sds100/keymapper/shizuku/ExampleInstrumentedTest.kt create mode 100644 shizuku/src/main/AndroidManifest.xml create mode 100644 shizuku/src/test/java/io/github/sds100/keymapper/shizuku/ExampleUnitTest.kt create mode 100644 system/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayService.aidl create mode 100644 system/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayServiceCallback.aidl rename system/src/main/java/io/github/sds100/keymapper/system/{service/ServiceAdapter.kt => accessibility/AccessibilityServiceAdapter.kt} (69%) create mode 100644 system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceEvent.kt rename system/src/main/java/io/github/sds100/keymapper/system/accessibility/{ServiceState.kt => AccessibilityServiceState.kt} (71%) create mode 100644 system/src/main/java/io/github/sds100/keymapper/system/apps/KeyMapShortcutActivityIntentBuilder.kt delete mode 100644 system/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt rename {api/src/main/java/io/github/sds100/keymapper/api => system/src/main/java/io/github/sds100/keymapper/system/inputmethod}/KeyEventRelayServiceWrapper.kt (88%) create mode 100644 system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapterImpl.kt create mode 100644 system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationServiceEvent.kt diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 55d238004e..33c440eaf7 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -40,6 +40,7 @@ android { dependencies { implementation(project(":common")) implementation(project(":base")) + implementation(project(":system")) implementation(libs.jakewharton.timber) diff --git a/api/src/main/java/io/github/sds100/keymapper/api/ApiHiltModule.kt b/api/src/main/java/io/github/sds100/keymapper/api/ApiHiltModule.kt new file mode 100644 index 0000000000..85b27aa802 --- /dev/null +++ b/api/src/main/java/io/github/sds100/keymapper/api/ApiHiltModule.kt @@ -0,0 +1,15 @@ +package io.github.sds100.keymapper.api + +import dagger.Binds +import dagger.Module +import io.github.sds100.keymapper.system.apps.KeyMapShortcutActivityIntentBuilder + +@Module +class ApiHiltModule { + @Binds + fun bindKeyMapShortcutActivityIntentBuilder( + impl: KeyMapShortcutActivityIntentBuilderImpl, + ): KeyMapShortcutActivityIntentBuilder { + return impl + } +} diff --git a/api/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayService.kt b/api/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayService.kt index 785d3a03e9..58c49939e5 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayService.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayService.kt @@ -30,9 +30,6 @@ class KeyEventRelayService : Service() { const val ACTION_REBIND_RELAY_SERVICE = "io.github.sds100.keymapper.ACTION_REBIND_RELAY_SERVICE" - const val CALLBACK_ID_ACCESSIBILITY_SERVICE = "accessibility_service" - const val CALLBACK_ID_INPUT_METHOD = "input_method" - /** * Used when a client registers a callback without specifying an ID. */ diff --git a/api/src/main/java/io/github/sds100/keymapper/api/KeyMapShortcutActivityIntentBuilderImpl.kt b/api/src/main/java/io/github/sds100/keymapper/api/KeyMapShortcutActivityIntentBuilderImpl.kt new file mode 100644 index 0000000000..0e15df4503 --- /dev/null +++ b/api/src/main/java/io/github/sds100/keymapper/api/KeyMapShortcutActivityIntentBuilderImpl.kt @@ -0,0 +1,21 @@ +package io.github.sds100.keymapper.api + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import dagger.hilt.android.qualifiers.ApplicationContext +import io.github.sds100.keymapper.system.apps.KeyMapShortcutActivityIntentBuilder +import javax.inject.Singleton + +@Singleton +class KeyMapShortcutActivityIntentBuilderImpl( + @ApplicationContext private val ctx: Context, +) : KeyMapShortcutActivityIntentBuilder { + override fun build(intentAction: String, intentExtras: Bundle): Intent { + return Intent(ctx, LaunchKeyMapShortcutActivity::class.java).apply { + action = intentAction + + putExtras(intentExtras) + } + } +} diff --git a/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt index 4f4e03005d..ab37091543 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt @@ -6,8 +6,8 @@ import android.os.Bundle import android.widget.Toast import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.system.service.ServiceAdapter -import io.github.sds100.keymapper.system.accessibility.ServiceState +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import javax.inject.Inject // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API @@ -19,10 +19,10 @@ import javax.inject.Inject class LaunchKeyMapShortcutActivity : Activity() { @Inject - private lateinit var buildConfigProvider: BuildConfigProvider + lateinit var buildConfigProvider: BuildConfigProvider @Inject - private lateinit var accessibilityServiceAdapter: ServiceAdapter + lateinit var accessibilityServiceAdapter: AccessibilityServiceAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -30,7 +30,7 @@ class LaunchKeyMapShortcutActivity : Activity() { val accessibilityServiceState = accessibilityServiceAdapter.state.value when (accessibilityServiceState) { - ServiceState.ENABLED -> + AccessibilityServiceState.ENABLED -> if (intent.action == Api.ACTION_TRIGGER_KEYMAP_BY_UID) { Intent(Api.ACTION_TRIGGER_KEYMAP_BY_UID).apply { setPackage(buildConfigProvider.packageName) @@ -42,13 +42,13 @@ class LaunchKeyMapShortcutActivity : Activity() { } } - ServiceState.CRASHED -> Toast.makeText( + AccessibilityServiceState.CRASHED -> Toast.makeText( this, R.string.error_accessibility_service_crashed, Toast.LENGTH_SHORT, ) - ServiceState.DISABLED -> Toast.makeText( + AccessibilityServiceState.DISABLED -> Toast.makeText( this, R.string.error_accessibility_service_disabled, Toast.LENGTH_SHORT, diff --git a/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt b/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt index c180971254..8cabcafc4c 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/PauseMappingsBroadcastReceiver.kt @@ -13,7 +13,7 @@ import javax.inject.Inject class PauseMappingsBroadcastReceiver : BroadcastReceiver() { @Inject - private lateinit var useCase: PauseKeyMapsUseCase + lateinit var useCase: PauseKeyMapsUseCase override fun onReceive(context: Context?, intent: Intent?) { context ?: return diff --git a/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt b/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt index d1a4d9816d..928cc6695b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt +++ b/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt @@ -1,212 +1,9 @@ package io.github.sds100.keymapper import android.annotation.SuppressLint -import android.content.Intent -import android.os.Build -import android.os.UserManager -import android.util.Log -import androidx.appcompat.app.AppCompatDelegate -import androidx.core.content.getSystemService -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.LifecycleObserver -import androidx.lifecycle.OnLifecycleEvent -import androidx.lifecycle.ProcessLifecycleOwner -import androidx.multidex.MultiDexApplication import dagger.hilt.android.HiltAndroidApp -import io.github.sds100.keymapper.base.logging.KeyMapperLoggingTree -import io.github.sds100.keymapper.base.settings.ThemeUtils -import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.data.repositories.SettingsPreferenceRepository -import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapter -import io.github.sds100.keymapper.system.apps.AndroidPackageManagerAdapter -import io.github.sds100.keymapper.system.devices.AndroidDevicesAdapter -import io.github.sds100.keymapper.base.system.inputmethod.AutoSwitchImeController -import io.github.sds100.keymapper.system.inputmethod.ShowHideInputMethodUseCaseImpl -import io.github.sds100.keymapper.system.notifications.AndroidNotificationAdapter -import io.github.sds100.keymapper.base.system.notifications.ManageNotificationsUseCaseImpl -import io.github.sds100.keymapper.base.system.notifications.NotificationController -import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter -import io.github.sds100.keymapper.system.permissions.AutoGrantPermissionController -import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.system.root.SuAdapterImpl -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.flow.launchIn -import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.onEach -import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking -import splitties.toast.toast -import timber.log.Timber -import java.util.Calendar -import javax.inject.Inject +import io.github.sds100.keymapper.base.BaseKeyMapperApp @SuppressLint("LogNotTimber") @HiltAndroidApp -class KeyMapperApp : MultiDexApplication() { - private val tag = KeyMapperApp::class.simpleName - - @Inject - private lateinit var appCoroutineScope: CoroutineScope - - @Inject - private lateinit var notificationAdapter: AndroidNotificationAdapter - - lateinit var notificationController: NotificationController - lateinit var autoSwitchImeController: AutoSwitchImeController - - @Inject - private lateinit var packageManagerAdapter: AndroidPackageManagerAdapter - - @Inject - private lateinit var devicesAdapter: AndroidDevicesAdapter - - @Inject - private lateinit var permissionAdapter: AndroidPermissionAdapter - - @Inject - private lateinit var accessibilityServiceAdapter: AccessibilityServiceAdapter - - @Inject - private lateinit var suAdapter: SuAdapterImpl - - @Inject - private lateinit var autoGrantPermissionController: AutoGrantPermissionController - - @Inject - private lateinit var loggingTree: KeyMapperLoggingTree - - @Inject - private lateinit var settingsRepository: SettingsPreferenceRepository - - private val processLifecycleOwner by lazy { ProcessLifecycleOwner.get() } - - private val userManager: UserManager? by lazy { getSystemService() } - - private val initLock: Any = Any() - private var initialized = false - - override fun onCreate() { - val priorExceptionHandler = Thread.getDefaultUncaughtExceptionHandler() - - Log.i(tag, "KeyMapperApp: OnCreate") - - Thread.setDefaultUncaughtExceptionHandler { thread, exception -> - // log in a blocking manner and always log regardless of whether the setting is turned on - val entry = io.github.sds100.keymapper.data.entities.LogEntryEntity( - id = 0, - time = Calendar.getInstance().timeInMillis, - severity = io.github.sds100.keymapper.data.entities.LogEntryEntity.SEVERITY_ERROR, - message = exception.stackTraceToString(), - ) - - runBlocking { - ServiceLocator.logRepository(this@KeyMapperApp).insertSuspend(entry) - } - - priorExceptionHandler?.uncaughtException(thread, exception) - } - - super.onCreate() - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && userManager?.isUserUnlocked == false) { - Log.i(tag, "KeyMapperApp: Delay init because locked.") - // If the device is still encrypted and locked do not initialize anything that - // may potentially need the encrypted app storage like databases. - return - } - - synchronized(initLock) { - init() - initialized = true - } - } - - fun onBootUnlocked() { - synchronized(initLock) { - if (!initialized) { - init() - } - initialized = true - } - } - - private fun init() { - Log.i(tag, "KeyMapperApp: Init") - - settingsRepository.get(Keys.darkTheme) - .map { it?.toIntOrNull() } - .map { - when (it) { - ThemeUtils.DARK -> AppCompatDelegate.MODE_NIGHT_YES - ThemeUtils.LIGHT -> AppCompatDelegate.MODE_NIGHT_NO - else -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM - } - } - .onEach { mode -> AppCompatDelegate.setDefaultNightMode(mode) } - .launchIn(appCoroutineScope) - - if (BuildConfig.BUILD_TYPE == "debug" || BuildConfig.BUILD_TYPE == "debug_release") { - Timber.plant(Timber.DebugTree()) - } - - Timber.plant(loggingTree) - - notificationController = NotificationController( - appCoroutineScope, - ManageNotificationsUseCaseImpl( - ServiceLocator.settingsRepository(this), - notificationAdapter, - suAdapter, - permissionAdapter, - ), - UseCases.pauseKeyMaps(this), - UseCases.showImePicker(this), - UseCases.controlAccessibilityService(this), - UseCases.toggleCompatibleIme(this), - ShowHideInputMethodUseCaseImpl(ServiceLocator.accessibilityServiceAdapter(this)), - UseCases.onboarding(this), - ServiceLocator.resourceProvider(this), - ) - - autoSwitchImeController = AutoSwitchImeController( - appCoroutineScope, - ServiceLocator.settingsRepository(this), - ServiceLocator.inputMethodAdapter(this), - UseCases.pauseKeyMaps(this), - devicesAdapter, - popupMessageAdapter, - resourceProvider, - ServiceLocator.accessibilityServiceAdapter(this), - ) - - processLifecycleOwner.lifecycle.addObserver(object : LifecycleObserver { - @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) - fun onResume() { - // when the user returns to the app let everything know that the permissions could have changed - notificationController.onOpenApp() - - if (BuildConfig.DEBUG && permissionAdapter.isGranted(Permission.WRITE_SECURE_SETTINGS)) { - accessibilityServiceAdapter.start() - } - } - }) - - appCoroutineScope.launch { - notificationController.openApp.collectLatest { intentAction -> - Intent(this@KeyMapperApp, MainActivity::class.java).apply { - action = intentAction - flags = Intent.FLAG_ACTIVITY_NEW_TASK - - startActivity(this) - } - } - } - - notificationController.showToast.onEach { - toast(it) - }.launchIn(appCoroutineScope) - - autoGrantPermissionController.start() - } -} +class KeyMapperApp : BaseKeyMapperApp() diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt index 9aa8c1ba66..71b4de8e9d 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.accessibility -import io.github.sds100.keymapper.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository diff --git a/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt b/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt index 5a1a8786de..b5fc9079a4 100644 --- a/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt +++ b/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.floating import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.purchasing.PurchasingManager +import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.system.accessibility.ServiceAdapter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf diff --git a/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt b/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt index d1b576b13c..ec02a00f50 100644 --- a/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt +++ b/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt @@ -4,9 +4,9 @@ import android.view.KeyEvent import androidx.collection.SparseArrayCompat import androidx.collection.keyIterator import androidx.collection.valueIterator -import io.github.sds100.keymapper.actions.Action -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.actions.Action +import io.github.sds100.keymapper.base.actions.ActionData +import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.constraints.ConstraintSnapshot import io.github.sds100.keymapper.constraints.ConstraintState import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase diff --git a/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt b/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt index 84879716e2..a876875220 100644 --- a/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt +++ b/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt @@ -5,7 +5,7 @@ import io.github.sds100.keymapper.base.keymaps.CreateKeyMapShortcutUseCase import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.onboarding.OnboardingUseCase -import io.github.sds100.keymapper.purchasing.PurchasingManager +import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt index 828aec0b9a..30cb2cbe0a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt @@ -4,8 +4,8 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import io.github.sds100.keymapper.base.utils.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.common.BuildConfigProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseKeyMapperApp.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseKeyMapperApp.kt new file mode 100644 index 0000000000..7814ee2390 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseKeyMapperApp.kt @@ -0,0 +1,212 @@ +package io.github.sds100.keymapper.base + +import android.annotation.SuppressLint +import android.content.Intent +import android.os.Build +import android.os.UserManager +import android.util.Log +import androidx.appcompat.app.AppCompatDelegate +import androidx.core.content.getSystemService +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleObserver +import androidx.lifecycle.OnLifecycleEvent +import androidx.lifecycle.ProcessLifecycleOwner +import androidx.multidex.MultiDexApplication +import dagger.hilt.android.HiltAndroidApp +import io.github.sds100.keymapper.base.logging.KeyMapperLoggingTree +import io.github.sds100.keymapper.base.settings.ThemeUtils +import io.github.sds100.keymapper.data.Keys +import io.github.sds100.keymapper.data.repositories.SettingsPreferenceRepository +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapterImpl +import io.github.sds100.keymapper.system.apps.AndroidPackageManagerAdapter +import io.github.sds100.keymapper.system.devices.AndroidDevicesAdapter +import io.github.sds100.keymapper.base.system.inputmethod.AutoSwitchImeController +import io.github.sds100.keymapper.system.inputmethod.ShowHideInputMethodUseCaseImpl +import io.github.sds100.keymapper.system.notifications.AndroidNotificationAdapter +import io.github.sds100.keymapper.base.system.notifications.ManageNotificationsUseCaseImpl +import io.github.sds100.keymapper.base.system.notifications.NotificationController +import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter +import io.github.sds100.keymapper.system.permissions.AutoGrantPermissionController +import io.github.sds100.keymapper.system.permissions.Permission +import io.github.sds100.keymapper.system.root.SuAdapterImpl +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking +import splitties.toast.toast +import timber.log.Timber +import java.util.Calendar +import javax.inject.Inject + +@SuppressLint("LogNotTimber") +@HiltAndroidApp +abstract class BaseKeyMapperApp : MultiDexApplication() { + private val tag = BaseKeyMapperApp::class.simpleName + + @Inject + lateinit var appCoroutineScope: CoroutineScope + + @Inject + lateinit var notificationAdapter: AndroidNotificationAdapter + + lateinit var notificationController: NotificationController + lateinit var autoSwitchImeController: AutoSwitchImeController + + @Inject + lateinit var packageManagerAdapter: AndroidPackageManagerAdapter + + @Inject + lateinit var devicesAdapter: AndroidDevicesAdapter + + @Inject + lateinit var permissionAdapter: AndroidPermissionAdapter + + @Inject + lateinit var accessibilityServiceAdapter: AccessibilityServiceAdapterImpl + + @Inject + lateinit var suAdapter: SuAdapterImpl + + @Inject + lateinit var autoGrantPermissionController: AutoGrantPermissionController + + @Inject + lateinit var loggingTree: KeyMapperLoggingTree + + @Inject + lateinit var settingsRepository: SettingsPreferenceRepository + + private val processLifecycleOwner by lazy { ProcessLifecycleOwner.get() } + + private val userManager: UserManager? by lazy { getSystemService() } + + private val initLock: Any = Any() + private var initialized = false + + override fun onCreate() { + val priorExceptionHandler = Thread.getDefaultUncaughtExceptionHandler() + + Log.i(tag, "KeyMapperApp: OnCreate") + + Thread.setDefaultUncaughtExceptionHandler { thread, exception -> + // log in a blocking manner and always log regardless of whether the setting is turned on + val entry = io.github.sds100.keymapper.data.entities.LogEntryEntity( + id = 0, + time = Calendar.getInstance().timeInMillis, + severity = io.github.sds100.keymapper.data.entities.LogEntryEntity.SEVERITY_ERROR, + message = exception.stackTraceToString(), + ) + + runBlocking { + ServiceLocator.logRepository(this@BaseKeyMapperApp).insertSuspend(entry) + } + + priorExceptionHandler?.uncaughtException(thread, exception) + } + + super.onCreate() + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && userManager?.isUserUnlocked == false) { + Log.i(tag, "KeyMapperApp: Delay init because locked.") + // If the device is still encrypted and locked do not initialize anything that + // may potentially need the encrypted app storage like databases. + return + } + + synchronized(initLock) { + init() + initialized = true + } + } + + fun onBootUnlocked() { + synchronized(initLock) { + if (!initialized) { + init() + } + initialized = true + } + } + + private fun init() { + Log.i(tag, "KeyMapperApp: Init") + + settingsRepository.get(Keys.darkTheme) + .map { it?.toIntOrNull() } + .map { + when (it) { + ThemeUtils.DARK -> AppCompatDelegate.MODE_NIGHT_YES + ThemeUtils.LIGHT -> AppCompatDelegate.MODE_NIGHT_NO + else -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM + } + } + .onEach { mode -> AppCompatDelegate.setDefaultNightMode(mode) } + .launchIn(appCoroutineScope) + + if (BuildConfig.BUILD_TYPE == "debug" || BuildConfig.BUILD_TYPE == "debug_release") { + Timber.plant(Timber.DebugTree()) + } + + Timber.plant(loggingTree) + + notificationController = NotificationController( + appCoroutineScope, + ManageNotificationsUseCaseImpl( + ServiceLocator.settingsRepository(this), + notificationAdapter, + suAdapter, + permissionAdapter, + ), + UseCases.pauseKeyMaps(this), + UseCases.showImePicker(this), + UseCases.controlAccessibilityService(this), + UseCases.toggleCompatibleIme(this), + ShowHideInputMethodUseCaseImpl(ServiceLocator.accessibilityServiceAdapter(this)), + UseCases.onboarding(this), + ServiceLocator.resourceProvider(this), + ) + + autoSwitchImeController = AutoSwitchImeController( + appCoroutineScope, + ServiceLocator.settingsRepository(this), + ServiceLocator.inputMethodAdapter(this), + UseCases.pauseKeyMaps(this), + devicesAdapter, + popupMessageAdapter, + resourceProvider, + ServiceLocator.accessibilityServiceAdapter(this), + ) + + processLifecycleOwner.lifecycle.addObserver(object : LifecycleObserver { + @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) + fun onResume() { + // when the user returns to the app let everything know that the permissions could have changed + notificationController.onOpenApp() + + if (BuildConfig.DEBUG && permissionAdapter.isGranted(Permission.WRITE_SECURE_SETTINGS)) { + accessibilityServiceAdapter.start() + } + } + }) + + appCoroutineScope.launch { + notificationController.openApp.collectLatest { intentAction -> + Intent(this@BaseKeyMapperApp, MainActivity::class.java).apply { + action = intentAction + flags = Intent.FLAG_ACTIVITY_NEW_TASK + + startActivity(this) + } + } + } + + notificationController.showToast.onEach { + toast(it) + }.launchIn(appCoroutineScope) + + autoGrantPermissionController.start() + } +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt index 3c88458e08..2cb8bfa399 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt @@ -29,7 +29,7 @@ import com.anggrayudi.storage.extension.toDocumentFile import io.github.sds100.keymapper.Constants.PACKAGE_NAME import io.github.sds100.keymapper.compose.ComposeColors import io.github.sds100.keymapper.databinding.ActivityMainBinding -import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapterImpl import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter @@ -60,7 +60,7 @@ abstract class BaseMainActivity : AppCompatActivity() { ServiceLocator.permissionAdapter(this) } - val serviceAdapter: AccessibilityServiceAdapter by lazy { + val serviceAdapter: AccessibilityServiceAdapterImpl by lazy { ServiceLocator.accessibilityServiceAdapter(this) } @@ -177,7 +177,7 @@ abstract class BaseMainActivity : AppCompatActivity() { // This is checked here and not in KeyMapperApp's lifecycle observer because // the activities have not necessarily resumed at that point. permissionAdapter.onPermissionsChanged() - serviceAdapter.updateWhetherServiceIsEnabled() + serviceAdapter.updateServiceState() } override fun onDestroy() { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/BootBroadcastReceiver.kt b/base/src/main/java/io/github/sds100/keymapper/base/BootBroadcastReceiver.kt similarity index 67% rename from system/src/main/java/io/github/sds100/keymapper/system/BootBroadcastReceiver.kt rename to base/src/main/java/io/github/sds100/keymapper/base/BootBroadcastReceiver.kt index 4f3afb56fc..247b5282bc 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/BootBroadcastReceiver.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BootBroadcastReceiver.kt @@ -1,16 +1,15 @@ -package io.github.sds100.keymapper.system +package io.github.sds100.keymapper.base import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import io.github.sds100.keymapper.KeyMapperApp class BootBroadcastReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { context ?: return if (intent?.action == Intent.ACTION_LOCKED_BOOT_COMPLETED) { - (context.applicationContext as? KeyMapperApp)?.onBootUnlocked() + (context.applicationContext as? BaseKeyMapperApp)?.onBootUnlocked() } } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt index efbbd47824..c848415d30 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt @@ -8,8 +8,8 @@ import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData import io.github.sds100.keymapper.base.keymaps.KeyMap import kotlinx.serialization.Serializable -import splitties.bitflags.hasFlag -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.withFlag import java.util.UUID @Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt index 979edfb60f..ef2ddd5384 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.actions -import io.github.sds100.keymapper.system.accessibility.NodeInteractionType +import io.github.sds100.keymapper.common.utils.NodeInteractionType import io.github.sds100.keymapper.common.utils.PinchScreenType import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.system.display.Orientation +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.system.intents.IntentExtraModel import io.github.sds100.keymapper.system.intents.IntentTarget import io.github.sds100.keymapper.system.network.HttpMethod diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt index 3f2a048967..44b6469c92 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.actions import androidx.core.net.toUri -import io.github.sds100.keymapper.actions.uielement.NodeInteractionType +import io.github.sds100.keymapper.base.actions.uielement.NodeInteractionType import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success @@ -23,7 +23,7 @@ import io.github.sds100.keymapper.system.volume.VolumeStream import io.github.sds100.keymapper.base.utils.getKey import io.github.sds100.keymapper.common.utils.PinchScreenType import kotlinx.serialization.json.Json -import splitties.bitflags.hasFlag +import io.github.sds100.keymapper.common.utils.hasFlag object ActionDataEntityMapper { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt index be9881e751..1cbad4cccd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt @@ -1,10 +1,10 @@ package io.github.sds100.keymapper.base.actions -import io.github.sds100.keymapper.actions.sound.SoundsManager +import io.github.sds100.keymapper.base.actions.sound.SoundsManager import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.base.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt index d30ff45bb3..d44352ca10 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt @@ -4,24 +4,24 @@ import android.os.Build import android.view.KeyEvent import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Android -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.utils.handle +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.keymaps.KeyMap +import io.github.sds100.keymapper.base.utils.InputEventStrings +import io.github.sds100.keymapper.base.utils.ui.IconInfo +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.TintType +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.common.utils.Orientation +import io.github.sds100.keymapper.common.utils.PinchScreenType +import io.github.sds100.keymapper.common.utils.handle +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.toPercentString import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.devices.InputDeviceUtils -import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.intents.IntentTarget import io.github.sds100.keymapper.system.volume.DndModeUtils import io.github.sds100.keymapper.system.volume.RingerModeUtils import io.github.sds100.keymapper.system.volume.VolumeStreamUtils -import io.github.sds100.keymapper.base.utils.toPercentString -import io.github.sds100.keymapper.base.utils.ui.IconInfo -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.TintType -import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.common.utils.PinchScreenType -import io.github.sds100.keymapper.system.display.Orientation -import splitties.bitflags.hasFlag class ActionUiHelper( displayActionUseCase: DisplayActionUseCase, @@ -50,9 +50,9 @@ class ActionUiHelper( getString(R.string.description_keyevent_through_shell, keyCodeString) } else { val metaStateString = buildString { - InputEventUtils.MODIFIER_LABELS.entries.forEach { - val modifier = it.key - val labelRes = it.value + for (label in InputEventStrings.MODIFIER_LABELS.entries) { + val modifier = label.key + val labelRes = label.value if (action.metaState.hasFlag(modifier)) { append("${getString(labelRes)} + ") diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index 9e896dfe48..81fde15c30 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -5,12 +5,12 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.actions.pinchscreen.PinchPickCoordinateResult -import io.github.sds100.keymapper.actions.swipescreen.SwipePickCoordinateResult -import io.github.sds100.keymapper.actions.tapscreen.PickCoordinateResult +import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickCoordinateResult +import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickCoordinateResult +import io.github.sds100.keymapper.base.actions.tapscreen.PickCoordinateResult +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.system.camera.CameraLensUtils -import io.github.sds100.keymapper.system.display.Orientation +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.base.ui.intents.ConfigIntentResult import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.system.volume.DndMode @@ -447,8 +447,11 @@ class CreateActionDelegate( ActionId.DISABLE_FLASHLIGHT, -> { - val items = useCase.getFlashlightLenses().map { - it to getString(CameraLensUtils.getLabel(it)) + val items = useCase.getFlashlightLenses().map {lens -> + when (lens) { + CameraLens.FRONT -> R.string.lens_front + CameraLens.BACK -> R.string.lens_back + } } if (items.size == 1) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt index 755b66f203..0e74ff3d25 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt @@ -1,14 +1,14 @@ package io.github.sds100.keymapper.base.actions -import io.github.sds100.keymapper.actions.sound.SoundsManager -import io.github.sds100.keymapper.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.base.actions.sound.SoundsManager +import io.github.sds100.keymapper.base.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter -import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.base.shizuku.ShizukuAdapter import io.github.sds100.keymapper.base.utils.SoundsManager import javax.inject.Inject import javax.inject.Singleton diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt index d6c96d4805..a6df171dd6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt @@ -6,7 +6,7 @@ import android.view.InputDevice import android.view.KeyEvent import android.view.accessibility.AccessibilityNodeInfo import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.actions.sound.SoundsManager +import io.github.sds100.keymapper.base.actions.sound.SoundsManager import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success @@ -17,9 +17,9 @@ import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.system.accessibility.AccessibilityNodeAction -import io.github.sds100.keymapper.system.accessibility.AccessibilityNodeModel -import io.github.sds100.keymapper.system.accessibility.IAccessibilityService +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeAction +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeModel +import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.system.airplanemode.AirplaneModeAdapter import io.github.sds100.keymapper.system.apps.AppShortcutAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter @@ -27,7 +27,7 @@ import io.github.sds100.keymapper.system.bluetooth.BluetoothAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.display.DisplayAdapter -import io.github.sds100.keymapper.system.display.Orientation +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils @@ -65,12 +65,12 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.withFlag import timber.log.Timber import io.github.sds100.keymapper.system.Shell import io.github.sds100.keymapper.system.audio.AudioAdapter -import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjectorImpl -import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapter +import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjectorImpl +import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapterImpl import io.github.sds100.keymapper.base.utils.SettingsRepository import javax.inject.Inject import javax.inject.Singleton @@ -106,7 +106,7 @@ class PerformActionsUseCaseImpl @Inject constructor( private val settingsRepository: SettingsRepository, private val soundsManager: SoundsManager, private val permissionAdapter: PermissionAdapter, - private val notificationReceiverAdapter: NotificationReceiverAdapter, + private val notificationReceiverAdapter: NotificationReceiverAdapterImpl, private val ringtoneAdapter: RingtoneAdapter ) : PerformActionsUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionEvent.kt new file mode 100644 index 0000000000..f6e061950d --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionEvent.kt @@ -0,0 +1,7 @@ +package io.github.sds100.keymapper.base.actions + +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent +import kotlinx.serialization.Serializable + +@Serializable +data class TestActionEvent(val action: ActionData) : AccessibilityServiceEvent() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt index 6114438e5b..907d592882 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt @@ -1,13 +1,13 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.common.utils.Result -import io.github.sds100.keymapper.system.service.ServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.base.utils.ServiceEvent class TestActionUseCaseImpl( - private val serviceAdapter: ServiceAdapter, + private val serviceAdapter: AccessibilityServiceAdapter, ) : TestActionUseCase { override suspend fun invoke(action: ActionData): Result<*> = serviceAdapter.send(ServiceEvent.TestAction(action)) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt index 9b74f85e45..fa4dbabe5a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -4,7 +4,7 @@ import android.view.KeyEvent import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.actions.ActionData +import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.base.utils.filterByQuery diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt index c9a60d2bd1..0c837aed9b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.actions.ActionData +import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success @@ -34,9 +34,9 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -import splitties.bitflags.hasFlag -import splitties.bitflags.minusFlag -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.minusFlag +import io.github.sds100.keymapper.common.utils.withFlag import javax.inject.Inject @HiltViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt index 6ca2db0073..ddd6c8cfef 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt @@ -4,7 +4,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.actions.ActionData +import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.common.utils.valueOrNull diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt index 3404c32de5..3e8945b201 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt @@ -56,7 +56,7 @@ import io.github.sds100.keymapper.base.utils.ui.compose.CheckBoxText import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperDropdownMenu import io.github.sds100.keymapper.base.utils.ui.compose.SearchAppBarActions import io.github.sds100.keymapper.base.utils.ui.compose.WindowSizeClassExt.compareTo -import io.github.sds100.keymapper.system.accessibility.NodeInteractionType +import io.github.sds100.keymapper.common.utils.NodeInteractionType @Composable fun ChooseElementScreen( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt index f497097bd6..a478615b5f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt @@ -82,7 +82,7 @@ import io.github.sds100.keymapper.base.utils.ui.compose.WindowSizeClassExt.compa import io.github.sds100.keymapper.base.utils.ui.compose.icons.AdGroup import io.github.sds100.keymapper.base.utils.ui.compose.icons.JumpToElement import io.github.sds100.keymapper.base.utils.ui.compose.icons.KeyMapperIcons -import io.github.sds100.keymapper.system.accessibility.NodeInteractionType +import io.github.sds100.keymapper.common.utils.NodeInteractionType import kotlinx.coroutines.flow.update private const val DEST_LANDING = "landing" diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt index c8784bc92c..b693755c97 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt @@ -5,8 +5,8 @@ import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository -import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState -import io.github.sds100.keymapper.system.service.ServiceAdapter +import io.github.sds100.keymapper.base.system.accessibility.RecordAccessibilityNodeState +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.base.utils.ServiceEvent import io.github.sds100.keymapper.common.utils.State @@ -23,7 +23,7 @@ import kotlinx.coroutines.flow.update class InteractUiElementController( private val coroutineScope: CoroutineScope, - private val serviceAdapter: ServiceAdapter, + private val serviceAdapter: AccessibilityServiceAdapter, private val nodeRepository: AccessibilityNodeRepository, private val packageManagerAdapter: PackageManagerAdapter, ) : InteractUiElementUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt index 64c17559f8..972adb3946 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt @@ -6,14 +6,14 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.actions.ActionData +import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity -import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState +import io.github.sds100.keymapper.base.system.accessibility.RecordAccessibilityNodeState import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.containsQuery import io.github.sds100.keymapper.common.utils.dataOrNull @@ -26,7 +26,7 @@ import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel -import io.github.sds100.keymapper.system.accessibility.NodeInteractionType +import io.github.sds100.keymapper.common.utils.NodeInteractionType import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt index a86c3e3054..cd27dc8bc7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt @@ -14,7 +14,7 @@ import com.google.gson.JsonArray import com.google.gson.JsonParser import com.google.gson.JsonSyntaxException import com.google.gson.stream.MalformedJsonException -import io.github.sds100.keymapper.actions.sound.SoundsManager +import io.github.sds100.keymapper.base.actions.sound.SoundsManager import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success @@ -48,12 +48,12 @@ import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository import io.github.sds100.keymapper.data.repositories.GroupRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.data.repositories.RepositoryUtils -import io.github.sds100.keymapper.base.keymaps.KeyMapRepository +import io.github.sds100.keymapper.data.repositories.KeyMapRepository import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.system.files.IFile -import io.github.sds100.keymapper.base.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider import io.github.sds100.keymapper.base.utils.DefaultUuidGenerator -import io.github.sds100.keymapper.base.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.TreeNode import io.github.sds100.keymapper.base.utils.UuidGenerator diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt index 6403884243..9509bf3ab4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt @@ -8,8 +8,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.R import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.system.camera.CameraLensUtils -import io.github.sds100.keymapper.system.display.Orientation +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.containsQuery import io.github.sds100.keymapper.base.utils.getFullMessage diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt index 8c80d0201e..66d31fcd24 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt @@ -5,7 +5,7 @@ import io.github.sds100.keymapper.data.entities.ConstraintEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.system.display.Orientation +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.base.utils.getKey import kotlinx.serialization.Serializable import java.time.LocalTime diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt index 0e30bf8e90..13dcd65a39 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt @@ -2,12 +2,12 @@ package io.github.sds100.keymapper.base.constraints import android.media.AudioManager import android.os.Build -import io.github.sds100.keymapper.system.accessibility.IAccessibilityService +import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.display.DisplayAdapter -import io.github.sds100.keymapper.system.display.Orientation +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.lock.LockScreenAdapter import io.github.sds100.keymapper.system.media.MediaAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt index 2444833d5f..ba743750a9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.common.utils.handle import io.github.sds100.keymapper.common.utils.valueIfFailure import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.system.display.Orientation +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.base.utils.TimeUtils import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt index 00ad2bc4e1..6b9d4b983e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.constraints import android.os.Build -import io.github.sds100.keymapper.system.accessibility.IAccessibilityService +import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.devices.DevicesAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt index 429e2d2760..4df51a3bf0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt @@ -3,8 +3,8 @@ package io.github.sds100.keymapper.base.floating import io.github.sds100.keymapper.data.db.typeconverter.ConstantTypeConverters import io.github.sds100.keymapper.data.entities.FloatingButtonEntity import io.github.sds100.keymapper.floating.FloatingButtonData.Location -import io.github.sds100.keymapper.system.display.Orientation -import io.github.sds100.keymapper.base.utils.SizeKM +import io.github.sds100.keymapper.common.utils.Orientation +import io.github.sds100.keymapper.common.utils.SizeKM import io.github.sds100.keymapper.base.utils.getKey import kotlinx.serialization.Serializable import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt index 09159aa65e..b00294c0ed 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt @@ -3,8 +3,8 @@ package io.github.sds100.keymapper.base.home import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.system.service.ServiceAdapter -import io.github.sds100.keymapper.system.accessibility.ServiceState +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import kotlinx.coroutines.flow.Flow @@ -16,7 +16,7 @@ import kotlinx.coroutines.flow.map class ShowHomeScreenAlertsUseCaseImpl( private val preferences: PreferenceRepository, private val permissions: PermissionAdapter, - private val accessibilityServiceAdapter: ServiceAdapter, + private val accessibilityServiceAdapter: AccessibilityServiceAdapter, private val pauseKeyMapsUseCase: PauseKeyMapsUseCase, ) : ShowHomeScreenAlertsUseCase { override val hideAlerts: Flow = @@ -30,7 +30,7 @@ class ShowHomeScreenAlertsUseCaseImpl( override val isLoggingEnabled: Flow = preferences.get(Keys.log).map { it == true } - override val accessibilityServiceState: Flow = accessibilityServiceAdapter.state + override val accessibilityServiceState: Flow = accessibilityServiceAdapter.state override fun disableBatteryOptimisation() { permissions.request(Permission.IGNORE_BATTERY_OPTIMISATION) @@ -70,7 +70,7 @@ class ShowHomeScreenAlertsUseCaseImpl( } interface ShowHomeScreenAlertsUseCase { - val accessibilityServiceState: Flow + val accessibilityServiceState: Flow fun startAccessibilityService(): Boolean fun restartAccessibilityService(): Boolean fun acknowledgeCrashed() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt index 1c7015337b..954337c54e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.keymaps import android.graphics.Color import android.graphics.drawable.Drawable import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.actions.ActionUiHelper +import io.github.sds100.keymapper.base.actions.ActionUiHelper import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt index 57b6287e8a..8937d32f01 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt @@ -56,7 +56,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.canopas.lib.showcase.IntroShowcase import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.actions.ActionsScreen +import io.github.sds100.keymapper.base.actions.ActionsScreen import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.constraints.ConstraintsScreen import io.github.sds100.keymapper.onboarding.OnboardingTapTarget diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt index 1ba9f49415..2425f5d7c7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt @@ -17,7 +17,7 @@ import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.floating.FloatingButtonEntityMapper -import io.github.sds100.keymapper.system.service.ServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils @@ -33,7 +33,8 @@ import io.github.sds100.keymapper.mapping.trigger.TriggerMode import io.github.sds100.keymapper.base.system.accessibility.ServiceEvent import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.common.utils.moveElement -import io.github.sds100.keymapper.system.accessibility.FingerprintGestureType +import io.github.sds100.keymapper.data.repositories.KeyMapRepository +import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow @@ -62,7 +63,7 @@ class ConfigKeyMapUseCaseController @Inject constructor( private val preferenceRepository: PreferenceRepository, private val floatingLayoutRepository: FloatingLayoutRepository, private val floatingButtonRepository: FloatingButtonRepository, - private val serviceAdapter: ServiceAdapter, + private val serviceAdapter: AccessibilityServiceAdapter, ) : ConfigKeyMapUseCase, GetDefaultKeyMapOptionsUseCase by GetDefaultKeyMapOptionsUseCaseImpl( coroutineScope, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt index 1c30ec3b95..73d15ce756 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt @@ -3,20 +3,20 @@ package io.github.sds100.keymapper.base.keymaps import android.os.Bundle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import io.github.sds100.keymapper.actions.ConfigActionsViewModel -import io.github.sds100.keymapper.actions.CreateActionUseCase -import io.github.sds100.keymapper.actions.TestActionUseCase +import io.github.sds100.keymapper.base.actions.ConfigActionsViewModel +import io.github.sds100.keymapper.base.actions.CreateActionUseCase +import io.github.sds100.keymapper.base.actions.TestActionUseCase import io.github.sds100.keymapper.constraints.ConfigConstraintsViewModel import io.github.sds100.keymapper.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.onboarding.OnboardingUseCase -import io.github.sds100.keymapper.purchasing.PurchasingManager +import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.trigger.ConfigTriggerViewModel import io.github.sds100.keymapper.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.common.utils.getJsonSerializable import io.github.sds100.keymapper.common.utils.putJsonSerializable import io.github.sds100.keymapper.common.utils.dataOrNull -import io.github.sds100.keymapper.base.utils.firstBlocking +import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.common.utils.ifIsData import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt index 880f15fca0..12c9998611 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt @@ -9,8 +9,8 @@ import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.actions.ActionErrorSnapshot -import io.github.sds100.keymapper.actions.ActionUiHelper +import io.github.sds100.keymapper.base.actions.ActionErrorSnapshot +import io.github.sds100.keymapper.base.actions.ActionUiHelper import io.github.sds100.keymapper.constraints.ConstraintErrorSnapshot import io.github.sds100.keymapper.constraints.ConstraintMode import io.github.sds100.keymapper.constraints.ConstraintUiHelper diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index 38f6ed3d77..8a0ecec388 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.keymaps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.actions.DisplayActionUseCase -import io.github.sds100.keymapper.actions.GetActionErrorUseCase +import io.github.sds100.keymapper.base.actions.DisplayActionUseCase +import io.github.sds100.keymapper.base.actions.GetActionErrorUseCase import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success @@ -12,10 +12,10 @@ import io.github.sds100.keymapper.common.utils.valueIfFailure import io.github.sds100.keymapper.constraints.DisplayConstraintUseCase import io.github.sds100.keymapper.constraints.GetConstraintErrorUseCase import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.purchasing.ProductId -import io.github.sds100.keymapper.purchasing.PurchasingError -import io.github.sds100.keymapper.purchasing.PurchasingManager -import io.github.sds100.keymapper.shizuku.ShizukuUtils +import io.github.sds100.keymapper.base.purchasing.ProductId +import io.github.sds100.keymapper.base.purchasing.PurchasingError +import io.github.sds100.keymapper.base.purchasing.PurchasingManager +import io.github.sds100.keymapper.base.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter @@ -46,7 +46,7 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, private val packageManagerAdapter: PackageManagerAdapter, private val settingsRepository: SettingsRepository, - private val accessibilityServiceAdapter: io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapter, + private val accessibilityServiceAdapter: io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapterImpl, private val settingsRepository2: SettingsRepository, private val purchasingManager: PurchasingManager, private val ringtoneAdapter: RingtoneAdapter, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt index b128fbafaa..6137476397 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt @@ -1,10 +1,10 @@ package io.github.sds100.keymapper.base.keymaps import android.view.KeyEvent -import io.github.sds100.keymapper.actions.Action -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.actions.ActionEntityMapper -import io.github.sds100.keymapper.actions.canBeHeldDown +import io.github.sds100.keymapper.base.actions.Action +import io.github.sds100.keymapper.base.actions.ActionData +import io.github.sds100.keymapper.base.actions.ActionEntityMapper +import io.github.sds100.keymapper.base.actions.canBeHeldDown import io.github.sds100.keymapper.constraints.ConstraintEntityMapper import io.github.sds100.keymapper.constraints.ConstraintModeEntityMapper import io.github.sds100.keymapper.constraints.ConstraintState diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt index dc4c4d2445..301973543c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt @@ -4,8 +4,8 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.outlined.ArrowForward import androidx.compose.material.icons.outlined.Add import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.actions.ActionErrorSnapshot -import io.github.sds100.keymapper.actions.ActionUiHelper +import io.github.sds100.keymapper.base.actions.ActionErrorSnapshot +import io.github.sds100.keymapper.base.actions.ActionUiHelper import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.constraints.ConstraintErrorSnapshot import io.github.sds100.keymapper.constraints.ConstraintState @@ -25,7 +25,7 @@ import io.github.sds100.keymapper.trigger.TriggerMode import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.system.accessibility.FingerprintGestureType +import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType class KeyMapListItemCreator( private val displayMapping: DisplayKeyMapUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index 441fe6a4e3..d3cf50eec7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.actions.ActionErrorSnapshot +import io.github.sds100.keymapper.base.actions.ActionErrorSnapshot import io.github.sds100.keymapper.backup.BackupRestoreMappingsUseCase import io.github.sds100.keymapper.backup.ImportExportState import io.github.sds100.keymapper.backup.RestoreType @@ -27,7 +27,7 @@ import io.github.sds100.keymapper.onboarding.OnboardingUseCase import io.github.sds100.keymapper.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.sorting.SortViewModel import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.accessibility.ServiceState +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.trigger.KeyMapListItemModel @@ -169,7 +169,7 @@ class KeyMapListViewModel( buildList { when (serviceState) { - ServiceState.CRASHED -> + AccessibilityServiceState.CRASHED -> add( HomeWarningListItem( _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM, @@ -177,7 +177,7 @@ class KeyMapListViewModel( ), ) - ServiceState.DISABLED -> + AccessibilityServiceState.DISABLED -> add( HomeWarningListItem( _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM, @@ -185,7 +185,7 @@ class KeyMapListViewModel( ), ) - ServiceState.ENABLED -> {} + AccessibilityServiceState.ENABLED -> {} } if (isBatteryOptimised) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt index 367965b689..197d85cc00 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt @@ -22,6 +22,7 @@ import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.data.repositories.KeyMapRepository import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt index 2f00bd8c75..73f4541fb6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.keymaps -import io.github.sds100.keymapper.actions.Action -import io.github.sds100.keymapper.actions.PerformActionsUseCase -import io.github.sds100.keymapper.actions.RepeatMode +import io.github.sds100.keymapper.base.actions.Action +import io.github.sds100.keymapper.base.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.actions.RepeatMode import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.constraints.isSatisfied import io.github.sds100.keymapper.data.PreferenceDefaults diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapEvent.kt new file mode 100644 index 0000000000..14abba054c --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapEvent.kt @@ -0,0 +1,7 @@ +package io.github.sds100.keymapper.base.keymaps + +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent +import kotlinx.serialization.Serializable + +@Serializable +data class TriggerKeyMapEvent(val uid: String) : AccessibilityServiceEvent() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt index 0f1468c4ba..6f91eb4e94 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt @@ -15,11 +15,11 @@ import io.github.sds100.keymapper.groups.Group import io.github.sds100.keymapper.groups.GroupEntityMapper import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.KeyMapEntityMapper -import io.github.sds100.keymapper.base.keymaps.KeyMapRepository -import io.github.sds100.keymapper.system.accessibility.IAccessibilityService +import io.github.sds100.keymapper.data.repositories.KeyMapRepository +import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.system.display.DisplayAdapter import io.github.sds100.keymapper.system.inputevents.InputEventInjector -import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjector +import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.navigation.OpenMenuHelper import io.github.sds100.keymapper.system.permissions.Permission diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt index b99fc266c8..6094ee46cf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.keymaps.detection -import io.github.sds100.keymapper.actions.Action -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.actions.PerformActionsUseCase -import io.github.sds100.keymapper.actions.RepeatMode +import io.github.sds100.keymapper.base.actions.Action +import io.github.sds100.keymapper.base.actions.ActionData +import io.github.sds100.keymapper.base.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.actions.RepeatMode import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.base.utils.InputEventType diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt index aea479084d..8c86545e95 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.keymaps.detection -import io.github.sds100.keymapper.actions.Action -import io.github.sds100.keymapper.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.actions.Action +import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.utils.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt index 2b61bc4705..05eab5bfb3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.keymaps.detection -import io.github.sds100.keymapper.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.SimpleMappingController diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt index 8791689186..84aa846e1a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt @@ -7,6 +7,7 @@ import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.ifIsData import io.github.sds100.keymapper.common.utils.mapData import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.data.repositories.LogRepository import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt index a08fe0a7bf..76e95e9be9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt @@ -1,9 +1,7 @@ package io.github.sds100.keymapper.base.logging import android.util.Log -import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.data.entities.LogEntryEntity -import io.github.sds100.keymapper.data.repositories.PreferenceRepository +import io.github.sds100.keymapper.data.repositories.LogRepository import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.channels.BufferOverflow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt index 88e25e6df5..0de4292807 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt @@ -1,29 +1,29 @@ package io.github.sds100.keymapper.base.onboarding import androidx.datastore.preferences.core.Preferences -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.actions.canUseImeToPerform -import io.github.sds100.keymapper.actions.canUseShizukuToPerform +import io.github.sds100.keymapper.base.actions.ActionData +import io.github.sds100.keymapper.base.actions.canUseImeToPerform +import io.github.sds100.keymapper.base.actions.canUseShizukuToPerform +import io.github.sds100.keymapper.base.purchasing.ProductId +import io.github.sds100.keymapper.base.purchasing.PurchasingManager +import io.github.sds100.keymapper.base.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.base.shizuku.ShizukuUtils +import io.github.sds100.keymapper.base.utils.VersionHelper +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.handle import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.entities.KeyMapEntity +import io.github.sds100.keymapper.data.repositories.KeyMapRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.base.keymaps.KeyMapRepository -import io.github.sds100.keymapper.purchasing.ProductId -import io.github.sds100.keymapper.purchasing.PurchasingManager -import io.github.sds100.keymapper.shizuku.ShizukuAdapter -import io.github.sds100.keymapper.shizuku.ShizukuUtils +import io.github.sds100.keymapper.data.utils.PrefDelegate import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.leanback.LeanbackAdapter import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.base.utils.PrefDelegate -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.VersionHelper -import io.github.sds100.keymapper.base.utils.SettingsRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filterIsInstance @@ -31,11 +31,10 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import javax.inject.Inject import javax.inject.Singleton -import io.github.sds100.keymapper.common.BuildConfigProvider @Singleton class OnboardingUseCaseImpl @Inject constructor( - private val settingsRepository: SettingsRepository, + private val settingsRepository: PreferenceRepository, private val fileAdapter: FileAdapter, private val leanbackAdapter: LeanbackAdapter, private val shizukuAdapter: ShizukuAdapter, @@ -43,8 +42,7 @@ class OnboardingUseCaseImpl @Inject constructor( private val packageManagerAdapter: PackageManagerAdapter, private val purchasingManager: PurchasingManager, private val keyMapRepository: KeyMapRepository, - private val keyMapRepository: KeyMapRepository, - private val buildConfigProvider: BuildConfigProvider + private val buildConfigProvider: BuildConfigProvider, ) : PreferenceRepository by settingsRepository, OnboardingUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt index a1db5f27a0..0324f4f1c3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.reroutekeyevents import android.os.Build import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjector +import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt index 10219f1ee0..0513c63315 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt @@ -1,14 +1,14 @@ package io.github.sds100.keymapper.base.settings import androidx.datastore.preferences.core.Preferences -import io.github.sds100.keymapper.actions.sound.SoundFileInfo -import io.github.sds100.keymapper.actions.sound.SoundsManager +import io.github.sds100.keymapper.base.actions.sound.SoundFileInfo +import io.github.sds100.keymapper.base.actions.sound.SoundsManager import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.shizuku.ShizukuAdapter -import io.github.sds100.keymapper.shizuku.ShizukuUtils +import io.github.sds100.keymapper.base.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.base.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt index 34c003cca0..4ff48c2de8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt @@ -19,7 +19,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.backup.BackupUtils import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.shizuku.ShizukuUtils +import io.github.sds100.keymapper.base.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.base.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils diff --git a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt index d306ed78bf..f027e0d0b9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt @@ -5,9 +5,9 @@ import android.content.Context import android.hardware.input.IInputManager import android.os.SystemClock import android.view.KeyEvent +import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.system.inputevents.InputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel -import io.github.sds100.keymapper.base.utils.InputEventType import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import rikka.shizuku.ShizukuBinderWrapper diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt index fe2a308fc8..df6bc1dfa5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.sorting.comparators -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.actions.DisplayActionUseCase +import io.github.sds100.keymapper.base.actions.ActionData +import io.github.sds100.keymapper.base.actions.DisplayActionUseCase import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.valueOrNull diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeAction.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeAction.kt similarity index 61% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeAction.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeAction.kt index f79ee19615..398366d7cb 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeAction.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeAction.kt @@ -1,3 +1,3 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.base.system.accessibility data class AccessibilityNodeAction(val action: Int, val extras: Map = emptyMap()) diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeModel.kt similarity index 90% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeModel.kt index 10bd905dea..c7957bf444 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityNodeModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.base.system.accessibility import android.os.Build import androidx.annotation.RequiresApi diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt index 7523bcf648..303f0df7df 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt @@ -7,8 +7,7 @@ import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityNodeInfo import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository -import io.github.sds100.keymapper.system.accessibility.NodeInteractionType -import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState +import io.github.sds100.keymapper.common.utils.NodeInteractionType import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapter.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapterImpl.kt similarity index 86% rename from base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapter.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapterImpl.kt index 3c42a52ae5..c7efe6d173 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapter.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapterImpl.kt @@ -10,6 +10,7 @@ import android.os.Handler import android.os.Looper import android.provider.Settings import dagger.hilt.android.qualifiers.ApplicationContext +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success @@ -17,10 +18,11 @@ import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SettingsUtils -import io.github.sds100.keymapper.system.accessibility.ServiceState +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.system.service.ServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableSharedFlow @@ -32,21 +34,23 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import kotlinx.coroutines.withTimeoutOrNull import timber.log.Timber +import javax.inject.Inject import javax.inject.Singleton @Singleton -class AccessibilityServiceAdapter( +class AccessibilityServiceAdapterImpl @Inject constructor( @ApplicationContext context: Context, private val coroutineScope: CoroutineScope, - private val permissionAdapter: PermissionAdapter -) : ServiceAdapter { + private val permissionAdapter: PermissionAdapter, + private val buildConfigProvider: BuildConfigProvider +) : AccessibilityServiceAdapter { private val ctx = context.applicationContext - override val eventReceiver = MutableSharedFlow() + override val eventReceiver = MutableSharedFlow() - val eventsToService = MutableSharedFlow() + val eventsToService = MutableSharedFlow() - override val state = MutableStateFlow(ServiceState.DISABLED) + override val state = MutableStateFlow(AccessibilityServiceState.DISABLED) init { // use job scheduler because there is there is a much shorter delay when the app is in the background @@ -76,21 +80,21 @@ class AccessibilityServiceAdapter( }.launchIn(coroutineScope) } - override fun sendAsync(event: E) { + override fun sendAsync(event: AccessibilityServiceEvent) { coroutineScope.launch { eventsToService.emit(event) } } - override suspend fun send(event: E): Result<*> { + override suspend fun send(event: AccessibilityServiceEvent): Result<*> { state.value = getState() - if (state.value == ServiceState.DISABLED) { + if (state.value == AccessibilityServiceState.DISABLED) { Timber.e("Failed to send event to accessibility service because disabled: $event") return Error.AccessibilityServiceDisabled } - if (state.value == ServiceState.CRASHED) { + if (state.value == AccessibilityServiceState.CRASHED) { Timber.e("Failed to send event to accessibility service because crashed: $event") return Error.AccessibilityServiceCrashed } @@ -214,7 +218,7 @@ class AccessibilityServiceAdapter( val className = io.github.sds100.keymapper.system.accessibility.MyAccessibilityService::class.java.name - val keyMapperEntry = "${Constants.PACKAGE_NAME}/$className" + val keyMapperEntry = "${buildConfigProvider.packageName}/$className" val newEnabledServices = if (enabledServices.contains(keyMapperEntry)) { val services = enabledServices.split(':').toMutableList() @@ -263,15 +267,15 @@ class AccessibilityServiceAdapter( override fun acknowledgeCrashed() { state.update { old -> - if (old == ServiceState.CRASHED) { - ServiceState.DISABLED + if (old == AccessibilityServiceState.CRASHED) { + AccessibilityServiceState.DISABLED } else { - ServiceState.ENABLED + AccessibilityServiceState.ENABLED } } } - fun updateWhetherServiceIsEnabled() { + fun updateServiceState() { coroutineScope.launch { state.value = getState() } @@ -310,7 +314,7 @@ class AccessibilityServiceAdapter( } } - private suspend fun getState(): ServiceState { + private suspend fun getState(): AccessibilityServiceState { /* get a list of all the enabled accessibility services. * The AccessibilityManager.getEnabledAccessibilityServices() method just returns an empty * list. :(*/ @@ -320,7 +324,7 @@ class AccessibilityServiceAdapter( ) if (settingValue == null) { - return ServiceState.DISABLED + return AccessibilityServiceState.DISABLED } // it can be null if the user has never interacted with accessibility settings before @@ -335,9 +339,9 @@ class AccessibilityServiceAdapter( val isEnabled = settingValue.split(':').any { it.split('/')[0] == ctx.packageName } return when { - !isEnabled -> ServiceState.DISABLED - isCrashed() && isEnabled -> ServiceState.CRASHED - else -> ServiceState.ENABLED + !isEnabled -> AccessibilityServiceState.DISABLED + isCrashed() && isEnabled -> AccessibilityServiceState.CRASHED + else -> AccessibilityServiceState.ENABLED } } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceEvent.kt deleted file mode 100644 index c4648ff849..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceEvent.kt +++ /dev/null @@ -1,86 +0,0 @@ -package io.github.sds100.keymapper.base.system.accessibility - -import android.os.Parcelable -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.mapping.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState -import io.github.sds100.keymapper.system.devices.InputDeviceInfo -import io.github.sds100.keymapper.trigger.KeyEventDetectionSource -import kotlinx.parcelize.Parcelize -import kotlinx.serialization.Serializable - -@Serializable -sealed class AccessibilityServiceEvent { - - @Serializable - data class Ping(val key: String) : AccessibilityServiceEvent() - - @Serializable - data class Pong(val key: String) : AccessibilityServiceEvent() - - @Parcelize - @Serializable - data class RecordedTriggerKey( - val keyCode: Int, - val device: InputDeviceInfo?, - val detectionSource: KeyEventDetectionSource, - ) : AccessibilityServiceEvent(), - Parcelable - - @Serializable - object StartRecordingTrigger : AccessibilityServiceEvent() - - @Serializable - object StopRecordingTrigger : AccessibilityServiceEvent() - - @Serializable - data class OnIncrementRecordTriggerTimer(val timeLeft: Int) : AccessibilityServiceEvent() - - @Serializable - object OnStoppedRecordingTrigger : AccessibilityServiceEvent() - - @Serializable - object OnHideKeyboardEvent : AccessibilityServiceEvent() - - @Serializable - object OnShowKeyboardEvent : AccessibilityServiceEvent() - - @Serializable - object HideKeyboard : AccessibilityServiceEvent() - - @Serializable - object ShowKeyboard : AccessibilityServiceEvent() - - @Serializable - data class TestAction(val action: ActionData) : AccessibilityServiceEvent() - - @Serializable - data class ChangeIme(val imeId: String) : AccessibilityServiceEvent() - - @Serializable - object DisableService : AccessibilityServiceEvent() - - @Serializable - object DismissLastNotification : AccessibilityServiceEvent() - - @Serializable - object DismissAllNotifications : AccessibilityServiceEvent() - - @Serializable - data class OnInputFocusChange(val isFocussed: Boolean) : AccessibilityServiceEvent() - - @Serializable - data class TriggerKeyMap(val uid: String) : AccessibilityServiceEvent() - - @Serializable - data class EnableInputMethod(val imeId: String) : AccessibilityServiceEvent() - - @Serializable - data object StartRecordingNodes : AccessibilityServiceEvent() - - @Serializable - data object StopRecordingNodes : AccessibilityServiceEvent() - - @Serializable - data class OnRecordNodeStateChanged(val state: RecordAccessibilityNodeState) : AccessibilityServiceEvent() -} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceUtils.kt similarity index 99% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceUtils.kt index 3ebbeafb8f..8377bc7aaa 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.base.system.accessibility import android.accessibilityservice.AccessibilityService import android.accessibilityservice.AccessibilityService.SHOW_MODE_AUTO diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt index 8f73d15c1f..79be299a00 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt @@ -25,9 +25,6 @@ import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.base.utils.Inject -import io.github.sds100.keymapper.system.accessibility.AccessibilityNodeModel -import io.github.sds100.keymapper.system.accessibility.IAccessibilityService -import io.github.sds100.keymapper.system.accessibility.toModel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt index 487cc8c522..1143df57c7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt @@ -7,7 +7,7 @@ import android.os.Build import android.view.KeyEvent import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityNodeInfo -import io.github.sds100.keymapper.actions.ActionData +import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository @@ -17,6 +17,7 @@ import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker import io.github.sds100.keymapper.base.keymaps.detection.KeyMapController import io.github.sds100.keymapper.base.keymaps.detection.TriggerKeyMapFromOtherAppsController import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase +import io.github.sds100.keymapper.base.trigger.RecordTriggerEvent import io.github.sds100.keymapper.reroutekeyevents.RerouteKeyEventsController import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.inputevents.InputEventUtils @@ -25,14 +26,12 @@ import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.base.utils.firstBlocking +import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.mapping.actions.PerformActionsUseCase import io.github.sds100.keymapper.mapping.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.mapping.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.mapping.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.mapping.keymaps.detection.DetectKeyMapsUseCase -import io.github.sds100.keymapper.system.accessibility.FingerprintGestureType -import io.github.sds100.keymapper.system.accessibility.RecordAccessibilityNodeState import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -55,9 +54,10 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import splitties.bitflags.hasFlag -import splitties.bitflags.minusFlag -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.minusFlag +import io.github.sds100.keymapper.common.utils.withFlag +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent import timber.log.Timber abstract class BaseAccessibilityServiceController( @@ -277,7 +277,7 @@ abstract class BaseAccessibilityServiceController( coroutineScope.launch { accessibilityNodeRecorder.recordState.collectLatest { state -> - outputEvents.emit(AccessibilityServiceEvent.OnRecordNodeStateChanged(state)) + outputEvents.emit(RecordAccessibilityNodeEvent.OnRecordNodeStateChanged(state)) } } @@ -394,7 +394,7 @@ abstract class BaseAccessibilityServiceController( coroutineScope.launch { outputEvents.emit( - AccessibilityServiceEvent.RecordedTriggerKey( + RecordTriggerEvent.RecordedTriggerKey( uniqueEvent.keyCode, uniqueEvent.device, detectionSource, @@ -473,7 +473,7 @@ abstract class BaseAccessibilityServiceController( coroutineScope.launch { outputEvents.emit( - AccessibilityServiceEvent.RecordedTriggerKey( + RecordTriggerEvent.RecordedTriggerKey( keyEvent.keyCode, keyEvent.device, KeyEventDetectionSource.INPUT_METHOD, @@ -533,13 +533,13 @@ abstract class BaseAccessibilityServiceController( open fun onEventFromUi(event: AccessibilityServiceEvent) { Timber.d("Service received event from UI: $event") when (event) { - is AccessibilityServiceEvent.StartRecordingTrigger -> + is RecordTriggerEvent.StartRecordingTrigger -> if (!recordingTrigger) { recordDpadMotionEventTracker.reset() recordingTriggerJob = recordTriggerJob() } - is AccessibilityServiceEvent.StopRecordingTrigger -> { + is RecordTriggerEvent.StopRecordingTrigger -> { val wasRecordingTrigger = recordingTrigger recordingTriggerJob?.cancel() @@ -548,7 +548,7 @@ abstract class BaseAccessibilityServiceController( if (wasRecordingTrigger) { coroutineScope.launch { - outputEvents.emit(AccessibilityServiceEvent.OnStoppedRecordingTrigger) + outputEvents.emit(RecordTriggerEvent.OnStoppedRecordingTrigger) } } } @@ -570,17 +570,17 @@ abstract class BaseAccessibilityServiceController( service.disableSelf() } - is AccessibilityServiceEvent.TriggerKeyMap -> triggerKeyMapFromIntent(event.uid) + is AccessibilityServiceEvent.TriggerKeyMapEvent -> triggerKeyMapFromIntent(event.uid) is AccessibilityServiceEvent.EnableInputMethod -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { service.setInputMethodEnabled(event.imeId, true) } - is AccessibilityServiceEvent.StartRecordingNodes -> { + is RecordAccessibilityNodeEvent.StartRecordingNodes -> { accessibilityNodeRecorder.startRecording() } - is AccessibilityServiceEvent.StopRecordingNodes -> { + is RecordAccessibilityNodeEvent.StopRecordingNodes -> { accessibilityNodeRecorder.stopRecording() } @@ -592,13 +592,13 @@ abstract class BaseAccessibilityServiceController( repeat(RECORD_TRIGGER_TIMER_LENGTH) { iteration -> if (isActive) { val timeLeft = RECORD_TRIGGER_TIMER_LENGTH - iteration - outputEvents.emit(AccessibilityServiceEvent.OnIncrementRecordTriggerTimer(timeLeft)) + outputEvents.emit(RecordTriggerEvent.OnIncrementRecordTriggerTimer(timeLeft)) delay(1000) } } - outputEvents.emit(AccessibilityServiceEvent.OnStoppedRecordingTrigger) + outputEvents.emit(RecordTriggerEvent.OnStoppedRecordingTrigger) } private fun requestFingerprintGestureDetection() { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/ControlAccessibilityServiceUseCase.kt similarity index 75% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/ControlAccessibilityServiceUseCase.kt index 42f69699eb..decc0040e3 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ControlAccessibilityServiceUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/ControlAccessibilityServiceUseCase.kt @@ -1,15 +1,16 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.base.system.accessibility +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.system.service.ServiceAdapter import kotlinx.coroutines.flow.Flow class ControlAccessibilityServiceUseCaseImpl( - private val adapter: ServiceAdapter, + private val adapter: AccessibilityServiceAdapter, private val permissionAdapter: PermissionAdapter, ) : ControlAccessibilityServiceUseCase { - override val serviceState: Flow = adapter.state + override val serviceState: Flow = adapter.state /** * @return true if the service could be started of if the accessibility settings could be @@ -36,7 +37,7 @@ class ControlAccessibilityServiceUseCaseImpl( } interface ControlAccessibilityServiceUseCase { - val serviceState: Flow + val serviceState: Flow fun startService(): Boolean fun restartService(): Boolean fun stopService() diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/FingerprintGestureType.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/FingerprintGestureType.kt similarity index 62% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/FingerprintGestureType.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/FingerprintGestureType.kt index 1b8caa56fb..40019e7f16 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/FingerprintGestureType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/FingerprintGestureType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.base.system.accessibility enum class FingerprintGestureType { SWIPE_DOWN, diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt similarity index 96% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt index 829078e1d7..9ff8f56a2b 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/IAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.base.system.accessibility import android.os.Build import androidx.annotation.RequiresApi diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/RecordAccessibilityNodeEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/RecordAccessibilityNodeEvent.kt new file mode 100644 index 0000000000..2665f76624 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/RecordAccessibilityNodeEvent.kt @@ -0,0 +1,15 @@ +package io.github.sds100.keymapper.base.system.accessibility + +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent +import kotlinx.serialization.Serializable + +sealed class RecordAccessibilityNodeEvent : AccessibilityServiceEvent() { + @Serializable + data object StartRecordingNodes : RecordAccessibilityNodeEvent() + + @Serializable + data object StopRecordingNodes : RecordAccessibilityNodeEvent() + + @Serializable + data class OnRecordNodeStateChanged(val state: RecordAccessibilityNodeState) : RecordAccessibilityNodeEvent() +} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/RecordAccessibilityNodeState.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/RecordAccessibilityNodeState.kt similarity index 83% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/RecordAccessibilityNodeState.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/RecordAccessibilityNodeState.kt index ea1e26d091..f7e8dac342 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/RecordAccessibilityNodeState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/RecordAccessibilityNodeState.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.base.system.accessibility import kotlinx.serialization.Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt index 0a0ca4f8e8..3c3869abd9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt @@ -1,6 +1,9 @@ package io.github.sds100.keymapper.base.system.inputmethod -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess @@ -8,22 +11,20 @@ import io.github.sds100.keymapper.common.utils.otherwise import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.system.service.ServiceAdapter +import io.github.sds100.keymapper.data.utils.PrefDelegate +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent import io.github.sds100.keymapper.system.devices.DevicesAdapter -import io.github.sds100.keymapper.system.popup.PopupMessageAdapter -import io.github.sds100.keymapper.base.utils.PrefDelegate -import io.github.sds100.keymapper.base.utils.ServiceEvent -import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper +import io.github.sds100.keymapper.system.popup.PopupMessageAdapter import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import timber.log.Timber +import javax.inject.Inject -class AutoSwitchImeController( +class AutoSwitchImeController @Inject constructor( private val coroutineScope: CoroutineScope, private val preferenceRepository: PreferenceRepository, private val inputMethodAdapter: InputMethodAdapter, @@ -31,7 +32,7 @@ class AutoSwitchImeController( private val devicesAdapter: DevicesAdapter, private val popupMessageAdapter: PopupMessageAdapter, private val resourceProvider: ResourceProvider, - private val accessibilityServiceAdapter: ServiceAdapter, + private val accessibilityServiceAdapter: AccessibilityServiceAdapter, ) : PreferenceRepository by preferenceRepository { private val imeHelper = KeyMapperImeHelper(inputMethodAdapter) @@ -95,7 +96,7 @@ class AutoSwitchImeController( accessibilityServiceAdapter.eventReceiver.onEach { event -> when (event) { - is ServiceEvent.OnInputFocusChange -> { + is AccessibilityServiceEvent.OnInputFocusChange -> { if (!changeImeOnInputFocus) { return@onEach } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ImeInputEventInjector.kt similarity index 89% rename from system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ImeInputEventInjector.kt index 17e14de351..fffee5f324 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ImeInputEventInjector.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ImeInputEventInjector.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.system.inputmethod +package io.github.sds100.keymapper.base.system.inputmethod import android.content.Context import android.content.Intent @@ -6,17 +6,19 @@ import android.os.Build import android.os.SystemClock import android.view.KeyCharacterMap import android.view.KeyEvent -import io.github.sds100.keymapper.api.KeyEventRelayService -import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapper +import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.system.inputevents.InputEventInjector -import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.system.inputmethod.InputKeyModel +import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter +import io.github.sds100.keymapper.system.inputmethod.KeyEventRelayServiceWrapper import timber.log.Timber +import javax.inject.Inject /** * This class handles communicating with the Key Mapper input method services * so key events and text can be inputted. */ -class ImeInputEventInjectorImpl( +class ImeInputEventInjectorImpl @Inject constructor( context: Context, private val keyEventRelayService: KeyEventRelayServiceWrapper, private val inputMethodAdapter: InputMethodAdapter, @@ -37,6 +39,8 @@ class ImeInputEventInjectorImpl( "io.github.sds100.keymapper.inputmethod.EXTRA_KEY_EVENT" private const val KEY_MAPPER_INPUT_METHOD_EXTRA_TEXT = "io.github.sds100.keymapper.inputmethod.EXTRA_TEXT" + + private const val CALLBACK_ID_INPUT_METHOD = "input_method" } private val ctx = context.applicationContext @@ -95,14 +99,14 @@ class ImeInputEventInjectorImpl( keyEventRelayService.sendKeyEvent( downKeyEvent, imePackageName, - KeyEventRelayService.CALLBACK_ID_INPUT_METHOD, + CALLBACK_ID_INPUT_METHOD, ) val upKeyEvent = createInjectedKeyEvent(eventTime, KeyEvent.ACTION_UP, model) keyEventRelayService.sendKeyEvent( upKeyEvent, imePackageName, - KeyEventRelayService.CALLBACK_ID_INPUT_METHOD, + CALLBACK_ID_INPUT_METHOD, ) } @@ -111,7 +115,7 @@ class ImeInputEventInjectorImpl( keyEventRelayService.sendKeyEvent( downKeyEvent, imePackageName, - KeyEventRelayService.CALLBACK_ID_INPUT_METHOD, + CALLBACK_ID_INPUT_METHOD, ) } @@ -120,7 +124,7 @@ class ImeInputEventInjectorImpl( keyEventRelayService.sendKeyEvent( upKeyEvent, imePackageName, - KeyEventRelayService.CALLBACK_ID_INPUT_METHOD, + CALLBACK_ID_INPUT_METHOD, ) } } @@ -175,7 +179,7 @@ class ImeInputEventInjectorImpl( keyEventRelayService.sendKeyEvent( e, imePackageName, - KeyEventRelayService.CALLBACK_ID_INPUT_METHOD, + CALLBACK_ID_INPUT_METHOD, ) } @@ -195,7 +199,7 @@ class ImeInputEventInjectorImpl( keyEventRelayService.sendKeyEvent( event, imePackageName, - KeyEventRelayService.CALLBACK_ID_INPUT_METHOD, + CALLBACK_ID_INPUT_METHOD, ) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt index ec21642ed4..d52608268f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt @@ -55,8 +55,8 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -import splitties.bitflags.hasFlag -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.withFlag import javax.inject.Inject @HiltViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt index e47cafed49..13b533c00b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt @@ -14,8 +14,8 @@ import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.mapping.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.system.accessibility.ControlAccessibilityServiceUseCase -import io.github.sds100.keymapper.system.accessibility.ServiceState +import io.github.sds100.keymapper.base.system.accessibility.ControlAccessibilityServiceUseCase +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import io.github.sds100.keymapper.system.inputmethod.ShowHideInputMethodUseCase import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.system.inputmethod.ToggleCompatibleImeUseCase @@ -239,7 +239,7 @@ class NotificationController @Inject constructor( private fun invalidateToggleMappingsNotification( show: Boolean, - serviceState: ServiceState, + serviceState: AccessibilityServiceState, areMappingsPaused: Boolean, ) { manageNotifications.createChannel( @@ -256,7 +256,7 @@ class NotificationController @Inject constructor( } when (serviceState) { - ServiceState.ENABLED -> { + AccessibilityServiceState.ENABLED -> { if (areMappingsPaused) { manageNotifications.show(mappingsPausedNotification()) } else { @@ -264,10 +264,10 @@ class NotificationController @Inject constructor( } } - ServiceState.CRASHED -> + AccessibilityServiceState.CRASHED -> manageNotifications.show(accessibilityServiceCrashedNotification()) - ServiceState.DISABLED -> + AccessibilityServiceState.DISABLED -> manageNotifications.show(accessibilityServiceDisabledNotification()) } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleKeyMapperKeyboardTile.kt similarity index 64% rename from system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt rename to base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleKeyMapperKeyboardTile.kt index a5482bb087..f920c77b9e 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleKeyMapperKeyboardTile.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleKeyMapperKeyboardTile.kt @@ -1,33 +1,38 @@ -package io.github.sds100.keymapper.system.tiles +package io.github.sds100.keymapper.base.tiles import android.graphics.drawable.Icon import android.os.Build import android.service.quicksettings.Tile import android.service.quicksettings.TileService +import android.widget.Toast import androidx.annotation.RequiresApi import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry import androidx.lifecycle.lifecycleScope -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.UseCases +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.base.utils.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.system.inputmethod.ToggleCompatibleImeUseCase import kotlinx.coroutines.flow.first -import splitties.toast.toast - +import javax.inject.Inject @RequiresApi(Build.VERSION_CODES.N) +@AndroidEntryPoint class ToggleKeyMapperKeyboardTile : TileService(), LifecycleOwner { - private val useCase by lazy { UseCases.toggleCompatibleIme(this) } - private val resourceProvider by lazy { ServiceLocator.resourceProvider(this) } + @Inject + lateinit var useCase: ToggleCompatibleImeUseCase + + @Inject + lateinit var resourceProvider: ResourceProvider private lateinit var lifecycleRegistry: LifecycleRegistry @@ -75,14 +80,26 @@ class ToggleKeyMapperKeyboardTile : lifecycleScope.launchWhenStarted { if (!useCase.sufficientPermissions.first()) { - toast(R.string.error_insufficient_permissions) + Toast.makeText( + this@ToggleKeyMapperKeyboardTile, + R.string.error_insufficient_permissions, + Toast.LENGTH_SHORT, + ).show() return@launchWhenStarted } useCase.toggle().onSuccess { - toast(resourceProvider.getString(R.string.toast_chose_keyboard, it.label)) + Toast.makeText( + this@ToggleKeyMapperKeyboardTile, + str(R.string.toast_chose_keyboard, it.label), + Toast.LENGTH_SHORT, + ).show() }.onFailure { - toast(it.getFullMessage(resourceProvider)) + Toast.makeText( + this@ToggleKeyMapperKeyboardTile, + it.getFullMessage(resourceProvider), + Toast.LENGTH_SHORT, + ).show() } } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt similarity index 91% rename from system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt rename to base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt index a1e06c1dae..ea5436ad2e 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/tiles/ToggleMappingsTile.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.system.tiles +package io.github.sds100.keymapper.base.tiles import android.graphics.drawable.Icon import android.os.Build @@ -11,8 +11,8 @@ import androidx.lifecycle.LifecycleRegistry import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.UseCases -import io.github.sds100.keymapper.system.accessibility.ServiceState -import io.github.sds100.keymapper.base.utils.firstBlocking +import AccessibilityServiceState +import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.base.utils.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.str import kotlinx.coroutines.flow.collect @@ -53,12 +53,12 @@ class ToggleMappingsTile : } private fun updateQsTilePreSdk29( - serviceState: ServiceState, + serviceState: AccessibilityServiceState, ctx: ToggleMappingsTile, isPaused: Boolean, ) { when { - serviceState == ServiceState.DISABLED -> { + serviceState == AccessibilityServiceState.DISABLED -> { qsTile.label = str(R.string.tile_service_disabled) qsTile.contentDescription = str(R.string.tile_accessibility_service_disabled_content_description) @@ -86,12 +86,12 @@ class ToggleMappingsTile : @RequiresApi(Build.VERSION_CODES.Q) private fun updateQsTile( - serviceState: ServiceState, + serviceState: AccessibilityServiceState, ctx: ToggleMappingsTile, isPaused: Boolean, ) { when { - serviceState == ServiceState.DISABLED -> { + serviceState == AccessibilityServiceState.DISABLED -> { qsTile.label = str(R.string.app_name) qsTile.subtitle = str(R.string.tile_service_disabled) qsTile.contentDescription = @@ -139,7 +139,7 @@ class ToggleMappingsTile : override fun onClick() { super.onClick() - if (serviceAdapter.state.value == ServiceState.DISABLED) return + if (serviceAdapter.state.value == AccessibilityServiceState.DISABLED) return if (useCase.isPaused.firstBlocking()) { useCase.resume() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index d9719c7e45..3d1390b322 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -23,8 +23,8 @@ import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.onboarding.OnboardingUseCase -import io.github.sds100.keymapper.purchasing.ProductId -import io.github.sds100.keymapper.purchasing.PurchasingManager +import io.github.sds100.keymapper.base.purchasing.ProductId +import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.common.utils.State diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt index df48d78f34..ae7e76238e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt @@ -4,8 +4,8 @@ import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.Serializable -import splitties.bitflags.hasFlag -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.withFlag import java.util.UUID @Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerEvent.kt new file mode 100644 index 0000000000..3c52caf495 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerEvent.kt @@ -0,0 +1,30 @@ +package io.github.sds100.keymapper.base.trigger + +import android.os.Parcelable +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent +import io.github.sds100.keymapper.system.devices.InputDeviceInfo +import kotlinx.parcelize.Parcelize +import kotlinx.serialization.Serializable + +sealed class RecordTriggerEvent : AccessibilityServiceEvent() { + @Parcelize + @Serializable + data class RecordedTriggerKey( + val keyCode: Int, + val device: InputDeviceInfo?, + val detectionSource: KeyEventDetectionSource, + ) : RecordTriggerEvent(), + Parcelable + + @Serializable + data object StartRecordingTrigger : RecordTriggerEvent() + + @Serializable + data object StopRecordingTrigger : RecordTriggerEvent() + + @Serializable + data class OnIncrementRecordTriggerTimer(val timeLeft: Int) : RecordTriggerEvent() + + @Serializable + data object OnStoppedRecordingTrigger : RecordTriggerEvent() +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt index d568da4407..f0081d3613 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.trigger import android.view.KeyEvent import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker -import io.github.sds100.keymapper.system.service.ServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyMotionEvent @@ -21,7 +21,7 @@ import kotlinx.coroutines.launch class RecordTriggerController( private val coroutineScope: CoroutineScope, - private val serviceAdapter: ServiceAdapter, + private val serviceAdapter: AccessibilityServiceAdapter, ) : RecordTriggerUseCase { override val state = MutableStateFlow(RecordTriggerState.Idle) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt index 1bdcf14911..ff6cb5db87 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt @@ -13,8 +13,8 @@ import io.github.sds100.keymapper.floating.FloatingButtonEntityMapper import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.system.inputevents.InputEventUtils import kotlinx.serialization.Serializable -import splitties.bitflags.hasFlag -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.withFlag diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt index 64905b7e44..977558a7b6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt @@ -7,8 +7,8 @@ import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.requiresImeKeyEventForwardingInPhoneCall -import io.github.sds100.keymapper.purchasing.ProductId -import io.github.sds100.keymapper.purchasing.PurchasingError +import io.github.sds100.keymapper.base.purchasing.ProductId +import io.github.sds100.keymapper.base.purchasing.PurchasingError import io.github.sds100.keymapper.system.inputevents.InputEventUtils /** diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt index 49f929e0da..a0ab5cd701 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt @@ -7,6 +7,7 @@ import io.github.sds100.keymapper.base.purchasing.PurchasingError import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.utils.BuildUtils import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.data.DataError import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission @@ -58,7 +59,7 @@ fun Error.getFullMessage(resourceProvider: ResourceProvider): String { else -> throw Exception("Don't know how to get error message for this system feature ${this.feature}") } - is Error.ExtraNotFound -> resourceProvider.getString( + is DataError.ExtraNotFound -> resourceProvider.getString( R.string.error_extra_not_found, extraId, ) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/InputEventStrings.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/InputEventStrings.kt new file mode 100644 index 0000000000..256152c0b7 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/InputEventStrings.kt @@ -0,0 +1,375 @@ +package io.github.sds100.keymapper.base.utils + +import android.os.Build +import android.view.KeyEvent +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.system.inputevents.InputEventUtils.KEYCODE_TO_SCANCODE_OFFSET + +object InputEventStrings { + + val MODIFIER_LABELS = mapOf( + KeyEvent.META_CTRL_ON to R.string.meta_state_ctrl, + KeyEvent.META_CTRL_LEFT_ON to R.string.meta_state_ctrl_left, + KeyEvent.META_CTRL_RIGHT_ON to R.string.meta_state_ctrl_right, + + KeyEvent.META_ALT_ON to R.string.meta_state_alt, + KeyEvent.META_ALT_LEFT_ON to R.string.meta_state_alt_left, + KeyEvent.META_ALT_RIGHT_ON to R.string.meta_state_alt_right, + + KeyEvent.META_SHIFT_ON to R.string.meta_state_shift, + KeyEvent.META_SHIFT_LEFT_ON to R.string.meta_state_shift_left, + KeyEvent.META_SHIFT_RIGHT_ON to R.string.meta_state_shift_right, + + KeyEvent.META_META_ON to R.string.meta_state_meta, + KeyEvent.META_META_LEFT_ON to R.string.meta_state_meta_left, + KeyEvent.META_META_RIGHT_ON to R.string.meta_state_meta_right, + + KeyEvent.META_SYM_ON to R.string.meta_state_sym, + KeyEvent.META_CAPS_LOCK_ON to R.string.meta_state_caps_lock, + KeyEvent.META_NUM_LOCK_ON to R.string.meta_state_num_lock, + KeyEvent.META_SCROLL_LOCK_ON to R.string.meta_state_scroll_lock, + KeyEvent.META_FUNCTION_ON to R.string.meta_state_function, + ) + + /** + * Maps keys which aren't single characters like the Control keys to a string representation + */ + private val NON_CHARACTER_KEY_LABELS: Map + get() = sequence { + yieldAll( + listOf( + KeyEvent.KEYCODE_VOLUME_DOWN to "Volume down", + KeyEvent.KEYCODE_VOLUME_UP to "Volume up", + + KeyEvent.KEYCODE_CTRL_LEFT to "Ctrl Left", + KeyEvent.KEYCODE_CTRL_RIGHT to "Ctrl Right", + + KeyEvent.KEYCODE_SHIFT_LEFT to "Shift Left", + KeyEvent.KEYCODE_SHIFT_RIGHT to "Shift Right", + + KeyEvent.KEYCODE_ALT_LEFT to "Alt Left", + KeyEvent.KEYCODE_ALT_RIGHT to "Alt Right", + + KeyEvent.KEYCODE_DPAD_LEFT to "Left", + KeyEvent.KEYCODE_DPAD_RIGHT to "Right", + KeyEvent.KEYCODE_DPAD_DOWN to "Down", + KeyEvent.KEYCODE_DPAD_UP to "Up", + + KeyEvent.KEYCODE_ENTER to "Enter", + KeyEvent.KEYCODE_HOME to "Home", + KeyEvent.KEYCODE_BACK to "Back", + KeyEvent.KEYCODE_MENU to "Menu", + KeyEvent.KEYCODE_APP_SWITCH to "Recents", + KeyEvent.KEYCODE_DEL to "Delete", + KeyEvent.KEYCODE_TAB to "Tab", + KeyEvent.KEYCODE_SPACE to "Space", + KeyEvent.KEYCODE_SEARCH to "Search", + KeyEvent.KEYCODE_CAPS_LOCK to "Caps Lock", + KeyEvent.KEYCODE_HEADSETHOOK to "Headset Button", + KeyEvent.KEYCODE_NUM_LOCK to "Num Lock", + + KeyEvent.KEYCODE_BUTTON_1 to "Button 1", + KeyEvent.KEYCODE_BUTTON_2 to "Button 2", + KeyEvent.KEYCODE_BUTTON_3 to "Button 3", + KeyEvent.KEYCODE_BUTTON_4 to "Button 4", + KeyEvent.KEYCODE_BUTTON_5 to "Button 5", + KeyEvent.KEYCODE_BUTTON_6 to "Button 6", + KeyEvent.KEYCODE_BUTTON_7 to "Button 7", + KeyEvent.KEYCODE_BUTTON_8 to "Button 8", + KeyEvent.KEYCODE_BUTTON_9 to "Button 9", + KeyEvent.KEYCODE_BUTTON_10 to "Button 10", + KeyEvent.KEYCODE_BUTTON_11 to "Button 11", + KeyEvent.KEYCODE_BUTTON_12 to "Button 12", + KeyEvent.KEYCODE_BUTTON_13 to "Button 13", + KeyEvent.KEYCODE_BUTTON_14 to "Button 14", + KeyEvent.KEYCODE_BUTTON_15 to "Button 15", + KeyEvent.KEYCODE_BUTTON_16 to "Button 16", + + KeyEvent.KEYCODE_BUTTON_L1 to "Button L1", + KeyEvent.KEYCODE_BUTTON_L2 to "Button L2", + KeyEvent.KEYCODE_BUTTON_R1 to "Button R1", + KeyEvent.KEYCODE_BUTTON_R2 to "Button R2", + + KeyEvent.KEYCODE_BUTTON_A to "Button A", + KeyEvent.KEYCODE_BUTTON_B to "Button B", + KeyEvent.KEYCODE_BUTTON_C to "Button C", + + KeyEvent.KEYCODE_BUTTON_X to "Button X", + KeyEvent.KEYCODE_BUTTON_Y to "Button Y", + KeyEvent.KEYCODE_BUTTON_Z to "Button Z", + + KeyEvent.KEYCODE_BUTTON_THUMBL to "Thumb Left", + KeyEvent.KEYCODE_BUTTON_THUMBR to "Thumb Right", + + KeyEvent.KEYCODE_BUTTON_START to "Start", + KeyEvent.KEYCODE_BUTTON_SELECT to "Select", + + KeyEvent.KEYCODE_SOFT_LEFT to "SOFT_LEFT", + KeyEvent.KEYCODE_SOFT_RIGHT to "SOFT_RIGHT", + KeyEvent.KEYCODE_CALL to "Call", + KeyEvent.KEYCODE_ENDCALL to "End Call", + KeyEvent.KEYCODE_0 to "0", + KeyEvent.KEYCODE_1 to "1", + KeyEvent.KEYCODE_2 to "2", + KeyEvent.KEYCODE_3 to "3", + KeyEvent.KEYCODE_4 to "4", + KeyEvent.KEYCODE_5 to "5", + KeyEvent.KEYCODE_6 to "6", + KeyEvent.KEYCODE_7 to "7", + KeyEvent.KEYCODE_8 to "8", + KeyEvent.KEYCODE_9 to "9", + KeyEvent.KEYCODE_STAR to "*", + KeyEvent.KEYCODE_POUND to "#", + KeyEvent.KEYCODE_DPAD_CENTER to "DPAD Center", + KeyEvent.KEYCODE_POWER to "Power", + KeyEvent.KEYCODE_CAMERA to "Camera", + KeyEvent.KEYCODE_CLEAR to "Clear", + KeyEvent.KEYCODE_A to "A", + KeyEvent.KEYCODE_B to "B", + KeyEvent.KEYCODE_C to "C", + KeyEvent.KEYCODE_D to "D", + KeyEvent.KEYCODE_E to "E", + KeyEvent.KEYCODE_F to "F", + KeyEvent.KEYCODE_G to "G", + KeyEvent.KEYCODE_H to "H", + KeyEvent.KEYCODE_I to "I", + KeyEvent.KEYCODE_J to "J", + KeyEvent.KEYCODE_K to "K", + KeyEvent.KEYCODE_L to "L", + KeyEvent.KEYCODE_M to "M", + KeyEvent.KEYCODE_N to "N", + KeyEvent.KEYCODE_O to "O", + KeyEvent.KEYCODE_P to "P", + KeyEvent.KEYCODE_Q to "Q", + KeyEvent.KEYCODE_R to "R", + KeyEvent.KEYCODE_S to "S", + KeyEvent.KEYCODE_T to "T", + KeyEvent.KEYCODE_U to "U", + KeyEvent.KEYCODE_V to "V", + KeyEvent.KEYCODE_W to "W", + KeyEvent.KEYCODE_X to "X", + KeyEvent.KEYCODE_Y to "Y", + KeyEvent.KEYCODE_Z to "Z", + KeyEvent.KEYCODE_COMMA to ",", + KeyEvent.KEYCODE_PERIOD to ".", + KeyEvent.KEYCODE_SYM to "Symbol", + KeyEvent.KEYCODE_EXPLORER to "Explorer", + KeyEvent.KEYCODE_ENVELOPE to "Mail", + KeyEvent.KEYCODE_GRAVE to "`", + KeyEvent.KEYCODE_MINUS to "-", + KeyEvent.KEYCODE_EQUALS to "=", + KeyEvent.KEYCODE_LEFT_BRACKET to "(", + KeyEvent.KEYCODE_RIGHT_BRACKET to ")", + KeyEvent.KEYCODE_BACKSLASH to "\\", + KeyEvent.KEYCODE_SEMICOLON to ";", + KeyEvent.KEYCODE_APOSTROPHE to "'", + KeyEvent.KEYCODE_SLASH to "/", + KeyEvent.KEYCODE_AT to "@", + KeyEvent.KEYCODE_NUM to "Num", + KeyEvent.KEYCODE_FOCUS to "Focus", + KeyEvent.KEYCODE_PLUS to "+", + KeyEvent.KEYCODE_NOTIFICATION to "Notification", + KeyEvent.KEYCODE_SEARCH to "Search", + KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE to "Play/Pause", + KeyEvent.KEYCODE_MEDIA_STOP to "Stop Media", + KeyEvent.KEYCODE_MEDIA_NEXT to "Play Next", + KeyEvent.KEYCODE_MEDIA_PREVIOUS to "Play Previous", + KeyEvent.KEYCODE_MEDIA_REWIND to "Rewind", + KeyEvent.KEYCODE_MEDIA_FAST_FORWARD to "Fast Forward", + KeyEvent.KEYCODE_MUTE to "Mute Microphone", + KeyEvent.KEYCODE_PAGE_UP to "Page Up", + KeyEvent.KEYCODE_PAGE_DOWN to "Page Down", + KeyEvent.KEYCODE_PICTSYMBOLS to "Picture Symbols", + KeyEvent.KEYCODE_SWITCH_CHARSET to "Switch Charset", + KeyEvent.KEYCODE_BUTTON_MODE to "Button Mode", + KeyEvent.KEYCODE_ESCAPE to "Esc", + KeyEvent.KEYCODE_FORWARD_DEL to "Forward Del", + KeyEvent.KEYCODE_SCROLL_LOCK to "Scroll Lock", + KeyEvent.KEYCODE_META_LEFT to "Meta Left", + KeyEvent.KEYCODE_META_RIGHT to "Meta Right", + KeyEvent.KEYCODE_FUNCTION to "Function", + KeyEvent.KEYCODE_SYSRQ to "SYSRQ", + KeyEvent.KEYCODE_BREAK to "Break", + KeyEvent.KEYCODE_MOVE_HOME to "Home", + KeyEvent.KEYCODE_MOVE_END to "End", + KeyEvent.KEYCODE_INSERT to "Insert", + KeyEvent.KEYCODE_FORWARD to "Forward", + KeyEvent.KEYCODE_MEDIA_PLAY to "Play", + KeyEvent.KEYCODE_MEDIA_PAUSE to "Pause", + KeyEvent.KEYCODE_MEDIA_CLOSE to "Media Close", + KeyEvent.KEYCODE_MEDIA_EJECT to "Eject", + KeyEvent.KEYCODE_MEDIA_RECORD to "Media Record", + KeyEvent.KEYCODE_F1 to "F1", + KeyEvent.KEYCODE_F2 to "F2", + KeyEvent.KEYCODE_F3 to "F3", + KeyEvent.KEYCODE_F4 to "F4", + KeyEvent.KEYCODE_F5 to "F5", + KeyEvent.KEYCODE_F6 to "F6", + KeyEvent.KEYCODE_F7 to "F7", + KeyEvent.KEYCODE_F8 to "F8", + KeyEvent.KEYCODE_F9 to "F9", + KeyEvent.KEYCODE_F10 to "F10", + KeyEvent.KEYCODE_F11 to "F11", + KeyEvent.KEYCODE_F12 to "F12", + KeyEvent.KEYCODE_NUMPAD_0 to "Numpad 0", + KeyEvent.KEYCODE_NUMPAD_1 to "Numpad 1", + KeyEvent.KEYCODE_NUMPAD_2 to "Numpad 2", + KeyEvent.KEYCODE_NUMPAD_3 to "Numpad 3", + KeyEvent.KEYCODE_NUMPAD_4 to "Numpad 4", + KeyEvent.KEYCODE_NUMPAD_5 to "Numpad 5", + KeyEvent.KEYCODE_NUMPAD_6 to "Numpad 6", + KeyEvent.KEYCODE_NUMPAD_7 to "Numpad 7", + KeyEvent.KEYCODE_NUMPAD_8 to "Numpad 8", + KeyEvent.KEYCODE_NUMPAD_9 to "Numpad 9", + KeyEvent.KEYCODE_NUMPAD_DIVIDE to "Numpad Divide", + KeyEvent.KEYCODE_NUMPAD_MULTIPLY to "Numpad Multiply", + KeyEvent.KEYCODE_NUMPAD_SUBTRACT to "Numpad -", + KeyEvent.KEYCODE_NUMPAD_ADD to "Numpad +", + KeyEvent.KEYCODE_NUMPAD_DOT to "Numpad .", + KeyEvent.KEYCODE_NUMPAD_COMMA to "Numpad ,", + KeyEvent.KEYCODE_NUMPAD_ENTER to "Numpad Enter", + KeyEvent.KEYCODE_NUMPAD_EQUALS to "Numpad =", + KeyEvent.KEYCODE_NUMPAD_LEFT_PAREN to "Numpad (", + KeyEvent.KEYCODE_NUMPAD_RIGHT_PAREN to "Numpad )", + KeyEvent.KEYCODE_VOLUME_MUTE to "Mute Volume", + KeyEvent.KEYCODE_INFO to "Info", + KeyEvent.KEYCODE_CHANNEL_UP to "Channel Up", + KeyEvent.KEYCODE_CHANNEL_DOWN to "Channel Down", + KeyEvent.KEYCODE_ZOOM_IN to "Zoom In", + KeyEvent.KEYCODE_ZOOM_OUT to "Zoom Out", + KeyEvent.KEYCODE_TV to "TV", + KeyEvent.KEYCODE_WINDOW to "Window", + KeyEvent.KEYCODE_GUIDE to "Guide", + KeyEvent.KEYCODE_DVR to "DVR", + KeyEvent.KEYCODE_BOOKMARK to "Bookmark", + KeyEvent.KEYCODE_CAPTIONS to "Captions", + KeyEvent.KEYCODE_SETTINGS to "Settings", + KeyEvent.KEYCODE_TV_POWER to "TV Power", + KeyEvent.KEYCODE_TV_INPUT to "TV Input", + KeyEvent.KEYCODE_STB_POWER to "STB Power", + KeyEvent.KEYCODE_STB_INPUT to "STB Input", + KeyEvent.KEYCODE_AVR_POWER to "AVR Power", + KeyEvent.KEYCODE_AVR_INPUT to "AVR Input", + KeyEvent.KEYCODE_PROG_RED to "TV Red", + KeyEvent.KEYCODE_PROG_GREEN to "TV Green", + KeyEvent.KEYCODE_PROG_YELLOW to "TV Yellow", + KeyEvent.KEYCODE_PROG_BLUE to "TV Blue", + KeyEvent.KEYCODE_LANGUAGE_SWITCH to "Language Switch", + KeyEvent.KEYCODE_MANNER_MODE to "Manner Mode", + KeyEvent.KEYCODE_3D_MODE to "3D Mode", + KeyEvent.KEYCODE_CONTACTS to "Contacts", + KeyEvent.KEYCODE_CALENDAR to "Calendar", + KeyEvent.KEYCODE_MUSIC to "Music", + KeyEvent.KEYCODE_CALCULATOR to "Calculator", + KeyEvent.KEYCODE_ZENKAKU_HANKAKU to "Zenkaku Hankaku", + KeyEvent.KEYCODE_EISU to "Eisu", + KeyEvent.KEYCODE_MUHENKAN to "Muhenkan", + KeyEvent.KEYCODE_HENKAN to "Henkan", + KeyEvent.KEYCODE_KATAKANA_HIRAGANA to "Katakana Hiragana", + KeyEvent.KEYCODE_YEN to "Yen", + KeyEvent.KEYCODE_RO to "Ro", + KeyEvent.KEYCODE_KANA to "Kana", + KeyEvent.KEYCODE_ASSIST to "Assist", + KeyEvent.KEYCODE_BRIGHTNESS_DOWN to "Brightness Down", + KeyEvent.KEYCODE_BRIGHTNESS_UP to "Brightness Up", + KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK to "Audio Track", + KeyEvent.KEYCODE_PAIRING to "Pairing", + KeyEvent.KEYCODE_MEDIA_TOP_MENU to "Media Top Menu", + KeyEvent.KEYCODE_11 to "11", + KeyEvent.KEYCODE_12 to "12", + KeyEvent.KEYCODE_LAST_CHANNEL to "Last Channel", + KeyEvent.KEYCODE_TV_DATA_SERVICE to "TV Data Service", + KeyEvent.KEYCODE_VOICE_ASSIST to "Voice Assist", + KeyEvent.KEYCODE_TV_RADIO_SERVICE to "TV Radio Service", + KeyEvent.KEYCODE_TV_TELETEXT to "TV Teletext", + KeyEvent.KEYCODE_TV_NUMBER_ENTRY to "TV Number Entry", + KeyEvent.KEYCODE_TV_TERRESTRIAL_ANALOG to "TV Terrestrial Analog", + KeyEvent.KEYCODE_TV_TERRESTRIAL_DIGITAL to "TV Terrestrial Digital", + KeyEvent.KEYCODE_TV_SATELLITE to "TV Satellite", + KeyEvent.KEYCODE_TV_SATELLITE_BS to "TV Satellite BS", + KeyEvent.KEYCODE_TV_SATELLITE_CS to "TV Satellite CS", + KeyEvent.KEYCODE_TV_SATELLITE_SERVICE to "TV Satellite Service", + KeyEvent.KEYCODE_TV_NETWORK to "TV Network", + KeyEvent.KEYCODE_TV_ANTENNA_CABLE to "TV Antenna Cable", + KeyEvent.KEYCODE_TV_INPUT_HDMI_1 to "TV HDMI 1", + KeyEvent.KEYCODE_TV_INPUT_HDMI_2 to "TV HDMI 2", + KeyEvent.KEYCODE_TV_INPUT_HDMI_3 to "TV HDMI 3", + KeyEvent.KEYCODE_TV_INPUT_HDMI_4 to "TV HDMI 4", + KeyEvent.KEYCODE_TV_INPUT_COMPOSITE_1 to "TV Composite 1", + KeyEvent.KEYCODE_TV_INPUT_COMPOSITE_2 to "TV Composite 2", + KeyEvent.KEYCODE_TV_INPUT_COMPONENT_1 to "TV Component 1", + KeyEvent.KEYCODE_TV_INPUT_COMPONENT_2 to "TV Component 2", + KeyEvent.KEYCODE_TV_INPUT_VGA_1 to "TV VGA 1", + KeyEvent.KEYCODE_TV_AUDIO_DESCRIPTION to "TV Audio Description", + KeyEvent.KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP to "TV Audio Description Vol Up", + KeyEvent.KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN to "TV Audio Description Vol Down", + KeyEvent.KEYCODE_TV_ZOOM_MODE to "TV Zoom Mode", + KeyEvent.KEYCODE_TV_CONTENTS_MENU to "TV Contents Menu", + KeyEvent.KEYCODE_TV_MEDIA_CONTEXT_MENU to "TV Media Context Menu", + KeyEvent.KEYCODE_TV_TIMER_PROGRAMMING to "TV Timer Programming", + KeyEvent.KEYCODE_HELP to "Help", + ), + ) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + yieldAll( + listOf( + KeyEvent.KEYCODE_NAVIGATE_PREVIOUS to "Navigate Previous", + KeyEvent.KEYCODE_NAVIGATE_NEXT to "Navigate Next", + KeyEvent.KEYCODE_NAVIGATE_IN to "Navigate In", + KeyEvent.KEYCODE_NAVIGATE_OUT to "Navigate Out", + KeyEvent.KEYCODE_MEDIA_SKIP_FORWARD to "Media Skip Forward", + KeyEvent.KEYCODE_MEDIA_SKIP_BACKWARD to "Media Skip Backward", + KeyEvent.KEYCODE_MEDIA_STEP_FORWARD to "Media Step Forward", + KeyEvent.KEYCODE_MEDIA_STEP_BACKWARD to "Media Step Backward", + ), + ) + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + yieldAll( + listOf( + KeyEvent.KEYCODE_STEM_PRIMARY to "Stem Primary", + KeyEvent.KEYCODE_STEM_1 to "Stem 1", + KeyEvent.KEYCODE_STEM_2 to "Stem 2", + KeyEvent.KEYCODE_STEM_3 to "Stem 3", + KeyEvent.KEYCODE_DPAD_UP_LEFT to "DPAD Up Left", + KeyEvent.KEYCODE_DPAD_DOWN_LEFT to "DPAD Down Left", + KeyEvent.KEYCODE_DPAD_UP_RIGHT to "DPAD Up Right", + KeyEvent.KEYCODE_DPAD_DOWN_RIGHT to "DPAD Down Right", + KeyEvent.KEYCODE_SOFT_SLEEP to "Soft Sleep", + KeyEvent.KEYCODE_CUT to "Cut", + KeyEvent.KEYCODE_COPY to "Copy", + KeyEvent.KEYCODE_PASTE to "Paste", + ), + ) + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) { + yieldAll( + listOf( + KeyEvent.KEYCODE_SYSTEM_NAVIGATION_UP to "System Nav Up", + KeyEvent.KEYCODE_SYSTEM_NAVIGATION_DOWN to "System Nav Down", + KeyEvent.KEYCODE_SYSTEM_NAVIGATION_LEFT to "System Nav Left", + KeyEvent.KEYCODE_SYSTEM_NAVIGATION_RIGHT to "System Nav Right", + ), + ) + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + yield(KeyEvent.KEYCODE_ALL_APPS to "All Apps") + } + }.toMap() + + /** + * Create a text representation of a key event. E.g if the control key was pressed, + * "Ctrl" will be returned + */ + fun keyCodeToString(keyCode: Int): String = NON_CHARACTER_KEY_LABELS[keyCode].let { + if (keyCode >= KEYCODE_TO_SCANCODE_OFFSET || keyCode < 0) { + "scancode $keyCode" + } else { + it ?: "unknown keycode $keyCode" + } + } +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt index 21c0cc4419..9fbfe515d8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.utils.ui -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.actions.pinchscreen.PinchPickCoordinateResult -import io.github.sds100.keymapper.actions.swipescreen.SwipePickCoordinateResult -import io.github.sds100.keymapper.actions.tapscreen.PickCoordinateResult +import io.github.sds100.keymapper.base.actions.ActionData +import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickCoordinateResult +import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickCoordinateResult +import io.github.sds100.keymapper.base.actions.tapscreen.PickCoordinateResult import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.system.apps.ActivityInfo import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutResult diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt index 211f265a2a..43fbf6b1fb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt @@ -8,18 +8,18 @@ import androidx.fragment.app.setFragmentResultListener import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import io.github.sds100.keymapper.NavAppDirections -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.actions.ChooseActionFragment +import io.github.sds100.keymapper.base.actions.ActionData +import io.github.sds100.keymapper.base.actions.ChooseActionFragment import io.github.sds100.keymapper.mapping.actions.keyevent.ChooseKeyCodeFragment -import io.github.sds100.keymapper.actions.keyevent.ConfigKeyEventActionFragment -import io.github.sds100.keymapper.actions.pinchscreen.PinchPickCoordinateResult -import io.github.sds100.keymapper.actions.pinchscreen.PinchPickDisplayCoordinateFragment -import io.github.sds100.keymapper.actions.sound.ChooseSoundFileFragment -import io.github.sds100.keymapper.actions.swipescreen.SwipePickCoordinateResult -import io.github.sds100.keymapper.actions.swipescreen.SwipePickDisplayCoordinateFragment -import io.github.sds100.keymapper.actions.tapscreen.PickCoordinateResult -import io.github.sds100.keymapper.actions.tapscreen.PickDisplayCoordinateFragment -import io.github.sds100.keymapper.actions.uielement.InteractUiElementFragment +import io.github.sds100.keymapper.base.actions.keyevent.ConfigKeyEventActionFragment +import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickCoordinateResult +import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickDisplayCoordinateFragment +import io.github.sds100.keymapper.base.actions.sound.ChooseSoundFileFragment +import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickCoordinateResult +import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickDisplayCoordinateFragment +import io.github.sds100.keymapper.base.actions.tapscreen.PickCoordinateResult +import io.github.sds100.keymapper.base.actions.tapscreen.PickDisplayCoordinateFragment +import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementFragment import io.github.sds100.keymapper.constraints.ChooseConstraintFragment import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.system.apps.ActivityInfo diff --git a/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt b/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt index 008c9ceba3..4d83dec3eb 100644 --- a/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt @@ -3,8 +3,8 @@ package io.github.sds100.keymapper import com.github.salomonbrys.kotson.get import com.google.gson.Gson import com.google.gson.JsonParser -import io.github.sds100.keymapper.actions.sound.SoundFileInfo -import io.github.sds100.keymapper.actions.sound.SoundsManager +import io.github.sds100.keymapper.base.actions.sound.SoundFileInfo +import io.github.sds100.keymapper.base.actions.sound.SoundsManager import io.github.sds100.keymapper.backup.BackupContent import io.github.sds100.keymapper.backup.BackupManagerImpl import io.github.sds100.keymapper.backup.RestoreType @@ -22,7 +22,7 @@ import io.github.sds100.keymapper.data.repositories.FakePreferenceRepository import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository import io.github.sds100.keymapper.data.repositories.GroupRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.base.keymaps.KeyMapRepository +import io.github.sds100.keymapper.data.repositories.KeyMapRepository import io.github.sds100.keymapper.system.files.FakeFileAdapter import io.github.sds100.keymapper.system.files.IFile import io.github.sds100.keymapper.system.files.JavaFile diff --git a/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt index dc3bd2aae5..1a9f59a943 100644 --- a/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper import android.view.KeyEvent -import io.github.sds100.keymapper.actions.Action -import io.github.sds100.keymapper.actions.ActionData +import io.github.sds100.keymapper.base.actions.Action +import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCaseController diff --git a/base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt b/base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt index 76b807a852..61d4b43f13 100644 --- a/base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt +++ b/base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper -import io.github.sds100.keymapper.base.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.DispatcherProvider import kotlinx.coroutines.test.TestDispatcher diff --git a/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt index 3c90cb263a..580c035dca 100644 --- a/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.actions import android.view.KeyEvent import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.base.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter diff --git a/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt index 98e1115cbb..e3bdc2ed16 100644 --- a/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt @@ -3,10 +3,10 @@ package io.github.sds100.keymapper.actions import android.view.InputDevice import android.view.KeyEvent import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.system.accessibility.IAccessibilityService +import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.system.devices.FakeDevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo -import io.github.sds100.keymapper.system.inputmethod.ImeInputEventInjector +import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.popup.PopupMessageAdapter import io.github.sds100.keymapper.base.utils.InputEventType diff --git a/base/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt b/base/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt index b348c05cd9..9ad8d977ab 100644 --- a/base/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.actions.keyevents import androidx.arch.core.executor.testing.InstantTaskExecutorRule -import io.github.sds100.keymapper.actions.keyevent.ConfigKeyEventActionViewModel -import io.github.sds100.keymapper.actions.keyevent.ConfigKeyEventUseCase +import io.github.sds100.keymapper.base.actions.keyevent.ConfigKeyEventActionViewModel +import io.github.sds100.keymapper.base.actions.keyevent.ConfigKeyEventUseCase import io.github.sds100.keymapper.system.devices.InputDeviceInfo import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt index 15aad4cee1..178152e93d 100644 --- a/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt @@ -2,11 +2,11 @@ package io.github.sds100.keymapper.keymaps import android.view.KeyEvent import androidx.arch.core.executor.testing.InstantTaskExecutorRule -import io.github.sds100.keymapper.actions.Action -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.actions.ActionErrorSnapshot -import io.github.sds100.keymapper.actions.PerformActionsUseCase -import io.github.sds100.keymapper.actions.RepeatMode +import io.github.sds100.keymapper.base.actions.Action +import io.github.sds100.keymapper.base.actions.ActionData +import io.github.sds100.keymapper.base.actions.ActionErrorSnapshot +import io.github.sds100.keymapper.base.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.actions.RepeatMode import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.ConstraintMode @@ -63,7 +63,7 @@ import org.mockito.kotlin.never import org.mockito.kotlin.times import org.mockito.kotlin.verify import org.mockito.kotlin.whenever -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.withFlag @ExperimentalCoroutinesApi @RunWith(JUnitParamsRunner::class) diff --git a/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt index b079e32b05..34e1aae944 100644 --- a/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt @@ -1,10 +1,10 @@ package io.github.sds100.keymapper.keymaps -import io.github.sds100.keymapper.actions.Action -import io.github.sds100.keymapper.actions.ActionData -import io.github.sds100.keymapper.actions.ActionErrorSnapshot -import io.github.sds100.keymapper.actions.PerformActionsUseCase -import io.github.sds100.keymapper.actions.RepeatMode +import io.github.sds100.keymapper.base.actions.Action +import io.github.sds100.keymapper.base.actions.ActionData +import io.github.sds100.keymapper.base.actions.ActionErrorSnapshot +import io.github.sds100.keymapper.base.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.actions.RepeatMode import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase diff --git a/base/src/test/java/io/github/sds100/keymapper/util/TestConstraintSnapshot.kt b/base/src/test/java/io/github/sds100/keymapper/util/TestConstraintSnapshot.kt index 6e2d46ec34..9561b841b1 100644 --- a/base/src/test/java/io/github/sds100/keymapper/util/TestConstraintSnapshot.kt +++ b/base/src/test/java/io/github/sds100/keymapper/util/TestConstraintSnapshot.kt @@ -4,7 +4,7 @@ import io.github.sds100.keymapper.constraints.Constraint import io.github.sds100.keymapper.constraints.ConstraintSnapshot import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.system.display.Orientation +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.system.phone.CallState import timber.log.Timber import java.time.LocalTime diff --git a/system/src/main/java/io/github/sds100/keymapper/common/utils/BuildUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/BuildUtils.kt similarity index 100% rename from system/src/main/java/io/github/sds100/keymapper/common/utils/BuildUtils.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/BuildUtils.kt diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/FlagUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/FlagUtils.kt new file mode 100644 index 0000000000..e152dcd305 --- /dev/null +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/FlagUtils.kt @@ -0,0 +1,43 @@ +/* + * Copyright 2019-2021 Louis Cognault Ayeva Derman. Use of this source code is governed by the Apache 2.0 license. + */ + +@file:Suppress("NOTHING_TO_INLINE") + +package io.github.sds100.keymapper.common.utils + +import kotlin.experimental.and +import kotlin.experimental.inv +import kotlin.experimental.or + +inline fun Long.hasFlag(flag: Long): Boolean = flag and this == flag +inline fun Long.withFlag(flag: Long): Long = this or flag +inline fun Long.minusFlag(flag: Long): Long = this and flag.inv() + +inline fun Int.hasFlag(flag: Int): Boolean = flag and this == flag +inline fun Int.withFlag(flag: Int): Int = this or flag +inline fun Int.minusFlag(flag: Int): Int = this and flag.inv() + +inline fun Short.hasFlag(flag: Short): Boolean = flag and this == flag +inline fun Short.withFlag(flag: Short): Short = this or flag +inline fun Short.minusFlag(flag: Short): Short = this and flag.inv() + +inline fun Byte.hasFlag(flag: Byte): Boolean = flag and this == flag +inline fun Byte.withFlag(flag: Byte): Byte = this or flag +inline fun Byte.minusFlag(flag: Byte): Byte = this and flag.inv() + +inline fun ULong.hasFlag(flag: ULong): Boolean = flag and this == flag +inline fun ULong.withFlag(flag: ULong): ULong = this or flag +inline fun ULong.minusFlag(flag: ULong): ULong = this and flag.inv() + +inline fun UInt.hasFlag(flag: UInt): Boolean = flag and this == flag +inline fun UInt.withFlag(flag: UInt): UInt = this or flag +inline fun UInt.minusFlag(flag: UInt): UInt = this and flag.inv() + +inline fun UShort.hasFlag(flag: UShort): Boolean = flag and this == flag +inline fun UShort.withFlag(flag: UShort): UShort = this or flag +inline fun UShort.minusFlag(flag: UShort): UShort = this and flag.inv() + +inline fun UByte.hasFlag(flag: UByte): Boolean = flag and this == flag +inline fun UByte.withFlag(flag: UByte): UByte = this or flag +inline fun UByte.minusFlag(flag: UByte): UByte = this and flag.inv() diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/NodeInteractionType.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/NodeInteractionType.kt similarity index 90% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/NodeInteractionType.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/NodeInteractionType.kt index 6d22d64097..5ea59249aa 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/NodeInteractionType.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/NodeInteractionType.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.system.accessibility +package io.github.sds100.keymapper.common.utils import android.view.accessibility.AccessibilityNodeInfo diff --git a/system/src/main/java/io/github/sds100/keymapper/system/display/Orientation.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/Orientation.kt similarity index 68% rename from system/src/main/java/io/github/sds100/keymapper/system/display/Orientation.kt rename to common/src/main/java/io/github/sds100/keymapper/common/utils/Orientation.kt index bf392f9fe5..2a9f7d67a8 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/display/Orientation.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/Orientation.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.system.display +package io.github.sds100.keymapper.common.utils enum class Orientation { diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/Result.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/Result.kt index c077c31186..f147661744 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/utils/Result.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/Result.kt @@ -14,7 +14,6 @@ data class Success(val value: T) : Result() abstract class Error : Result() { data class Exception(val exception: java.lang.Exception) : Error() data class SystemFeatureNotSupported(val feature: String) : Error() - data class ExtraNotFound(val extraId: String) : Error() data class SdkVersionTooLow(val minSdk: Int) : Error() data class SdkVersionTooHigh(val maxSdk: Int) : Error() data class InputMethodNotFound(val imeLabel: String) : Error() diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 798821646c..c8aad1bd95 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -53,6 +53,7 @@ dependencies { implementation(libs.androidx.datastore.preferences) implementation(libs.androidx.preference.ktx) implementation(libs.kotson) + implementation(libs.jakewharton.timber) implementation(libs.dagger.hilt.android) ksp(libs.dagger.hilt.android.compiler) diff --git a/data/src/main/java/io/github/sds100/keymapper/data/DataError.kt b/data/src/main/java/io/github/sds100/keymapper/data/DataError.kt new file mode 100644 index 0000000000..5313bff94b --- /dev/null +++ b/data/src/main/java/io/github/sds100/keymapper/data/DataError.kt @@ -0,0 +1,6 @@ +package io.github.sds100.keymapper.data +import io.github.sds100.keymapper.common.utils.Error +object DataError { + data class ExtraNotFound(val extraId: String) : Error() + +} \ No newline at end of file diff --git a/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstantTypeConverters.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstantTypeConverters.kt index d4aa216be7..efb8c03a62 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstantTypeConverters.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/ConstantTypeConverters.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.data.db.typeconverter -import io.github.sds100.keymapper.system.display.Orientation +import io.github.sds100.keymapper.common.utils.Orientation object ConstantTypeConverters { val ORIENTATION_MAP = mapOf( diff --git a/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt index e5f0704f5e..b44cda1ddb 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/NodeInteractionTypeSetTypeConverter.kt @@ -1,9 +1,7 @@ package io.github.sds100.keymapper.data.db.typeconverter import androidx.room.TypeConverter -import io.github.sds100.keymapper.actions.uielement.NodeInteractionType - - +import io.github.sds100.keymapper.common.utils.NodeInteractionType class NodeInteractionTypeSetTypeConverter { @TypeConverter diff --git a/data/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt index e257148fd5..c285376e6c 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/AccessibilityNodeEntity.kt @@ -4,6 +4,7 @@ import android.os.Parcelable import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey +import io.github.sds100.keymapper.common.utils.NodeInteractionType import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.KEY_ACTIONS import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.KEY_CLASS_NAME import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.KEY_CONTENT_DESCRIPTION @@ -16,7 +17,6 @@ import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.KEY import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.KEY_UNIQUE_ID import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.KEY_VIEW_RESOURCE_ID import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao.Companion.TABLE_NAME -import io.github.sds100.keymapper.system.accessibility.NodeInteractionType import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable diff --git a/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt index 4856d28f15..10b296f49e 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt @@ -4,7 +4,9 @@ import android.os.Parcelable import com.github.salomonbrys.kotson.byString import com.github.salomonbrys.kotson.jsonDeserializer import com.google.gson.annotations.SerializedName +import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.data.DataError import kotlinx.parcelize.Parcelize @Parcelize @@ -32,7 +34,7 @@ data class EntityExtra( fun List.getData(extraId: String): Result { return find { it.id == extraId }.let { - it ?: return@let Error.ExtraNotFound(extraId) + it ?: return@let DataError.ExtraNotFound(extraId) Success(it.data) } diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt index 3cc5416217..edc4a961c9 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration11To12.kt @@ -15,7 +15,7 @@ import com.google.gson.JsonArray import com.google.gson.JsonElement import com.google.gson.JsonObject import com.google.gson.JsonParser -import io.github.sds100.keymapper.base.utils.firstBlocking +import io.github.sds100.keymapper.common.utils.firstBlocking /** * Move fingerprint maps from data store into sqlite database and move device info list information diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt index fb0fae2439..b60332536d 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt @@ -14,7 +14,7 @@ import com.google.gson.JsonObject import com.google.gson.JsonParser import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity -import splitties.bitflags.hasFlag +import io.github.sds100.keymapper.common.utils.hasFlag import timber.log.Timber diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt index 59b3cfcafa..0a68464d71 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt @@ -8,7 +8,7 @@ import com.github.salomonbrys.kotson.get import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.JsonParser -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.withFlag diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt index 10c4541487..a6fecdceac 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt @@ -12,8 +12,8 @@ import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.JsonParser import io.github.sds100.keymapper.data.entities.ActionEntity -import splitties.bitflags.hasFlag -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.withFlag diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt index 4e0d96dd9e..03afca82bc 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt @@ -11,9 +11,9 @@ import com.google.gson.GsonBuilder import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity -import splitties.bitflags.hasFlag -import splitties.bitflags.minusFlag -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.minusFlag +import io.github.sds100.keymapper.common.utils.withFlag diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration9To10.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration9To10.kt index 1d5b846cce..f0c53e47c0 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration9To10.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration9To10.kt @@ -13,9 +13,9 @@ import com.google.gson.JsonArray import com.google.gson.JsonElement import com.google.gson.JsonObject import com.google.gson.JsonParser -import splitties.bitflags.hasFlag -import splitties.bitflags.minusFlag -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.minusFlag +import io.github.sds100.keymapper.common.utils.withFlag /** * Move the action option "show performing toast when performing" to a trigger option. diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt index 541790302b..b87e667f1b 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintMapMigration0To1.kt @@ -4,9 +4,9 @@ import com.github.salomonbrys.kotson.byArray import com.github.salomonbrys.kotson.byInt import com.github.salomonbrys.kotson.set import com.google.gson.JsonObject -import splitties.bitflags.hasFlag -import splitties.bitflags.minusFlag -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.minusFlag +import io.github.sds100.keymapper.common.utils.withFlag /** * Move the action option "show performing toast when performing" to a trigger option. diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt index 735dbab356..c14be863c3 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.data.entities.FingerprintTriggerKeyEntity import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.data.entities.TriggerEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity -import splitties.bitflags.hasFlag +import io.github.sds100.keymapper.common.utils.hasFlag object FingerprintToKeyMapMigration { fun migrate(entity: FingerprintMapEntity): KeyMapEntity? { diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt index c0976c442d..8ca87f7ef6 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt @@ -3,8 +3,8 @@ package io.github.sds100.keymapper.data.repositories import io.github.sds100.keymapper.data.db.dao.FloatingButtonDao import io.github.sds100.keymapper.data.entities.FloatingButtonEntity import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout -import io.github.sds100.keymapper.base.utils.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt index 8afded7195..8db8d19b18 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt @@ -4,8 +4,8 @@ import android.database.sqlite.SQLiteConstraintException import io.github.sds100.keymapper.data.db.dao.FloatingLayoutDao import io.github.sds100.keymapper.data.entities.FloatingLayoutEntity import io.github.sds100.keymapper.data.entities.FloatingLayoutEntityWithButtons -import io.github.sds100.keymapper.base.utils.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt index de118bb02c..21c9164d64 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt @@ -4,8 +4,8 @@ import io.github.sds100.keymapper.data.db.dao.GroupDao import io.github.sds100.keymapper.data.entities.GroupEntity import io.github.sds100.keymapper.data.entities.GroupEntityWithChildren import io.github.sds100.keymapper.data.entities.KeyMapEntitiesWithGroup -import io.github.sds100.keymapper.base.utils.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.common.utils.DispatcherProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/KeyMapRepository.kt similarity index 93% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapRepository.kt rename to data/src/main/java/io/github/sds100/keymapper/data/repositories/KeyMapRepository.kt index 20c2df9dae..473235963c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/KeyMapRepository.kt @@ -1,7 +1,7 @@ -package io.github.sds100.keymapper.base.keymaps +package io.github.sds100.keymapper.data.repositories -import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.data.entities.KeyMapEntity import kotlinx.coroutines.flow.Flow interface KeyMapRepository { @@ -20,4 +20,4 @@ interface KeyMapRepository { fun enableById(vararg uid: String) fun disableById(vararg uid: String) fun moveToGroup(groupUid: String?, vararg uid: String) -} +} \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/LogRepository.kt similarity index 86% rename from base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt rename to data/src/main/java/io/github/sds100/keymapper/data/repositories/LogRepository.kt index aa0d291008..1df1d3479a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/LogRepository.kt @@ -1,10 +1,9 @@ -package io.github.sds100.keymapper.base.logging +package io.github.sds100.keymapper.data.repositories -import io.github.sds100.keymapper.data.entities.LogEntryEntity import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.data.entities.LogEntryEntity import kotlinx.coroutines.flow.Flow - interface LogRepository { val log: Flow>> fun insert(entry: LogEntryEntity) diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt index d4f67e4a55..ac79534c03 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt @@ -5,11 +5,10 @@ import io.github.sds100.keymapper.data.db.dao.KeyMapDao import io.github.sds100.keymapper.data.entities.FingerprintMapEntity import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.data.migration.fingerprintmaps.FingerprintToKeyMapMigration -import io.github.sds100.keymapper.base.keymaps.KeyMapRepository -import io.github.sds100.keymapper.base.utils.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.splitIntoBatches +import io.github.sds100.keymapper.common.utils.splitIntoBatches import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt index ecdb1fe8ea..83ee0bf5fe 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt @@ -1,9 +1,8 @@ package io.github.sds100.keymapper.data.repositories +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.data.db.dao.LogEntryDao import io.github.sds100.keymapper.data.entities.LogEntryEntity -import io.github.sds100.keymapper.logging.LogRepository -import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow @@ -16,7 +15,6 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch - class RoomLogRepository( private val coroutineScope: CoroutineScope, private val dao: LogEntryDao, diff --git a/settings.gradle.kts b/settings.gradle.kts index eb729a3931..77ec0ecd1e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -30,3 +30,4 @@ include(":api") include(":system") include(":common") include(":data") +include(":shizuku") diff --git a/shizuku/.gitignore b/shizuku/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/shizuku/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/shizuku/build.gradle.kts b/shizuku/build.gradle.kts new file mode 100644 index 0000000000..a959a4e481 --- /dev/null +++ b/shizuku/build.gradle.kts @@ -0,0 +1,43 @@ +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) +} + +android { + namespace = "io.github.sds100.keymapper.shizuku" + compileSdk = 35 + + defaultConfig { + minSdk = 21 + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } +} + +dependencies { + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.appcompat) + implementation(libs.google.android.material) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.test.ext.junit) + androidTestImplementation(libs.androidx.espresso.core) +} \ No newline at end of file diff --git a/shizuku/consumer-rules.pro b/shizuku/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/shizuku/proguard-rules.pro b/shizuku/proguard-rules.pro new file mode 100644 index 0000000000..481bb43481 --- /dev/null +++ b/shizuku/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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/shizuku/src/androidTest/java/io/github/sds100/keymapper/shizuku/ExampleInstrumentedTest.kt b/shizuku/src/androidTest/java/io/github/sds100/keymapper/shizuku/ExampleInstrumentedTest.kt new file mode 100644 index 0000000000..44e338cfc3 --- /dev/null +++ b/shizuku/src/androidTest/java/io/github/sds100/keymapper/shizuku/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package io.github.sds100.keymapper.shizuku + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("io.github.sds100.keymapper.shizuku.test", appContext.packageName) + } +} \ No newline at end of file diff --git a/shizuku/src/main/AndroidManifest.xml b/shizuku/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..a5918e68ab --- /dev/null +++ b/shizuku/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/shizuku/src/test/java/io/github/sds100/keymapper/shizuku/ExampleUnitTest.kt b/shizuku/src/test/java/io/github/sds100/keymapper/shizuku/ExampleUnitTest.kt new file mode 100644 index 0000000000..c372bb7be5 --- /dev/null +++ b/shizuku/src/test/java/io/github/sds100/keymapper/shizuku/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package io.github.sds100.keymapper.shizuku + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/system/build.gradle.kts b/system/build.gradle.kts index 631c1525e4..278b76cdc2 100644 --- a/system/build.gradle.kts +++ b/system/build.gradle.kts @@ -31,6 +31,10 @@ android { kotlinOptions { jvmTarget = "11" } + + buildFeatures { + aidl = true + } } dependencies { @@ -45,4 +49,7 @@ dependencies { implementation(libs.jakewharton.timber) implementation(libs.dagger.hilt.android) ksp(libs.dagger.hilt.android.compiler) + implementation(libs.net.lingala.zip4j) + implementation(libs.anggrayudi.storage) + implementation(libs.androidx.core.ktx) } diff --git a/system/src/main/AndroidManifest.xml b/system/src/main/AndroidManifest.xml index 11ed17254c..63b5ee0049 100644 --- a/system/src/main/AndroidManifest.xml +++ b/system/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ - + @@ -22,6 +22,11 @@ + + + @@ -65,7 +70,7 @@ + android:permission="android.permission.BIND_QUICK_SETTINGS_TILE" + tools:targetApi="24"> + android:permission="android.permission.BIND_QUICK_SETTINGS_TILE" + tools:targetApi="24"> @@ -113,7 +118,7 @@ { - val state: StateFlow +interface AccessibilityServiceAdapter { + val state: StateFlow + fun invalidateState() /** * @return Whether the service could be started successfully. @@ -32,16 +29,16 @@ interface ServiceAdapter { /** * Send an event to the service. */ - suspend fun send(event: E): Result<*> + suspend fun send(event: AccessibilityServiceEvent): Result<*> /** * Send an event to the service asynchronously. This method * will return immediately and you won't be notified of whether it is sent. */ - fun sendAsync(event: E) + fun sendAsync(event: AccessibilityServiceEvent) /** * A flow of events coming from the service. */ - val eventReceiver: SharedFlow + val eventReceiver: SharedFlow } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceEvent.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceEvent.kt new file mode 100644 index 0000000000..0c6fa47668 --- /dev/null +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceEvent.kt @@ -0,0 +1,38 @@ +package io.github.sds100.keymapper.system.accessibility + +import kotlinx.serialization.Serializable + +@Serializable +abstract class AccessibilityServiceEvent { + + @Serializable + data class Ping(val key: String) : AccessibilityServiceEvent() + + @Serializable + data class Pong(val key: String) : AccessibilityServiceEvent() + + @Serializable + data object OnHideKeyboardEvent : AccessibilityServiceEvent() + + @Serializable + data object OnShowKeyboardEvent : AccessibilityServiceEvent() + + @Serializable + data object HideKeyboard : AccessibilityServiceEvent() + + @Serializable + data object ShowKeyboard : AccessibilityServiceEvent() + + @Serializable + data class ChangeIme(val imeId: String) : AccessibilityServiceEvent() + + @Serializable + data object DisableService : AccessibilityServiceEvent() + + @Serializable + data class OnInputFocusChange(val isFocussed: Boolean) : AccessibilityServiceEvent() + + @Serializable + data class EnableInputMethod(val imeId: String) : AccessibilityServiceEvent() + +} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceState.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceState.kt similarity index 71% rename from system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceState.kt rename to system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceState.kt index 0fb51daae4..f762a294b5 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ServiceState.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceState.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.accessibility -enum class ServiceState { +enum class AccessibilityServiceState { ENABLED, CRASHED, DISABLED, diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt index 7c264b84ed..7ea2ade895 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/ObserveEnabledAccessibilityServicesJob.kt @@ -3,13 +3,19 @@ package io.github.sds100.keymapper.system.accessibility import android.app.job.JobParameters import android.app.job.JobService import android.os.Build -import io.github.sds100.keymapper.KeyMapperApp +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.system.JobSchedulerHelper +import javax.inject.Inject - +@AndroidEntryPoint class ObserveEnabledAccessibilityServicesJob : JobService() { + + @Inject + lateinit var accessibilityServiceAdapter: AccessibilityServiceAdapter + override fun onStartJob(params: JobParameters?): Boolean { - (application!! as KeyMapperApp).accessibilityServiceAdapter.updateWhetherServiceIsEnabled() + accessibilityServiceAdapter.invalidateState() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { JobSchedulerHelper.observeEnabledAccessibilityServices(application!!) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt index ce92a86a96..f5157a9f44 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt @@ -13,22 +13,22 @@ import androidx.core.content.pm.ShortcutInfoCompat import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.graphics.drawable.IconCompat import androidx.core.graphics.drawable.toBitmap -import io.github.sds100.keymapper.api.LaunchKeyMapShortcutActivity +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.success -import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import java.util.UUID -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton @Singleton class AndroidAppShortcutAdapter @Inject constructor( - @ApplicationContext private val context: Context + @ApplicationContext private val context: Context, + private val keyMapShortcutActivityIntentBuilder: KeyMapShortcutActivityIntentBuilder, ) : AppShortcutAdapter { private val ctx = context.applicationContext @@ -89,14 +89,8 @@ class AndroidAppShortcutAdapter @Inject constructor( val builder = ShortcutInfoCompat.Builder(ctx, UUID.randomUUID().toString()).apply { setIcon(icon) setShortLabel(label) - - Intent(ctx, LaunchKeyMapShortcutActivity::class.java).apply { - action = intentAction - - putExtras(intentExtras) - - setIntent(this) - } + val intent = keyMapShortcutActivityIntentBuilder.build(intentAction, intentExtras) + setIntent(intent) } return builder.build() diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/KeyMapShortcutActivityIntentBuilder.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/KeyMapShortcutActivityIntentBuilder.kt new file mode 100644 index 0000000000..b25a2cac13 --- /dev/null +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/KeyMapShortcutActivityIntentBuilder.kt @@ -0,0 +1,11 @@ +package io.github.sds100.keymapper.system.apps + +import android.content.Intent +import android.os.Bundle + +interface KeyMapShortcutActivityIntentBuilder { + fun build( + intentAction: String, + intentExtras: Bundle, + ): Intent +} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt index e7bfdb3e9c..bbb3dcf094 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothBroadcastReceiver.kt @@ -11,7 +11,7 @@ import javax.inject.Inject class BluetoothBroadcastReceiver : BroadcastReceiver() { @Inject - private lateinit var bluetoothAdapter: AndroidBluetoothAdapter + lateinit var bluetoothAdapter: AndroidBluetoothAdapter override fun onReceive(context: Context?, intent: Intent?) { context ?: return diff --git a/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt deleted file mode 100644 index 75556a7f03..0000000000 --- a/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraLensUtils.kt +++ /dev/null @@ -1,10 +0,0 @@ -package io.github.sds100.keymapper.system.camera - -import io.github.sds100.keymapper.R - -object CameraLensUtils { - fun getLabel(lens: CameraLens) = when (lens) { - CameraLens.FRONT -> R.string.lens_front - CameraLens.BACK -> R.string.lens_back - } -} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt index 62434da91c..998e9666ac 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt @@ -5,6 +5,7 @@ import android.bluetooth.BluetoothManager import android.content.Context import android.hardware.input.InputManager import android.os.Handler +import android.os.Looper import android.view.InputDevice import androidx.core.content.getSystemService import io.github.sds100.keymapper.common.utils.Error @@ -14,7 +15,7 @@ import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.ifIsData +import io.github.sds100.keymapper.common.utils.ifIsData import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -24,7 +25,6 @@ import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import splitties.mainthread.mainLooper import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton @@ -95,7 +95,7 @@ class AndroidDevicesAdapter @Inject constructor( updateInputDevices() } }, - Handler(mainLooper), + Handler(Looper.getMainLooper()), ) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt index 4a21e3601b..567f67e904 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt @@ -9,12 +9,14 @@ import android.provider.Settings import android.view.Surface import androidx.core.content.ContextCompat import androidx.core.content.getSystemService +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.SizeKM import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.getRealDisplaySize import io.github.sds100.keymapper.system.SettingsUtils -import io.github.sds100.keymapper.base.utils.SizeKM -import io.github.sds100.keymapper.base.utils.getRealDisplaySize import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow @@ -22,7 +24,6 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.flow.updateAndGet import kotlinx.coroutines.launch -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton diff --git a/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt index bc4281cf57..0ccf3a5800 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt @@ -1,7 +1,8 @@ package io.github.sds100.keymapper.system.display import io.github.sds100.keymapper.common.utils.Result -import io.github.sds100.keymapper.base.utils.SizeKM +import io.github.sds100.keymapper.common.utils.SizeKM +import io.github.sds100.keymapper.common.utils.Orientation import kotlinx.coroutines.flow.Flow interface DisplayAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt index 62372a6439..6042c24aed 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt @@ -10,7 +10,6 @@ import androidx.core.content.FileProvider import androidx.core.net.toUri import androidx.documentfile.provider.DocumentFile import com.anggrayudi.storage.file.toDocumentFile -import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success @@ -21,12 +20,14 @@ import java.io.File import java.io.InputStream import java.util.UUID import dagger.hilt.android.qualifiers.ApplicationContext +import io.github.sds100.keymapper.common.BuildConfigProvider import javax.inject.Inject import javax.inject.Singleton @Singleton class AndroidFileAdapter @Inject constructor( - @ApplicationContext private val context: Context + @ApplicationContext private val context: Context, + private val buildConfigProvider: BuildConfigProvider ) : FileAdapter { private val ctx = context.applicationContext private val contentResolver: ContentResolver = ctx.contentResolver @@ -134,7 +135,7 @@ class AndroidFileAdapter @Inject constructor( override fun getPublicUriForPrivateFile(privateFile: IFile): String { return FileProvider.getUriForFile( ctx, - "${Constants.PACKAGE_NAME}.provider", + "${buildConfigProvider.packageName}.provider", privateFile.toJavaFile(), ).toString() } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt index 9451307351..ace7de6e71 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputevents/InputEventUtils.kt @@ -4,339 +4,9 @@ import android.os.Build import android.view.InputDevice import android.view.InputEvent import android.view.KeyEvent -import io.github.sds100.keymapper.R -import splitties.bitflags.withFlag +import io.github.sds100.keymapper.common.utils.withFlag object InputEventUtils { - /** - * Maps keys which aren't single characters like the Control keys to a string representation - */ - private val NON_CHARACTER_KEY_LABELS: Map - get() = sequence { - yieldAll( - listOf( - KeyEvent.KEYCODE_VOLUME_DOWN to "Volume down", - KeyEvent.KEYCODE_VOLUME_UP to "Volume up", - - KeyEvent.KEYCODE_CTRL_LEFT to "Ctrl Left", - KeyEvent.KEYCODE_CTRL_RIGHT to "Ctrl Right", - - KeyEvent.KEYCODE_SHIFT_LEFT to "Shift Left", - KeyEvent.KEYCODE_SHIFT_RIGHT to "Shift Right", - - KeyEvent.KEYCODE_ALT_LEFT to "Alt Left", - KeyEvent.KEYCODE_ALT_RIGHT to "Alt Right", - - KeyEvent.KEYCODE_DPAD_LEFT to "Left", - KeyEvent.KEYCODE_DPAD_RIGHT to "Right", - KeyEvent.KEYCODE_DPAD_DOWN to "Down", - KeyEvent.KEYCODE_DPAD_UP to "Up", - - KeyEvent.KEYCODE_ENTER to "Enter", - KeyEvent.KEYCODE_HOME to "Home", - KeyEvent.KEYCODE_BACK to "Back", - KeyEvent.KEYCODE_MENU to "Menu", - KeyEvent.KEYCODE_APP_SWITCH to "Recents", - KeyEvent.KEYCODE_DEL to "Delete", - KeyEvent.KEYCODE_TAB to "Tab", - KeyEvent.KEYCODE_SPACE to "Space", - KeyEvent.KEYCODE_SEARCH to "Search", - KeyEvent.KEYCODE_CAPS_LOCK to "Caps Lock", - KeyEvent.KEYCODE_HEADSETHOOK to "Headset Button", - KeyEvent.KEYCODE_NUM_LOCK to "Num Lock", - - KeyEvent.KEYCODE_BUTTON_1 to "Button 1", - KeyEvent.KEYCODE_BUTTON_2 to "Button 2", - KeyEvent.KEYCODE_BUTTON_3 to "Button 3", - KeyEvent.KEYCODE_BUTTON_4 to "Button 4", - KeyEvent.KEYCODE_BUTTON_5 to "Button 5", - KeyEvent.KEYCODE_BUTTON_6 to "Button 6", - KeyEvent.KEYCODE_BUTTON_7 to "Button 7", - KeyEvent.KEYCODE_BUTTON_8 to "Button 8", - KeyEvent.KEYCODE_BUTTON_9 to "Button 9", - KeyEvent.KEYCODE_BUTTON_10 to "Button 10", - KeyEvent.KEYCODE_BUTTON_11 to "Button 11", - KeyEvent.KEYCODE_BUTTON_12 to "Button 12", - KeyEvent.KEYCODE_BUTTON_13 to "Button 13", - KeyEvent.KEYCODE_BUTTON_14 to "Button 14", - KeyEvent.KEYCODE_BUTTON_15 to "Button 15", - KeyEvent.KEYCODE_BUTTON_16 to "Button 16", - - KeyEvent.KEYCODE_BUTTON_L1 to "Button L1", - KeyEvent.KEYCODE_BUTTON_L2 to "Button L2", - KeyEvent.KEYCODE_BUTTON_R1 to "Button R1", - KeyEvent.KEYCODE_BUTTON_R2 to "Button R2", - - KeyEvent.KEYCODE_BUTTON_A to "Button A", - KeyEvent.KEYCODE_BUTTON_B to "Button B", - KeyEvent.KEYCODE_BUTTON_C to "Button C", - - KeyEvent.KEYCODE_BUTTON_X to "Button X", - KeyEvent.KEYCODE_BUTTON_Y to "Button Y", - KeyEvent.KEYCODE_BUTTON_Z to "Button Z", - - KeyEvent.KEYCODE_BUTTON_THUMBL to "Thumb Left", - KeyEvent.KEYCODE_BUTTON_THUMBR to "Thumb Right", - - KeyEvent.KEYCODE_BUTTON_START to "Start", - KeyEvent.KEYCODE_BUTTON_SELECT to "Select", - - KeyEvent.KEYCODE_SOFT_LEFT to "SOFT_LEFT", - KeyEvent.KEYCODE_SOFT_RIGHT to "SOFT_RIGHT", - KeyEvent.KEYCODE_CALL to "Call", - KeyEvent.KEYCODE_ENDCALL to "End Call", - KeyEvent.KEYCODE_0 to "0", - KeyEvent.KEYCODE_1 to "1", - KeyEvent.KEYCODE_2 to "2", - KeyEvent.KEYCODE_3 to "3", - KeyEvent.KEYCODE_4 to "4", - KeyEvent.KEYCODE_5 to "5", - KeyEvent.KEYCODE_6 to "6", - KeyEvent.KEYCODE_7 to "7", - KeyEvent.KEYCODE_8 to "8", - KeyEvent.KEYCODE_9 to "9", - KeyEvent.KEYCODE_STAR to "*", - KeyEvent.KEYCODE_POUND to "#", - KeyEvent.KEYCODE_DPAD_CENTER to "DPAD Center", - KeyEvent.KEYCODE_POWER to "Power", - KeyEvent.KEYCODE_CAMERA to "Camera", - KeyEvent.KEYCODE_CLEAR to "Clear", - KeyEvent.KEYCODE_A to "A", - KeyEvent.KEYCODE_B to "B", - KeyEvent.KEYCODE_C to "C", - KeyEvent.KEYCODE_D to "D", - KeyEvent.KEYCODE_E to "E", - KeyEvent.KEYCODE_F to "F", - KeyEvent.KEYCODE_G to "G", - KeyEvent.KEYCODE_H to "H", - KeyEvent.KEYCODE_I to "I", - KeyEvent.KEYCODE_J to "J", - KeyEvent.KEYCODE_K to "K", - KeyEvent.KEYCODE_L to "L", - KeyEvent.KEYCODE_M to "M", - KeyEvent.KEYCODE_N to "N", - KeyEvent.KEYCODE_O to "O", - KeyEvent.KEYCODE_P to "P", - KeyEvent.KEYCODE_Q to "Q", - KeyEvent.KEYCODE_R to "R", - KeyEvent.KEYCODE_S to "S", - KeyEvent.KEYCODE_T to "T", - KeyEvent.KEYCODE_U to "U", - KeyEvent.KEYCODE_V to "V", - KeyEvent.KEYCODE_W to "W", - KeyEvent.KEYCODE_X to "X", - KeyEvent.KEYCODE_Y to "Y", - KeyEvent.KEYCODE_Z to "Z", - KeyEvent.KEYCODE_COMMA to ",", - KeyEvent.KEYCODE_PERIOD to ".", - KeyEvent.KEYCODE_SYM to "Symbol", - KeyEvent.KEYCODE_EXPLORER to "Explorer", - KeyEvent.KEYCODE_ENVELOPE to "Mail", - KeyEvent.KEYCODE_GRAVE to "`", - KeyEvent.KEYCODE_MINUS to "-", - KeyEvent.KEYCODE_EQUALS to "=", - KeyEvent.KEYCODE_LEFT_BRACKET to "(", - KeyEvent.KEYCODE_RIGHT_BRACKET to ")", - KeyEvent.KEYCODE_BACKSLASH to "\\", - KeyEvent.KEYCODE_SEMICOLON to ";", - KeyEvent.KEYCODE_APOSTROPHE to "'", - KeyEvent.KEYCODE_SLASH to "/", - KeyEvent.KEYCODE_AT to "@", - KeyEvent.KEYCODE_NUM to "Num", - KeyEvent.KEYCODE_FOCUS to "Focus", - KeyEvent.KEYCODE_PLUS to "+", - KeyEvent.KEYCODE_NOTIFICATION to "Notification", - KeyEvent.KEYCODE_SEARCH to "Search", - KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE to "Play/Pause", - KeyEvent.KEYCODE_MEDIA_STOP to "Stop Media", - KeyEvent.KEYCODE_MEDIA_NEXT to "Play Next", - KeyEvent.KEYCODE_MEDIA_PREVIOUS to "Play Previous", - KeyEvent.KEYCODE_MEDIA_REWIND to "Rewind", - KeyEvent.KEYCODE_MEDIA_FAST_FORWARD to "Fast Forward", - KeyEvent.KEYCODE_MUTE to "Mute Microphone", - KeyEvent.KEYCODE_PAGE_UP to "Page Up", - KeyEvent.KEYCODE_PAGE_DOWN to "Page Down", - KeyEvent.KEYCODE_PICTSYMBOLS to "Picture Symbols", - KeyEvent.KEYCODE_SWITCH_CHARSET to "Switch Charset", - KeyEvent.KEYCODE_BUTTON_MODE to "Button Mode", - KeyEvent.KEYCODE_ESCAPE to "Esc", - KeyEvent.KEYCODE_FORWARD_DEL to "Forward Del", - KeyEvent.KEYCODE_SCROLL_LOCK to "Scroll Lock", - KeyEvent.KEYCODE_META_LEFT to "Meta Left", - KeyEvent.KEYCODE_META_RIGHT to "Meta Right", - KeyEvent.KEYCODE_FUNCTION to "Function", - KeyEvent.KEYCODE_SYSRQ to "SYSRQ", - KeyEvent.KEYCODE_BREAK to "Break", - KeyEvent.KEYCODE_MOVE_HOME to "Home", - KeyEvent.KEYCODE_MOVE_END to "End", - KeyEvent.KEYCODE_INSERT to "Insert", - KeyEvent.KEYCODE_FORWARD to "Forward", - KeyEvent.KEYCODE_MEDIA_PLAY to "Play", - KeyEvent.KEYCODE_MEDIA_PAUSE to "Pause", - KeyEvent.KEYCODE_MEDIA_CLOSE to "Media Close", - KeyEvent.KEYCODE_MEDIA_EJECT to "Eject", - KeyEvent.KEYCODE_MEDIA_RECORD to "Media Record", - KeyEvent.KEYCODE_F1 to "F1", - KeyEvent.KEYCODE_F2 to "F2", - KeyEvent.KEYCODE_F3 to "F3", - KeyEvent.KEYCODE_F4 to "F4", - KeyEvent.KEYCODE_F5 to "F5", - KeyEvent.KEYCODE_F6 to "F6", - KeyEvent.KEYCODE_F7 to "F7", - KeyEvent.KEYCODE_F8 to "F8", - KeyEvent.KEYCODE_F9 to "F9", - KeyEvent.KEYCODE_F10 to "F10", - KeyEvent.KEYCODE_F11 to "F11", - KeyEvent.KEYCODE_F12 to "F12", - KeyEvent.KEYCODE_NUMPAD_0 to "Numpad 0", - KeyEvent.KEYCODE_NUMPAD_1 to "Numpad 1", - KeyEvent.KEYCODE_NUMPAD_2 to "Numpad 2", - KeyEvent.KEYCODE_NUMPAD_3 to "Numpad 3", - KeyEvent.KEYCODE_NUMPAD_4 to "Numpad 4", - KeyEvent.KEYCODE_NUMPAD_5 to "Numpad 5", - KeyEvent.KEYCODE_NUMPAD_6 to "Numpad 6", - KeyEvent.KEYCODE_NUMPAD_7 to "Numpad 7", - KeyEvent.KEYCODE_NUMPAD_8 to "Numpad 8", - KeyEvent.KEYCODE_NUMPAD_9 to "Numpad 9", - KeyEvent.KEYCODE_NUMPAD_DIVIDE to "Numpad Divide", - KeyEvent.KEYCODE_NUMPAD_MULTIPLY to "Numpad Multiply", - KeyEvent.KEYCODE_NUMPAD_SUBTRACT to "Numpad -", - KeyEvent.KEYCODE_NUMPAD_ADD to "Numpad +", - KeyEvent.KEYCODE_NUMPAD_DOT to "Numpad .", - KeyEvent.KEYCODE_NUMPAD_COMMA to "Numpad ,", - KeyEvent.KEYCODE_NUMPAD_ENTER to "Numpad Enter", - KeyEvent.KEYCODE_NUMPAD_EQUALS to "Numpad =", - KeyEvent.KEYCODE_NUMPAD_LEFT_PAREN to "Numpad (", - KeyEvent.KEYCODE_NUMPAD_RIGHT_PAREN to "Numpad )", - KeyEvent.KEYCODE_VOLUME_MUTE to "Mute Volume", - KeyEvent.KEYCODE_INFO to "Info", - KeyEvent.KEYCODE_CHANNEL_UP to "Channel Up", - KeyEvent.KEYCODE_CHANNEL_DOWN to "Channel Down", - KeyEvent.KEYCODE_ZOOM_IN to "Zoom In", - KeyEvent.KEYCODE_ZOOM_OUT to "Zoom Out", - KeyEvent.KEYCODE_TV to "TV", - KeyEvent.KEYCODE_WINDOW to "Window", - KeyEvent.KEYCODE_GUIDE to "Guide", - KeyEvent.KEYCODE_DVR to "DVR", - KeyEvent.KEYCODE_BOOKMARK to "Bookmark", - KeyEvent.KEYCODE_CAPTIONS to "Captions", - KeyEvent.KEYCODE_SETTINGS to "Settings", - KeyEvent.KEYCODE_TV_POWER to "TV Power", - KeyEvent.KEYCODE_TV_INPUT to "TV Input", - KeyEvent.KEYCODE_STB_POWER to "STB Power", - KeyEvent.KEYCODE_STB_INPUT to "STB Input", - KeyEvent.KEYCODE_AVR_POWER to "AVR Power", - KeyEvent.KEYCODE_AVR_INPUT to "AVR Input", - KeyEvent.KEYCODE_PROG_RED to "TV Red", - KeyEvent.KEYCODE_PROG_GREEN to "TV Green", - KeyEvent.KEYCODE_PROG_YELLOW to "TV Yellow", - KeyEvent.KEYCODE_PROG_BLUE to "TV Blue", - KeyEvent.KEYCODE_LANGUAGE_SWITCH to "Language Switch", - KeyEvent.KEYCODE_MANNER_MODE to "Manner Mode", - KeyEvent.KEYCODE_3D_MODE to "3D Mode", - KeyEvent.KEYCODE_CONTACTS to "Contacts", - KeyEvent.KEYCODE_CALENDAR to "Calendar", - KeyEvent.KEYCODE_MUSIC to "Music", - KeyEvent.KEYCODE_CALCULATOR to "Calculator", - KeyEvent.KEYCODE_ZENKAKU_HANKAKU to "Zenkaku Hankaku", - KeyEvent.KEYCODE_EISU to "Eisu", - KeyEvent.KEYCODE_MUHENKAN to "Muhenkan", - KeyEvent.KEYCODE_HENKAN to "Henkan", - KeyEvent.KEYCODE_KATAKANA_HIRAGANA to "Katakana Hiragana", - KeyEvent.KEYCODE_YEN to "Yen", - KeyEvent.KEYCODE_RO to "Ro", - KeyEvent.KEYCODE_KANA to "Kana", - KeyEvent.KEYCODE_ASSIST to "Assist", - KeyEvent.KEYCODE_BRIGHTNESS_DOWN to "Brightness Down", - KeyEvent.KEYCODE_BRIGHTNESS_UP to "Brightness Up", - KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK to "Audio Track", - KeyEvent.KEYCODE_PAIRING to "Pairing", - KeyEvent.KEYCODE_MEDIA_TOP_MENU to "Media Top Menu", - KeyEvent.KEYCODE_11 to "11", - KeyEvent.KEYCODE_12 to "12", - KeyEvent.KEYCODE_LAST_CHANNEL to "Last Channel", - KeyEvent.KEYCODE_TV_DATA_SERVICE to "TV Data Service", - KeyEvent.KEYCODE_VOICE_ASSIST to "Voice Assist", - KeyEvent.KEYCODE_TV_RADIO_SERVICE to "TV Radio Service", - KeyEvent.KEYCODE_TV_TELETEXT to "TV Teletext", - KeyEvent.KEYCODE_TV_NUMBER_ENTRY to "TV Number Entry", - KeyEvent.KEYCODE_TV_TERRESTRIAL_ANALOG to "TV Terrestrial Analog", - KeyEvent.KEYCODE_TV_TERRESTRIAL_DIGITAL to "TV Terrestrial Digital", - KeyEvent.KEYCODE_TV_SATELLITE to "TV Satellite", - KeyEvent.KEYCODE_TV_SATELLITE_BS to "TV Satellite BS", - KeyEvent.KEYCODE_TV_SATELLITE_CS to "TV Satellite CS", - KeyEvent.KEYCODE_TV_SATELLITE_SERVICE to "TV Satellite Service", - KeyEvent.KEYCODE_TV_NETWORK to "TV Network", - KeyEvent.KEYCODE_TV_ANTENNA_CABLE to "TV Antenna Cable", - KeyEvent.KEYCODE_TV_INPUT_HDMI_1 to "TV HDMI 1", - KeyEvent.KEYCODE_TV_INPUT_HDMI_2 to "TV HDMI 2", - KeyEvent.KEYCODE_TV_INPUT_HDMI_3 to "TV HDMI 3", - KeyEvent.KEYCODE_TV_INPUT_HDMI_4 to "TV HDMI 4", - KeyEvent.KEYCODE_TV_INPUT_COMPOSITE_1 to "TV Composite 1", - KeyEvent.KEYCODE_TV_INPUT_COMPOSITE_2 to "TV Composite 2", - KeyEvent.KEYCODE_TV_INPUT_COMPONENT_1 to "TV Component 1", - KeyEvent.KEYCODE_TV_INPUT_COMPONENT_2 to "TV Component 2", - KeyEvent.KEYCODE_TV_INPUT_VGA_1 to "TV VGA 1", - KeyEvent.KEYCODE_TV_AUDIO_DESCRIPTION to "TV Audio Description", - KeyEvent.KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP to "TV Audio Description Vol Up", - KeyEvent.KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN to "TV Audio Description Vol Down", - KeyEvent.KEYCODE_TV_ZOOM_MODE to "TV Zoom Mode", - KeyEvent.KEYCODE_TV_CONTENTS_MENU to "TV Contents Menu", - KeyEvent.KEYCODE_TV_MEDIA_CONTEXT_MENU to "TV Media Context Menu", - KeyEvent.KEYCODE_TV_TIMER_PROGRAMMING to "TV Timer Programming", - KeyEvent.KEYCODE_HELP to "Help", - ), - ) - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - yieldAll( - listOf( - KeyEvent.KEYCODE_NAVIGATE_PREVIOUS to "Navigate Previous", - KeyEvent.KEYCODE_NAVIGATE_NEXT to "Navigate Next", - KeyEvent.KEYCODE_NAVIGATE_IN to "Navigate In", - KeyEvent.KEYCODE_NAVIGATE_OUT to "Navigate Out", - KeyEvent.KEYCODE_MEDIA_SKIP_FORWARD to "Media Skip Forward", - KeyEvent.KEYCODE_MEDIA_SKIP_BACKWARD to "Media Skip Backward", - KeyEvent.KEYCODE_MEDIA_STEP_FORWARD to "Media Step Forward", - KeyEvent.KEYCODE_MEDIA_STEP_BACKWARD to "Media Step Backward", - ), - ) - } - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - yieldAll( - listOf( - KeyEvent.KEYCODE_STEM_PRIMARY to "Stem Primary", - KeyEvent.KEYCODE_STEM_1 to "Stem 1", - KeyEvent.KEYCODE_STEM_2 to "Stem 2", - KeyEvent.KEYCODE_STEM_3 to "Stem 3", - KeyEvent.KEYCODE_DPAD_UP_LEFT to "DPAD Up Left", - KeyEvent.KEYCODE_DPAD_DOWN_LEFT to "DPAD Down Left", - KeyEvent.KEYCODE_DPAD_UP_RIGHT to "DPAD Up Right", - KeyEvent.KEYCODE_DPAD_DOWN_RIGHT to "DPAD Down Right", - KeyEvent.KEYCODE_SOFT_SLEEP to "Soft Sleep", - KeyEvent.KEYCODE_CUT to "Cut", - KeyEvent.KEYCODE_COPY to "Copy", - KeyEvent.KEYCODE_PASTE to "Paste", - ), - ) - } - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) { - yieldAll( - listOf( - KeyEvent.KEYCODE_SYSTEM_NAVIGATION_UP to "System Nav Up", - KeyEvent.KEYCODE_SYSTEM_NAVIGATION_DOWN to "System Nav Down", - KeyEvent.KEYCODE_SYSTEM_NAVIGATION_LEFT to "System Nav Left", - KeyEvent.KEYCODE_SYSTEM_NAVIGATION_RIGHT to "System Nav Right", - ), - ) - } - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - yield(KeyEvent.KEYCODE_ALL_APPS to "All Apps") - } - }.toMap() private val KEYCODES: Set get() = setOf( @@ -688,18 +358,6 @@ object InputEventUtils { */ val KEYCODE_TO_SCANCODE_OFFSET: Int = 1000 - /** - * Create a text representation of a key event. E.g if the control key was pressed, - * "Ctrl" will be returned - */ - fun keyCodeToString(keyCode: Int): String = NON_CHARACTER_KEY_LABELS[keyCode].let { - if (keyCode >= KEYCODE_TO_SCANCODE_OFFSET || keyCode < 0) { - "scancode $keyCode" - } else { - it ?: "unknown keycode $keyCode" - } - } - fun isModifierKey(keyCode: Int): Boolean = keyCode in MODIFIER_KEYCODES fun isGamepadKeyCode(keyCode: Int): Boolean { @@ -790,30 +448,6 @@ object InputEventUtils { else -> throw Exception("can't convert modifier $modifier to meta state") } - val MODIFIER_LABELS = mapOf( - KeyEvent.META_CTRL_ON to R.string.meta_state_ctrl, - KeyEvent.META_CTRL_LEFT_ON to R.string.meta_state_ctrl_left, - KeyEvent.META_CTRL_RIGHT_ON to R.string.meta_state_ctrl_right, - - KeyEvent.META_ALT_ON to R.string.meta_state_alt, - KeyEvent.META_ALT_LEFT_ON to R.string.meta_state_alt_left, - KeyEvent.META_ALT_RIGHT_ON to R.string.meta_state_alt_right, - - KeyEvent.META_SHIFT_ON to R.string.meta_state_shift, - KeyEvent.META_SHIFT_LEFT_ON to R.string.meta_state_shift_left, - KeyEvent.META_SHIFT_RIGHT_ON to R.string.meta_state_shift_right, - - KeyEvent.META_META_ON to R.string.meta_state_meta, - KeyEvent.META_META_LEFT_ON to R.string.meta_state_meta_left, - KeyEvent.META_META_RIGHT_ON to R.string.meta_state_meta_right, - - KeyEvent.META_SYM_ON to R.string.meta_state_sym, - KeyEvent.META_CAPS_LOCK_ON to R.string.meta_state_caps_lock, - KeyEvent.META_NUM_LOCK_ON to R.string.meta_state_num_lock, - KeyEvent.META_SCROLL_LOCK_ON to R.string.meta_state_scroll_lock, - KeyEvent.META_FUNCTION_ON to R.string.meta_state_function, - ) - fun isDpadKeyCode(code: Int): Boolean { return code == KeyEvent.KEYCODE_DPAD_LEFT || code == KeyEvent.KEYCODE_DPAD_RIGHT || diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt index 306f8bdbfa..27a911b1b2 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt @@ -13,7 +13,8 @@ import android.provider.Settings import android.view.inputmethod.InputMethodManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.Constants +import dagger.hilt.android.qualifiers.ApplicationContext +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success @@ -25,12 +26,12 @@ import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.service.ServiceAdapter -import io.github.sds100.keymapper.system.accessibility.ServiceState +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.base.utils.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow @@ -45,7 +46,6 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import kotlinx.coroutines.withTimeoutOrNull import timber.log.Timber -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton @@ -53,9 +53,10 @@ import javax.inject.Singleton class AndroidInputMethodAdapter @Inject constructor( @ApplicationContext private val context: Context, private val coroutineScope: CoroutineScope, - private val serviceAdapter: ServiceAdapter, + private val serviceAdapter: AccessibilityServiceAdapter, private val permissionAdapter: PermissionAdapter, private val suAdapter: SuAdapter, + private val buildConfigProvider: BuildConfigProvider, ) : InputMethodAdapter { companion object { @@ -100,7 +101,9 @@ class AndroidInputMethodAdapter @Inject constructor( suspend fun invalidate() { when { Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && - serviceAdapter.state.first() == ServiceState.ENABLED -> send(true) + serviceAdapter.state.first() == AccessibilityServiceState.ENABLED -> send( + true, + ) permissionAdapter.isGranted(Permission.WRITE_SECURE_SETTINGS) -> send(true) @@ -192,9 +195,9 @@ class AndroidInputMethodAdapter @Inject constructor( } private suspend fun enableImeWithoutUserInput(imeId: String): Result<*> { - return getInfoByPackageName(Constants.PACKAGE_NAME).then { keyMapperImeInfo -> + return getInfoByPackageName(buildConfigProvider.packageName).then { keyMapperImeInfo -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && imeId == keyMapperImeInfo.id) { - serviceAdapter.send(ServiceEvent.EnableInputMethod(keyMapperImeInfo.id)) + serviceAdapter.send(AccessibilityServiceEvent.EnableInputMethod(keyMapperImeInfo.id)) } else { suAdapter.execute("ime enable $imeId") } @@ -212,8 +215,8 @@ class AndroidInputMethodAdapter @Inject constructor( var failed = true - if (failed && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && serviceAdapter.state.value == ServiceState.ENABLED) { - serviceAdapter.send(ServiceEvent.ChangeIme(imeId)).onSuccess { + if (failed && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && serviceAdapter.state.value == AccessibilityServiceState.ENABLED) { + serviceAdapter.send(AccessibilityServiceEvent.ChangeIme(imeId)).onSuccess { failed = false } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt index 8068606fdf..1142fef197 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputKeyModel.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.inputmethod import android.view.InputDevice -import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.common.utils.InputEventType data class InputKeyModel( val keyCode: Int, diff --git a/api/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayServiceWrapper.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyEventRelayServiceWrapper.kt similarity index 88% rename from api/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayServiceWrapper.kt rename to system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyEventRelayServiceWrapper.kt index c65f15673b..24dccae1b1 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/KeyEventRelayServiceWrapper.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyEventRelayServiceWrapper.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.api +package io.github.sds100.keymapper.system.inputmethod import android.content.ComponentName import android.content.Context @@ -9,6 +9,9 @@ import android.os.IBinder import android.os.RemoteException import android.view.KeyEvent import android.view.MotionEvent +import io.github.sds100.keymapper.api.IKeyEventRelayService +import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback +import io.github.sds100.keymapper.system.inputmethod.KeyEventRelayServiceWrapper /** * This handles connecting to the relay service and exposes an interface @@ -18,6 +21,7 @@ import android.view.MotionEvent class KeyEventRelayServiceWrapperImpl( private val ctx: Context, private val id: String, + private val servicePackageName: String, private val callback: IKeyEventRelayServiceCallback, ) : KeyEventRelayServiceWrapper { @@ -91,7 +95,10 @@ class KeyEventRelayServiceWrapperImpl( private fun bind() { try { - val relayServiceIntent = Intent(ctx, KeyEventRelayService::class.java) + val relayServiceIntent = Intent() + val component = + ComponentName(servicePackageName, "io.github.sds100.keymapper.api.KeyEventRelayService") + relayServiceIntent.setComponent(component) val isSuccess = ctx.bindService(relayServiceIntent, serviceConnection, Context.BIND_AUTO_CREATE) @@ -124,4 +131,4 @@ class KeyEventRelayServiceWrapperImpl( interface KeyEventRelayServiceWrapper { fun sendKeyEvent(event: KeyEvent, targetPackageName: String, callbackId: String): Boolean fun sendMotionEvent(event: MotionEvent, targetPackageName: String, callbackId: String): Boolean -} +} \ No newline at end of file diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt index 564a400cb9..a41b64d86d 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt @@ -1,17 +1,21 @@ package io.github.sds100.keymapper.system.inputmethod -import io.github.sds100.keymapper.Constants +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.common.utils.suspendThen import io.github.sds100.keymapper.common.utils.then -import io.github.sds100.keymapper.base.utils.firstBlocking import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map +import javax.inject.Inject -class KeyMapperImeHelper(private val imeAdapter: InputMethodAdapter) { +class KeyMapperImeHelper @Inject constructor( + private val imeAdapter: InputMethodAdapter, + private val packageName: String +) { companion object { const val KEY_MAPPER_GUI_IME_PACKAGE = "io.github.sds100.keymapper.inputmethod.latin" @@ -22,22 +26,22 @@ class KeyMapperImeHelper(private val imeAdapter: InputMethodAdapter) { private const val KEY_MAPPER_HACKERS_KEYBOARD_PACKAGE = "io.github.sds100.keymapper.inputmethod.hackers" - val KEY_MAPPER_IME_PACKAGE_LIST = arrayOf( - Constants.PACKAGE_NAME, - KEY_MAPPER_GUI_IME_PACKAGE, - KEY_MAPPER_LEANBACK_IME_PACKAGE, - KEY_MAPPER_HACKERS_KEYBOARD_PACKAGE, - ) - const val MIN_SUPPORTED_GUI_KEYBOARD_VERSION_CODE: Int = 20 } + private val keyMapperImePackageList = arrayOf( + packageName, + KEY_MAPPER_GUI_IME_PACKAGE, + KEY_MAPPER_LEANBACK_IME_PACKAGE, + KEY_MAPPER_HACKERS_KEYBOARD_PACKAGE, + ) + val isCompatibleImeEnabledFlow: Flow = imeAdapter.inputMethods .map { containsCompatibleIme(it) } suspend fun enableCompatibleInputMethods() { - KEY_MAPPER_IME_PACKAGE_LIST.forEach { packageName -> + keyMapperImePackageList.forEach { packageName -> imeAdapter.getInfoByPackageName(packageName).onSuccess { imeAdapter.enableIme(it.id) } @@ -58,7 +62,7 @@ class KeyMapperImeHelper(private val imeAdapter: InputMethodAdapter) { chooseCompatibleInputMethod() } - fun isCompatibleImeChosen(): Boolean = imeAdapter.chosenIme.value?.packageName in KEY_MAPPER_IME_PACKAGE_LIST + fun isCompatibleImeChosen(): Boolean = imeAdapter.chosenIme.value?.packageName in keyMapperImePackageList fun isCompatibleImeEnabled(): Boolean = imeAdapter.inputMethods .map { containsCompatibleIme(it) } @@ -66,11 +70,11 @@ class KeyMapperImeHelper(private val imeAdapter: InputMethodAdapter) { private fun containsCompatibleIme(imeList: List): Boolean = imeList .filter { it.isEnabled } - .any { it.packageName in KEY_MAPPER_IME_PACKAGE_LIST } + .any { it.packageName in keyMapperImePackageList } private fun getLastUsedCompatibleImeId(): Result { for (ime in imeAdapter.inputMethodHistory.firstBlocking()) { - if (ime.packageName in KEY_MAPPER_IME_PACKAGE_LIST && ime.isEnabled) { + if (ime.packageName in keyMapperImePackageList && ime.isEnabled) { return Success(ime.id) } } @@ -81,7 +85,7 @@ class KeyMapperImeHelper(private val imeAdapter: InputMethodAdapter) { } } - return imeAdapter.getInfoByPackageName(Constants.PACKAGE_NAME).then { ime -> + return imeAdapter.getInfoByPackageName(packageName).then { ime -> if (ime.isEnabled) { Success(ime.id) } else { @@ -92,7 +96,7 @@ class KeyMapperImeHelper(private val imeAdapter: InputMethodAdapter) { private fun getLastUsedIncompatibleImeId(): Result { for (ime in imeAdapter.inputMethodHistory.firstBlocking()) { - if (ime.packageName !in KEY_MAPPER_IME_PACKAGE_LIST) { + if (ime.packageName !in keyMapperImePackageList) { return Success(ime.id) } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt index eb4186d875..470d1707c5 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeService.kt @@ -16,11 +16,16 @@ import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.Constants +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback -import io.github.sds100.keymapper.api.KeyEventRelayService -import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapperImpl - +import io.github.sds100.keymapper.common.BuildConfigProvider +import javax.inject.Inject + +/** + * DO NOT MOVE. Must stay in this package so the user's input method settings are not reset + * when the component name changes. + */ +@AndroidEntryPoint class KeyMapperImeService : InputMethodService() { companion object { @@ -38,8 +43,13 @@ class KeyMapperImeService : InputMethodService() { "io.github.sds100.keymapper.inputmethod.EXTRA_TEXT" const val KEY_MAPPER_INPUT_METHOD_EXTRA_KEY_EVENT = "io.github.sds100.keymapper.inputmethod.EXTRA_KEY_EVENT" + + private const val CALLBACK_ID_ACCESSIBILITY_SERVICE = "accessibility_service" + private const val CALLBACK_ID_INPUT_METHOD = "input_method" } + @Inject + lateinit var buildConfigProvider: BuildConfigProvider private val userManager: UserManager? by lazy { getSystemService() } private val inputMethodManager: InputMethodManager? by lazy { getSystemService() @@ -109,7 +119,8 @@ class KeyMapperImeService : InputMethodService() { private val keyEventRelayServiceWrapper: KeyEventRelayServiceWrapperImpl by lazy { KeyEventRelayServiceWrapperImpl( ctx = this, - id = KeyEventRelayService.CALLBACK_ID_INPUT_METHOD, + id = CALLBACK_ID_INPUT_METHOD, + servicePackageName = buildConfigProvider.packageName, callback = keyEventReceiverCallback, ) } @@ -155,8 +166,8 @@ class KeyMapperImeService : InputMethodService() { val consume = keyEventRelayServiceWrapper.sendMotionEvent( event = event, - targetPackageName = Constants.PACKAGE_NAME, - callbackId = KeyEventRelayService.CALLBACK_ID_ACCESSIBILITY_SERVICE, + targetPackageName = buildConfigProvider.packageName, + callbackId = CALLBACK_ID_ACCESSIBILITY_SERVICE, ) return if (consume) { @@ -171,8 +182,8 @@ class KeyMapperImeService : InputMethodService() { val consume = keyEventRelayServiceWrapper.sendKeyEvent( event = event, - targetPackageName = Constants.PACKAGE_NAME, - callbackId = KeyEventRelayService.CALLBACK_ID_ACCESSIBILITY_SERVICE, + targetPackageName = buildConfigProvider.packageName, + callbackId = CALLBACK_ID_ACCESSIBILITY_SERVICE, ) return if (consume) { @@ -187,8 +198,8 @@ class KeyMapperImeService : InputMethodService() { val consume = keyEventRelayServiceWrapper.sendKeyEvent( event = event, - targetPackageName = Constants.PACKAGE_NAME, - callbackId = KeyEventRelayService.CALLBACK_ID_ACCESSIBILITY_SERVICE, + targetPackageName = buildConfigProvider.packageName, + callbackId = CALLBACK_ID_ACCESSIBILITY_SERVICE, ) return if (consume) { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt index d32a94ae2c..d571e37950 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ObserveInputMethodsJob.kt @@ -3,13 +3,19 @@ package io.github.sds100.keymapper.system.inputmethod import android.app.job.JobParameters import android.app.job.JobService import android.os.Build -import io.github.sds100.keymapper.KeyMapperApp +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.system.JobSchedulerHelper +import javax.inject.Inject - +@AndroidEntryPoint class ObserveInputMethodsJob : JobService() { + + @Inject + lateinit var inputMethodAdapter: AndroidInputMethodAdapter + override fun onStartJob(params: JobParameters?): Boolean { - (applicationContext as KeyMapperApp).inputMethodAdapter.onInputMethodsUpdate() + inputMethodAdapter.onInputMethodsUpdate() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { JobSchedulerHelper.observeInputMethods(applicationContext) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt index 90e8c38776..02f1ea4b0e 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt @@ -1,30 +1,28 @@ package io.github.sds100.keymapper.system.inputmethod -import io.github.sds100.keymapper.system.service.ServiceAdapter -import io.github.sds100.keymapper.base.utils.ServiceEvent +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.runBlocking - - class ShowHideInputMethodUseCaseImpl( - private val serviceAdapter: ServiceAdapter, + private val serviceAdapter: AccessibilityServiceAdapter, ) : ShowHideInputMethodUseCase { override val onHiddenChange: Flow = serviceAdapter.eventReceiver.mapNotNull { when (it) { - ServiceEvent.OnHideKeyboardEvent -> true - ServiceEvent.OnShowKeyboardEvent -> false + AccessibilityServiceEvent.OnHideKeyboardEvent -> true + AccessibilityServiceEvent.OnShowKeyboardEvent -> false else -> null } } override fun show() { - runBlocking { serviceAdapter.send(ServiceEvent.ShowKeyboard) } + runBlocking { serviceAdapter.send(AccessibilityServiceEvent.ShowKeyboard) } } override fun hide() { - runBlocking { serviceAdapter.send(ServiceEvent.HideKeyboard) } + runBlocking { serviceAdapter.send(AccessibilityServiceEvent.HideKeyboard) } } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt index ad5a7ea384..6f81a122f8 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt @@ -1,20 +1,21 @@ package io.github.sds100.keymapper.system.inputmethod +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Result import kotlinx.coroutines.flow.Flow +import javax.inject.Inject - - -class ToggleCompatibleImeUseCaseImpl( +class ToggleCompatibleImeUseCaseImpl @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, + private val buildConfigProvider: BuildConfigProvider, ) : ToggleCompatibleImeUseCase { - private val keyMapperImeHelper = KeyMapperImeHelper(inputMethodAdapter) + private val keyMapperImeHelper = + KeyMapperImeHelper(inputMethodAdapter, buildConfigProvider.packageName) override val sufficientPermissions: Flow = inputMethodAdapter.isUserInputRequiredToChangeIme - override suspend fun toggle(): Result = - keyMapperImeHelper.toggleCompatibleInputMethod() + override suspend fun toggle(): Result = keyMapperImeHelper.toggleCompatibleInputMethod() } interface ToggleCompatibleImeUseCase { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt b/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt index 0374f1d213..d4d558fe35 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt @@ -4,22 +4,22 @@ import android.view.KeyEvent import androidx.core.view.accessibility.AccessibilityNodeInfoCompat import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.success -import io.github.sds100.keymapper.system.accessibility.AccessibilityNodeAction -import io.github.sds100.keymapper.system.accessibility.IAccessibilityService +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeAction +import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.system.inputevents.InputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.base.utils.InputEventType -import io.github.sds100.keymapper.base.utils.firstBlocking +import io.github.sds100.keymapper.common.utils.firstBlocking import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch class OpenMenuHelper( private val suAdapter: SuAdapter, - private val accessibilityService: IAccessibilityService, + private val accessibilityService: io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService, private val shizukuInputEventInjector: InputEventInjector, private val permissionAdapter: PermissionAdapter, private val coroutineScope: CoroutineScope, @@ -49,7 +49,9 @@ class OpenMenuHelper( else -> { accessibilityService.performActionOnNode({ it.contentDescription == OVERFLOW_MENU_CONTENT_DESCRIPTION }) { - AccessibilityNodeAction(AccessibilityNodeInfoCompat.ACTION_CLICK) + io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeAction( + AccessibilityNodeInfoCompat.ACTION_CLICK + ) } return success() diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt index b64be0848b..b340136c20 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt @@ -38,7 +38,7 @@ class NotificationReceiver : private var lastNotificationKey: String? = null - private val serviceAdapter: NotificationReceiverAdapter by lazy { + private val serviceAdapter: NotificationReceiverAdapterImpl by lazy { ServiceLocator.notificationReceiverAdapter(this) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt index 9c41efe6e4..42940e09f1 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt @@ -1,116 +1,40 @@ package io.github.sds100.keymapper.system.notifications -import android.content.ActivityNotFoundException -import android.content.Context -import android.content.Intent -import android.database.ContentObserver -import android.net.Uri -import android.os.Build -import android.os.Handler -import android.os.Looper -import android.provider.Settings -import androidx.core.app.NotificationManagerCompat -import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.common.utils.Result -import io.github.sds100.keymapper.common.utils.Success -import io.github.sds100.keymapper.system.JobSchedulerHelper -import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.service.ServiceAdapter -import io.github.sds100.keymapper.system.accessibility.ServiceState -import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.base.utils.ServiceEvent -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.flow.MutableSharedFlow -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.launch -import splitties.bitflags.withFlag - - - -class NotificationReceiverAdapter( - context: Context, - private val coroutineScope: CoroutineScope, -) : ServiceAdapter { - private val ctx: Context = context.applicationContext - override val state: MutableStateFlow = MutableStateFlow(ServiceState.DISABLED) - - override val eventReceiver: MutableSharedFlow = MutableSharedFlow() - val eventsToService = MutableSharedFlow() - - init { - // use job scheduler because there is there is a much shorter delay when the app is in the background - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - JobSchedulerHelper.observeEnabledNotificationListeners(ctx) - } else { - val uri = Settings.Secure.getUriFor("enabled_notification_listeners") - val observer = object : ContentObserver(Handler(Looper.getMainLooper())) { - override fun onChange(selfChange: Boolean, uri: Uri?) { - super.onChange(selfChange, uri) - - coroutineScope.launch { - state.value = getState() - } - } - } - - ctx.contentResolver.registerContentObserver(uri, false, observer) - } - - coroutineScope.launch { - state.value = getState() - } - } - - override suspend fun send(event: ServiceEvent): Result<*> { - if (state.value != ServiceState.ENABLED) { - return SystemError.PermissionDenied(Permission.NOTIFICATION_LISTENER) - } - - coroutineScope.launch { - eventsToService.emit(event) - } - - return Success(Unit) - } - - override fun sendAsync(event: ServiceEvent) { - coroutineScope.launch { - eventsToService.emit(event) - } - } - - override fun start(): Boolean = openSettingsPage() - - override fun restart(): Boolean = openSettingsPage() - - override fun stop(): Boolean = openSettingsPage() - - override suspend fun isCrashed(): Boolean = false - override fun acknowledgeCrashed() {} - - private fun openSettingsPage(): Boolean { - Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS).apply { - flags = Intent.FLAG_ACTIVITY_NEW_TASK - .withFlag(Intent.FLAG_ACTIVITY_CLEAR_TASK) - .withFlag(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) - - try { - ctx.startActivity(this) - return true - } catch (e: ActivityNotFoundException) { - return false - } - } - } - - private fun getState(): ServiceState { - val isEnabled = NotificationManagerCompat.getEnabledListenerPackages(ctx) - .contains(Constants.PACKAGE_NAME) - - return if (isEnabled) { - ServiceState.ENABLED - } else { - ServiceState.DISABLED - } - } +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.StateFlow + +interface NotificationReceiverAdapter { + val isEnabled: StateFlow + + /** + * @return Whether the service could be started successfully. + */ + fun start(): Boolean + + /** + * @return Whether the service could be restarted successfully. + */ + fun restart(): Boolean + + /** + * @return Whether the service could be restarted successfully. + */ + fun stop(): Boolean + + /** + * Send an event to the service. + */ + suspend fun send(event: NotificationServiceEvent): Result<*> + + /** + * Send an event to the service asynchronously. This method + * will return immediately and you won't be notified of whether it is sent. + */ + fun sendAsync(event: NotificationServiceEvent) + + /** + * A flow of events coming from the service. + */ + val eventReceiver: SharedFlow } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapterImpl.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapterImpl.kt new file mode 100644 index 0000000000..f433b640a8 --- /dev/null +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapterImpl.kt @@ -0,0 +1,110 @@ +package io.github.sds100.keymapper.system.notifications + +import android.content.ActivityNotFoundException +import android.content.Context +import android.content.Intent +import android.database.ContentObserver +import android.net.Uri +import android.os.Build +import android.os.Handler +import android.os.Looper +import android.provider.Settings +import androidx.core.app.NotificationManagerCompat +import dagger.hilt.android.qualifiers.ApplicationContext +import io.github.sds100.keymapper.common.BuildConfigProvider +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.withFlag +import io.github.sds100.keymapper.base.JobSchedulerHelper +import io.github.sds100.keymapper.system.SystemError +import io.github.sds100.keymapper.system.permissions.Permission +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.update +import kotlinx.coroutines.launch +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class NotificationReceiverAdapterImpl @Inject constructor( + @ApplicationContext context: Context, + private val coroutineScope: CoroutineScope, + private val buildConfigProvider: BuildConfigProvider, +) : NotificationReceiverAdapter { + private val ctx: Context = context.applicationContext + override val isEnabled: MutableStateFlow = MutableStateFlow(false) + + override val eventReceiver: MutableSharedFlow = MutableSharedFlow() + val eventsToService = MutableSharedFlow() + + init { + // use job scheduler because there is there is a much shorter delay when the app is in the background + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + io.github.sds100.keymapper.base.JobSchedulerHelper.observeEnabledNotificationListeners(ctx) + } else { + val uri = Settings.Secure.getUriFor("enabled_notification_listeners") + val observer = object : ContentObserver(Handler(Looper.getMainLooper())) { + override fun onChange(selfChange: Boolean, uri: Uri?) { + super.onChange(selfChange, uri) + + coroutineScope.launch { + isEnabled.update { getIsEnabled() } + } + } + } + + ctx.contentResolver.registerContentObserver(uri, false, observer) + } + + coroutineScope.launch { + isEnabled.update { getIsEnabled() } + } + } + + override suspend fun send(event: NotificationServiceEvent): Result<*> { + if (isEnabled.value) { + return SystemError.PermissionDenied(Permission.NOTIFICATION_LISTENER) + } + + coroutineScope.launch { + eventsToService.emit(event) + } + + return Success(Unit) + } + + override fun sendAsync(event: NotificationServiceEvent) { + coroutineScope.launch { + eventsToService.emit(event) + } + } + + override fun start(): Boolean = openSettingsPage() + + override fun restart(): Boolean = openSettingsPage() + + override fun stop(): Boolean = openSettingsPage() + + private fun openSettingsPage(): Boolean { + Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK + .withFlag(Intent.FLAG_ACTIVITY_CLEAR_TASK) + .withFlag(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) + + try { + ctx.startActivity(this) + return true + } catch (e: ActivityNotFoundException) { + return false + } + } + } + + private fun getIsEnabled(): Boolean { + val isEnabled = NotificationManagerCompat.getEnabledListenerPackages(ctx) + .contains(buildConfigProvider.packageName) + + return isEnabled + } +} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationServiceEvent.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationServiceEvent.kt new file mode 100644 index 0000000000..42843285eb --- /dev/null +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationServiceEvent.kt @@ -0,0 +1,13 @@ +package io.github.sds100.keymapper.system.notifications + +import kotlinx.serialization.Serializable + +sealed class NotificationServiceEvent { + + @Serializable + data object DismissLastNotification : NotificationServiceEvent() + + @Serializable + data object DismissAllNotifications : NotificationServiceEvent() + +} \ No newline at end of file diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt index 66dcc8109b..1a9e9656d4 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt @@ -4,7 +4,7 @@ import android.app.job.JobParameters import android.app.job.JobService import android.os.Build import io.github.sds100.keymapper.KeyMapperApp -import io.github.sds100.keymapper.system.JobSchedulerHelper +import io.github.sds100.keymapper.base.JobSchedulerHelper class ObserveNotificationListenersJob : JobService() { @@ -12,7 +12,7 @@ class ObserveNotificationListenersJob : JobService() { (applicationContext as KeyMapperApp).permissionAdapter.onPermissionsChanged() if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - JobSchedulerHelper.observeEnabledNotificationListeners(applicationContext) + io.github.sds100.keymapper.base.JobSchedulerHelper.observeEnabledNotificationListeners(applicationContext) } return false } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt index 1f0751093c..7f3d1a3901 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt @@ -15,7 +15,9 @@ import android.provider.Settings import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat import androidx.core.content.getSystemService +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.Constants +import io.github.sds100.keymapper.base.utils.getIdentifier import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.onFailure @@ -23,13 +25,12 @@ import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.shizuku.ShizukuUtils +import io.github.sds100.keymapper.base.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.DeviceAdmin import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.service.ServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter +import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.base.utils.getIdentifier import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow @@ -48,7 +49,6 @@ import rikka.shizuku.Shizuku import rikka.shizuku.ShizukuBinderWrapper import rikka.shizuku.SystemServiceHelper import timber.log.Timber -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton @@ -57,7 +57,7 @@ class AndroidPermissionAdapter @Inject constructor( @ApplicationContext private val context: Context, private val coroutineScope: CoroutineScope, private val suAdapter: SuAdapter, - private val notificationReceiverAdapter: ServiceAdapter, + private val notificationReceiverAdapter: NotificationReceiverAdapter, private val preferenceRepository: PreferenceRepository, private val packageManagerAdapter: PackageManagerAdapter, ) : PermissionAdapter { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt index c27cfde360..aa4c95cef4 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt @@ -17,9 +17,9 @@ import io.github.sds100.keymapper.Constants import io.github.sds100.keymapper.NavAppDirections import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.shizuku.ShizukuUtils +import io.github.sds100.keymapper.base.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.DeviceAdmin -import io.github.sds100.keymapper.system.service.ServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.url.UrlUtils import io.github.sds100.keymapper.base.utils.str import rikka.shizuku.Shizuku @@ -60,7 +60,7 @@ class RequestPermissionDelegate( ServiceLocator.permissionAdapter(activity) } - private val notificationReceiverAdapter: ServiceAdapter by lazy { + private val notificationReceiverAdapter: io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter by lazy { ServiceLocator.notificationReceiverAdapter(activity) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt index 0149fc0eb3..4f59bb8ceb 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt @@ -8,7 +8,7 @@ import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.Shell import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.base.utils.firstBlocking +import io.github.sds100.keymapper.common.utils.firstBlocking import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow From b055e2b71c1c76fb7fadf8c0b51b7c3fd9005c0d Mon Sep 17 00:00:00 2001 From: sds100 Date: Sun, 18 May 2025 12:37:10 +0200 Subject: [PATCH 20/71] #1711 system module compiles --- api/src/main/AndroidManifest.xml | 14 ++ .../github/sds100/keymapper}/AppHiltModule.kt | 8 +- base/build.gradle.kts | 3 - base/src/main/AndroidManifest.xml | 29 +--- .../sds100/keymapper/base/BaseHiltModule.kt | 18 +++ .../sds100/keymapper/base/BaseKeyMapperApp.kt | 5 +- .../sds100/keymapper/base/BaseMainActivity.kt | 2 +- .../base/actions/ActionErrorSnapshot.kt | 2 +- .../base/actions/GetActionErrorUseCase.kt | 4 +- .../base/actions/PerformActionsUseCase.kt | 12 +- .../keymaps/CreateKeyMapShortcutActivity.kt | 2 +- .../base/keymaps/DisplayKeyMapUseCase.kt | 2 +- .../keymaps/detection/DetectKeyMapsUseCase.kt | 8 +- .../base/onboarding/OnboardingUseCase.kt | 4 +- .../AutomaticallyChangeImeSettings.kt | 5 +- .../base/settings/ConfigSettingsUseCase.kt | 4 +- .../base/settings/MainSettingsFragment.kt | 2 +- .../inputmethod/AutoSwitchImeController.kt | 12 +- .../system/intents/ConfigIntentViewModel.kt | 4 +- .../base}/system/navigation/OpenMenuHelper.kt | 17 +- .../AndroidNotificationAdapter.kt | 77 +++++---- .../NotificationClickReceiver.kt | 13 +- .../AutoGrantPermissionController.kt | 14 +- .../permissions/RequestPermissionDelegate.kt | 68 ++++---- .../keymapper/base/utils/DndModeStrings.kt | 9 +- .../keymapper/base/utils/RingerModeStrings.kt | 10 +- .../base/utils/VolumeStreamStrings.kt | 10 +- .../sds100/keymapper/utils/IntentStrings.kt | 46 ++++++ .../actions/GetActionFailedUseCaseTest.kt | 2 +- .../actions/PerformActionsUseCaseTest.kt | 4 +- system/build.gradle.kts | 7 + system/src/main/AndroidManifest.xml | 1 - .../keymapper/system/SystemHiltModule.kt | 12 +- .../system/intents/IntentExtraType.kt | 149 +++--------------- .../system/leanback/LeanbackAdapter.kt | 8 +- .../system/leanback/LeanbackAdapterImpl.kt | 13 -- .../notifications/NotificationReceiver.kt | 24 +-- .../NotificationReceiverAdapterImpl.kt | 4 +- .../system/notifications/NotificationUtils.kt | 7 +- .../ObserveNotificationListenersJob.kt | 16 +- .../permissions/AndroidPermissionAdapter.kt | 25 +-- .../system/popup/AndroidToastAdapter.kt | 12 +- .../system/popup/PopupMessageAdapter.kt | 6 - .../keymapper/system/popup/ToastAdapter.kt | 6 + .../ringtones/AndroidRingtoneAdapter.kt | 13 -- .../keymapper/system/root/SuAdapterImpl.kt | 13 -- .../system}/shizuku/ShizukuAdapter.kt | 3 +- .../system}/shizuku/ShizukuAdapterImpl.kt | 10 +- .../shizuku/ShizukuInputEventInjector.kt | 2 +- .../keymapper/system}/shizuku/ShizukuUtils.kt | 2 +- systemstubs/build.gradle.kts | 4 + .../android/content/pm/IPackageManager.aidl | 5 + .../android/hardware/input/IInputManager.aidl | 6 + 53 files changed, 354 insertions(+), 404 deletions(-) rename {base/src/main/java/io/github/sds100/keymapper/base => app/src/main/java/io/github/sds100/keymapper}/AppHiltModule.kt (86%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/BaseHiltModule.kt rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/navigation/OpenMenuHelper.kt (86%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/notifications/AndroidNotificationAdapter.kt (59%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/notifications/NotificationClickReceiver.kt (60%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/permissions/AutoGrantPermissionController.kt (77%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/permissions/RequestPermissionDelegate.kt (83%) rename system/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt => base/src/main/java/io/github/sds100/keymapper/base/utils/DndModeStrings.kt (55%) rename system/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt => base/src/main/java/io/github/sds100/keymapper/base/utils/RingerModeStrings.kt (58%) rename system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt => base/src/main/java/io/github/sds100/keymapper/base/utils/VolumeStreamStrings.kt (74%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/utils/IntentStrings.kt delete mode 100644 system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapterImpl.kt delete mode 100644 system/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt create mode 100644 system/src/main/java/io/github/sds100/keymapper/system/popup/ToastAdapter.kt delete mode 100644 system/src/main/java/io/github/sds100/keymapper/system/ringtones/AndroidRingtoneAdapter.kt delete mode 100644 system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapterImpl.kt rename {base/src/main/java/io/github/sds100/keymapper/base => system/src/main/java/io/github/sds100/keymapper/system}/shizuku/ShizukuAdapter.kt (69%) rename {base/src/main/java/io/github/sds100/keymapper/base => system/src/main/java/io/github/sds100/keymapper/system}/shizuku/ShizukuAdapterImpl.kt (84%) rename {base/src/main/java/io/github/sds100/keymapper/base => system/src/main/java/io/github/sds100/keymapper/system}/shizuku/ShizukuInputEventInjector.kt (97%) rename {base/src/main/java/io/github/sds100/keymapper/base => system/src/main/java/io/github/sds100/keymapper/system}/shizuku/ShizukuUtils.kt (90%) create mode 100644 systemstubs/src/main/aidl/android/content/pm/IPackageManager.aidl create mode 100644 systemstubs/src/main/aidl/android/hardware/input/IInputManager.aidl diff --git a/api/src/main/AndroidManifest.xml b/api/src/main/AndroidManifest.xml index 3a648226a5..77f4ff75fa 100644 --- a/api/src/main/AndroidManifest.xml +++ b/api/src/main/AndroidManifest.xml @@ -4,6 +4,20 @@ + + + + + + + diff --git a/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt similarity index 86% rename from base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt rename to app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt index 30cb2cbe0a..e5321d3510 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/AppHiltModule.kt +++ b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt @@ -1,9 +1,11 @@ -package io.github.sds100.keymapper.base +package io.github.sds100.keymapper +import android.os.Build import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import io.github.sds100.keymapper.BuildConfig import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.common.BuildConfigProvider @@ -26,9 +28,9 @@ class AppHiltModule { @Provides fun provideBuildConfigProvider(): BuildConfigProvider = object : BuildConfigProvider { override val minApi: Int - get() = BuildConfig.MIN_API + get() = Build.VERSION_CODES.LOLLIPOP override val maxApi: Int - get() = BuildConfig.MAX_API + get() = 1000 override val packageName: String get() = BuildConfig.APPLICATION_ID override val version: String diff --git a/base/build.gradle.kts b/base/build.gradle.kts index e816edbb5d..611a99a762 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -82,9 +82,6 @@ dependencies { implementation(libs.anggrayudi.storage) implementation(libs.github.mflisar.dragselectrecyclerview) implementation(libs.google.flexbox) - implementation(libs.rikka.shizuku.api) - implementation(libs.rikka.shizuku.provider) - implementation(libs.lsposed.hiddenapibypass) implementation(libs.squareup.okhttp) coreLibraryDesugaring(libs.desugar.jdk.libs) implementation(libs.canopas.introshowcaseview) diff --git a/base/src/main/AndroidManifest.xml b/base/src/main/AndroidManifest.xml index 3264107660..62a004143b 100644 --- a/base/src/main/AndroidManifest.xml +++ b/base/src/main/AndroidManifest.xml @@ -3,25 +3,12 @@ xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingLeanbackLauncher"> - - + - - - - - - @@ -54,20 +41,6 @@ - - - - - - - .showErrorMessageOnFail() { onFailure { - popupMessageAdapter.showPopupMessage(it.getFullMessage(resourceProvider)) + toastAdapter.show(it.getFullMessage(resourceProvider)) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt index b69e02d7ad..ae675e32fa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt @@ -13,7 +13,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.compose.ComposeColors import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.system.permissions.RequestPermissionDelegate +import io.github.sds100.keymapper.base.system.permissions.RequestPermissionDelegate import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.launchRepeatOnLifecycle import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index 8a0ecec388..7d49dde826 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -15,7 +15,7 @@ import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.base.purchasing.ProductId import io.github.sds100.keymapper.base.purchasing.PurchasingError import io.github.sds100.keymapper.base.purchasing.PurchasingManager -import io.github.sds100.keymapper.base.shizuku.ShizukuUtils +import io.github.sds100.keymapper.system.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt index 6f91eb4e94..ef618e3ad6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt @@ -21,10 +21,10 @@ import io.github.sds100.keymapper.system.display.DisplayAdapter import io.github.sds100.keymapper.system.inputevents.InputEventInjector import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel -import io.github.sds100.keymapper.system.navigation.OpenMenuHelper +import io.github.sds100.keymapper.base.system.navigation.OpenMenuHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.system.popup.PopupMessageAdapter +import io.github.sds100.keymapper.system.popup.ToastAdapter import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.system.vibrator.VibratorAdapter import io.github.sds100.keymapper.system.volume.VolumeAdapter @@ -57,7 +57,7 @@ class DetectKeyMapsUseCaseImpl @Inject constructor( private val imeInputEventInjector: ImeInputEventInjector, private val accessibilityService: IAccessibilityService, private val shizukuInputEventInjector: InputEventInjector, - private val popupMessageAdapter: PopupMessageAdapter, + private val toastAdapter: ToastAdapter, private val permissionAdapter: PermissionAdapter, private val resourceProvider: ResourceProvider, private val vibrator: VibratorAdapter, @@ -180,7 +180,7 @@ class DetectKeyMapsUseCaseImpl @Inject constructor( .map { it.toLong() } override fun showTriggeredToast() { - popupMessageAdapter.showPopupMessage(resourceProvider.getString(R.string.toast_triggered_keymap)) + toastAdapter.show(resourceProvider.getString(R.string.toast_triggered_keymap)) } override fun vibrate(duration: Long) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt index 0de4292807..7c085c179d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt @@ -6,8 +6,8 @@ import io.github.sds100.keymapper.base.actions.canUseImeToPerform import io.github.sds100.keymapper.base.actions.canUseShizukuToPerform import io.github.sds100.keymapper.base.purchasing.ProductId import io.github.sds100.keymapper.base.purchasing.PurchasingManager -import io.github.sds100.keymapper.base.shizuku.ShizukuAdapter -import io.github.sds100.keymapper.base.shizuku.ShizukuUtils +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuUtils import io.github.sds100.keymapper.base.utils.VersionHelper import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Result diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt index 87ae6767fa..9e680a5177 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt @@ -129,8 +129,9 @@ class AutomaticallyChangeImeSettings : BaseSettingsFragment() { } NotificationUtils.openChannelSettings( - requireContext(), - NotificationController.CHANNEL_TOGGLE_KEYBOARD, + ctx = requireContext(), + packageName = requireContext().packageName!!, + channelId = NotificationController.CHANNEL_TOGGLE_KEYBOARD, ) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt index 0513c63315..124f5de5d6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt @@ -7,8 +7,8 @@ import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.base.shizuku.ShizukuAdapter -import io.github.sds100.keymapper.base.shizuku.ShizukuUtils +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt index 4ff48c2de8..e89d54a675 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt @@ -19,7 +19,7 @@ import io.github.sds100.keymapper.R import io.github.sds100.keymapper.backup.BackupUtils import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.base.shizuku.ShizukuUtils +import io.github.sds100.keymapper.system.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.base.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt index 3c3869abd9..dcbb3d6d5a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt @@ -17,7 +17,7 @@ import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper -import io.github.sds100.keymapper.system.popup.PopupMessageAdapter +import io.github.sds100.keymapper.system.popup.ToastAdapter import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach @@ -30,7 +30,7 @@ class AutoSwitchImeController @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, private val pauseKeyMapsUseCase: PauseKeyMapsUseCase, private val devicesAdapter: DevicesAdapter, - private val popupMessageAdapter: PopupMessageAdapter, + private val toastAdapter: ToastAdapter, private val resourceProvider: ResourceProvider, private val accessibilityServiceAdapter: AccessibilityServiceAdapter, ) : PreferenceRepository by preferenceRepository { @@ -126,7 +126,7 @@ class AutoSwitchImeController @Inject constructor( if (showToast) { val message = resourceProvider.getString(R.string.toast_chose_keyboard, ime.label) - popupMessageAdapter.showPopupMessage(message) + toastAdapter.show(message) } } .otherwise { @@ -137,7 +137,7 @@ class AutoSwitchImeController @Inject constructor( } } .onFailure { error -> - popupMessageAdapter.showPopupMessage(error.getFullMessage(resourceProvider)) + toastAdapter.show(error.getFullMessage(resourceProvider)) } } @@ -152,7 +152,7 @@ class AutoSwitchImeController @Inject constructor( if (showToast) { val message = resourceProvider.getString(R.string.toast_chose_keyboard, ime.label) - popupMessageAdapter.showPopupMessage(message) + toastAdapter.show(message) } } .otherwise { @@ -163,7 +163,7 @@ class AutoSwitchImeController @Inject constructor( } } .onFailure { error -> - popupMessageAdapter.showPopupMessage(error.getFullMessage(resourceProvider)) + toastAdapter.show(error.getFullMessage(resourceProvider)) } } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt index d52608268f..8ae72d224a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt @@ -69,7 +69,7 @@ class ConfigIntentViewModel @Inject constructor( companion object { private val EXTRA_TYPES = arrayOf( - BoolExtraType(), + BoolExtraType, BoolArrayExtraType(), IntExtraType(), IntArrayExtraType(), @@ -415,7 +415,7 @@ class ConfigIntentViewModel @Inject constructor( val value = extrasBundle.get(key) ?: continue val extraType = when (value) { - is Boolean -> BoolExtraType() + is Boolean -> BoolExtraType is BooleanArray -> BoolArrayExtraType() is Int -> IntExtraType() is IntArray -> IntArrayExtraType() diff --git a/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/navigation/OpenMenuHelper.kt similarity index 86% rename from system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/navigation/OpenMenuHelper.kt index d4d558fe35..5ce3d1988a 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/navigation/OpenMenuHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/navigation/OpenMenuHelper.kt @@ -1,25 +1,24 @@ -package io.github.sds100.keymapper.system.navigation +package io.github.sds100.keymapper.base.system.navigation import android.view.KeyEvent import androidx.core.view.accessibility.AccessibilityNodeInfoCompat -import io.github.sds100.keymapper.common.utils.Result -import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeAction import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService +import io.github.sds100.keymapper.common.utils.InputEventType +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.firstBlocking +import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.system.inputevents.InputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.base.utils.InputEventType -import io.github.sds100.keymapper.common.utils.firstBlocking import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch - class OpenMenuHelper( private val suAdapter: SuAdapter, - private val accessibilityService: io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService, + private val accessibilityService: IAccessibilityService, private val shizukuInputEventInjector: InputEventInjector, private val permissionAdapter: PermissionAdapter, private val coroutineScope: CoroutineScope, @@ -49,8 +48,8 @@ class OpenMenuHelper( else -> { accessibilityService.performActionOnNode({ it.contentDescription == OVERFLOW_MENU_CONTENT_DESCRIPTION }) { - io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeAction( - AccessibilityNodeInfoCompat.ACTION_CLICK + AccessibilityNodeAction( + AccessibilityNodeInfoCompat.ACTION_CLICK, ) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/AndroidNotificationAdapter.kt similarity index 59% rename from system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/notifications/AndroidNotificationAdapter.kt index 27a2a40fe6..159552b59a 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/AndroidNotificationAdapter.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/AndroidNotificationAdapter.kt @@ -1,20 +1,25 @@ -package io.github.sds100.keymapper.system.notifications +package io.github.sds100.keymapper.base.system.notifications import android.app.NotificationChannel import android.app.PendingIntent +import android.content.ComponentName import android.content.Context import android.content.Intent import android.os.Build import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import com.google.android.material.color.DynamicColors -import io.github.sds100.keymapper.MainActivity -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.base.utils.color +import dagger.hilt.android.qualifiers.ApplicationContext +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.utils.ui.color +import io.github.sds100.keymapper.common.BuildConfigProvider +import io.github.sds100.keymapper.system.notifications.NotificationAdapter +import io.github.sds100.keymapper.system.notifications.NotificationChannelModel +import io.github.sds100.keymapper.system.notifications.NotificationIntentType +import io.github.sds100.keymapper.system.notifications.NotificationModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton @@ -22,6 +27,7 @@ import javax.inject.Singleton class AndroidNotificationAdapter @Inject constructor( @ApplicationContext private val context: Context, private val coroutineScope: CoroutineScope, + private val buildConfigProvider: BuildConfigProvider, ) : NotificationAdapter { private val ctx = context.applicationContext @@ -33,41 +39,41 @@ class AndroidNotificationAdapter @Inject constructor( val builder = NotificationCompat.Builder(ctx, notification.channel).apply { if (!DynamicColors.isDynamicColorAvailable()) { color = ctx.color(R.color.md_theme_secondary) - } - setContentTitle(notification.title) - setContentText(notification.text) + setContentTitle(notification.title) + setContentText(notification.text) - if (notification.onClickAction != null) { - val pendingIntent = createActionIntent(notification.onClickAction) - setContentIntent(pendingIntent) - } + if (notification.onClickAction != null) { + val pendingIntent = createActionIntent(notification.onClickAction!!) + setContentIntent(pendingIntent) + } - setAutoCancel(notification.autoCancel) - priority = notification.priority + setAutoCancel(notification.autoCancel) + priority = notification.priority - if (notification.onGoing) { - setOngoing(true) - } + if (notification.onGoing) { + setOngoing(true) + } - if (notification.bigTextStyle) { - setStyle(NotificationCompat.BigTextStyle()) - } + if (notification.bigTextStyle) { + setStyle(NotificationCompat.BigTextStyle()) + } - setSmallIcon(notification.icon) + setSmallIcon(notification.icon) - if (!notification.showOnLockscreen) { - setVisibility(NotificationCompat.VISIBILITY_SECRET) - } + if (!notification.showOnLockscreen) { + setVisibility(NotificationCompat.VISIBILITY_SECRET) + } - for (action in notification.actions) { - addAction( - NotificationCompat.Action( - 0, - action.text, - createActionIntent(action.intentType), - ), - ) + for (action in notification.actions) { + addAction( + NotificationCompat.Action( + 0, + action.text, + createActionIntent(action.intentType), + ), + ) + } } } @@ -113,7 +119,12 @@ class AndroidNotificationAdapter @Inject constructor( } is NotificationIntentType.MainActivity -> { - val intent = Intent(ctx, MainActivity::class.java).apply { + val mainActivityComponent = ComponentName( + buildConfigProvider.packageName, + "io.github.sds100.keymapper.MainActivity", + ) + val intent = Intent().apply { + setComponent(mainActivityComponent) action = intentType.customIntentAction ?: Intent.ACTION_MAIN } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationClickReceiver.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationClickReceiver.kt similarity index 60% rename from system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationClickReceiver.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationClickReceiver.kt index df2a2474d1..0aa92613d7 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationClickReceiver.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationClickReceiver.kt @@ -1,18 +1,23 @@ -package io.github.sds100.keymapper.system.notifications +package io.github.sds100.keymapper.base.system.notifications import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Build -import io.github.sds100.keymapper.ServiceLocator +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapterImpl +import javax.inject.Inject +@AndroidEntryPoint +class NotificationClickReceiver : BroadcastReceiver() { + @Inject + lateinit var notificationAdapter: AndroidNotificationAdapter -class NotificationClickReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent?) { intent ?: return - ServiceLocator.notificationAdapter(context).onReceiveNotificationActionIntent(intent) + notificationAdapter.onReceiveNotificationActionIntent(intent) // dismiss the notification drawer after tapping on the notification. This is deprecated on S+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/permissions/AutoGrantPermissionController.kt similarity index 77% rename from system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/permissions/AutoGrantPermissionController.kt index b367034d93..aeed428330 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AutoGrantPermissionController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/permissions/AutoGrantPermissionController.kt @@ -1,10 +1,12 @@ -package io.github.sds100.keymapper.system.permissions +package io.github.sds100.keymapper.base.system.permissions import android.Manifest -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.system.popup.PopupMessageAdapter +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.system.permissions.Permission +import io.github.sds100.keymapper.system.permissions.PermissionAdapter +import io.github.sds100.keymapper.system.popup.ToastAdapter import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn @@ -12,7 +14,7 @@ import kotlinx.coroutines.flow.launchIn class AutoGrantPermissionController( private val coroutineScope: CoroutineScope, private val permissionAdapter: PermissionAdapter, - private val popupAdapter: PopupMessageAdapter, + private val popupAdapter: ToastAdapter, private val resourceProvider: ResourceProvider, ) { @@ -32,7 +34,7 @@ class AutoGrantPermissionController( R.string.toast_granted_itself_write_secure_settings_with_shizuku } - popupAdapter.showPopupMessage(resourceProvider.getString(stringRes)) + popupAdapter.show(resourceProvider.getString(stringRes)) } } }.launchIn(coroutineScope) diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/permissions/RequestPermissionDelegate.kt similarity index 83% rename from system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/permissions/RequestPermissionDelegate.kt index aa4c95cef4..04d28a118e 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/RequestPermissionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/permissions/RequestPermissionDelegate.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.system.permissions +package io.github.sds100.keymapper.base.system.permissions import android.Manifest import android.app.admin.DevicePolicyManager @@ -8,21 +8,23 @@ import android.content.Intent import android.net.Uri import android.os.Build import android.provider.Settings +import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.navigation.NavController -import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.NavAppDirections -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.base.shizuku.ShizukuUtils +import io.github.sds100.keymapper.base.NavAppDirections +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.utils.ui.str +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.system.DeviceAdmin -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapterImpl +import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter +import io.github.sds100.keymapper.system.permissions.Permission +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.base.utils.str -import rikka.shizuku.Shizuku import splitties.alertdialog.appcompat.messageResource import splitties.alertdialog.appcompat.negativeButton import splitties.alertdialog.appcompat.neutralButton @@ -30,21 +32,23 @@ import splitties.alertdialog.appcompat.okButton import splitties.alertdialog.appcompat.positiveButton import splitties.alertdialog.appcompat.titleResource import splitties.alertdialog.material.materialAlertDialog -import splitties.toast.longToast -import splitties.toast.toast - class RequestPermissionDelegate( private val activity: AppCompatActivity, val showDialogs: Boolean, + private val permissionAdapter: AndroidPermissionAdapter, + private val notificationReceiverAdapter: NotificationReceiverAdapterImpl, + private val buildConfigProvider: BuildConfigProvider, + private val shizukuAdapter: ShizukuAdapter, ) { + private val startActivityForResultLauncher = activity.activityResultRegistry.register( "start_activity", activity, ActivityResultContracts.StartActivityForResult(), ) { - ServiceLocator.permissionAdapter(activity).onPermissionsChanged() + permissionAdapter.onPermissionsChanged() } private val requestPermissionLauncher = @@ -53,17 +57,9 @@ class RequestPermissionDelegate( activity, ActivityResultContracts.RequestPermission(), ) { - ServiceLocator.permissionAdapter(activity).onPermissionsChanged() + permissionAdapter.onPermissionsChanged() } - private val permissionAdapter: PermissionAdapter by lazy { - ServiceLocator.permissionAdapter(activity) - } - - private val notificationReceiverAdapter: io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter by lazy { - ServiceLocator.notificationReceiverAdapter(activity) - } - fun requestPermission(permission: Permission, navController: NavController?) { when (permission) { Permission.WRITE_SETTINGS -> requestWriteSettings() @@ -88,9 +84,7 @@ class RequestPermissionDelegate( Permission.SHIZUKU -> if (ShizukuUtils.isSupportedForSdkVersion()) { - if (Shizuku.getBinder() != null) { - Shizuku.requestPermission(AndroidPermissionAdapter.REQUEST_CODE_SHIZUKU_PERMISSION) - } + shizukuAdapter.requestPermission() } Permission.ACCESS_FINE_LOCATION -> @@ -107,7 +101,7 @@ class RequestPermissionDelegate( // open the notification settings to turn it on manually. if (showRationale) { Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply { - putExtra(Settings.EXTRA_APP_PACKAGE, Constants.PACKAGE_NAME) + putExtra(Settings.EXTRA_APP_PACKAGE, buildConfigProvider.packageName) activity.startActivity(this) } @@ -133,7 +127,11 @@ class RequestPermissionDelegate( try { startActivityForResultLauncher.launch(intent) } catch (e: Exception) { - toast(R.string.error_cant_find_dnd_access_settings) + Toast.makeText( + activity, + R.string.error_cant_find_dnd_access_settings, + Toast.LENGTH_SHORT, + ).show() } } } @@ -141,7 +139,7 @@ class RequestPermissionDelegate( private fun requestWriteSettings() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS).apply { - data = Uri.parse("package:${Constants.PACKAGE_NAME}") + data = Uri.parse("package:${buildConfigProvider.packageName}") addFlags( Intent.FLAG_ACTIVITY_NEW_TASK @@ -154,7 +152,11 @@ class RequestPermissionDelegate( try { activity.startActivity(this) } catch (e: Exception) { - toast(R.string.error_cant_find_write_settings_page) + Toast.makeText( + activity, + R.string.error_cant_find_write_settings_page, + Toast.LENGTH_SHORT, + ).show() } } } @@ -274,12 +276,16 @@ class RequestPermissionDelegate( try { val intent = Intent( Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, - Uri.parse("package:${Constants.PACKAGE_NAME}"), + Uri.parse("package:${buildConfigProvider.packageName}"), ) activity.startActivity(intent) } catch (e: ActivityNotFoundException) { - activity.longToast(R.string.error_battery_optimisation_activity_not_found) + Toast.makeText( + activity, + R.string.error_battery_optimisation_activity_not_found, + Toast.LENGTH_LONG, + ).show() } } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/DndModeStrings.kt similarity index 55% rename from system/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/DndModeStrings.kt index b63ec79493..9da8ca6fc2 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/volume/DndModeUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/DndModeStrings.kt @@ -1,11 +1,12 @@ -package io.github.sds100.keymapper.system.volume +package io.github.sds100.keymapper.base.utils -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.system.volume.DndMode -object DndModeUtils { +object DndModeStrings { fun getLabel(dndMode: DndMode) = when (dndMode) { DndMode.ALARMS -> R.string.dnd_mode_alarms DndMode.PRIORITY -> R.string.dnd_mode_priority DndMode.NONE -> R.string.dnd_mode_none } -} +} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/RingerModeStrings.kt similarity index 58% rename from system/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/RingerModeStrings.kt index 47fec9bd4b..9e86bba5d5 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/volume/RingerModeUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/RingerModeStrings.kt @@ -1,12 +1,12 @@ -package io.github.sds100.keymapper.system.volume +package io.github.sds100.keymapper.base.utils -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.system.volume.RingerMode - -object RingerModeUtils { +object RingerModeStrings { fun getLabel(ringerMode: RingerMode) = when (ringerMode) { RingerMode.NORMAL -> R.string.ringer_mode_normal RingerMode.VIBRATE -> R.string.ringer_mode_vibrate RingerMode.SILENT -> R.string.ringer_mode_silent } -} +} \ No newline at end of file diff --git a/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/VolumeStreamStrings.kt similarity index 74% rename from system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/VolumeStreamStrings.kt index 70bd6b1514..acb74dd5a0 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeStreamUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/VolumeStreamStrings.kt @@ -1,9 +1,9 @@ -package io.github.sds100.keymapper.system.volume +package io.github.sds100.keymapper.base.utils -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.system.volume.VolumeStream - -object VolumeStreamUtils { +object VolumeStreamStrings { fun getLabel(stream: VolumeStream) = when (stream) { VolumeStream.ALARM -> R.string.stream_alarm VolumeStream.DTMF -> R.string.stream_dtmf @@ -14,4 +14,4 @@ object VolumeStreamUtils { VolumeStream.VOICE_CALL -> R.string.stream_voice_call VolumeStream.ACCESSIBILITY -> R.string.stream_accessibility } -} +} \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/utils/IntentStrings.kt b/base/src/main/java/io/github/sds100/keymapper/utils/IntentStrings.kt new file mode 100644 index 0000000000..2d0242cd5f --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/utils/IntentStrings.kt @@ -0,0 +1,46 @@ +package io.github.sds100.keymapper.utils + +import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.system.intents.* + +fun IntentExtraType.getLabelStringRes(): Int = when (this) { + is BoolExtraType -> R.string.intent_type_bool_header + is BoolArrayExtraType -> R.string.intent_type_bool_array_header + is IntExtraType -> R.string.intent_type_int_header + is IntArrayExtraType -> R.string.intent_type_int_array_header + is StringExtraType -> R.string.intent_type_string_header + is StringArrayExtraType -> R.string.intent_type_string_array_header + is LongExtraType -> R.string.intent_type_long_header + is LongArrayExtraType -> R.string.intent_type_long_array_header + is ByteExtraType -> R.string.intent_type_byte_header + is ByteArrayExtraType -> R.string.intent_type_byte_array_header + is DoubleExtraType -> R.string.intent_type_double_header + is DoubleArrayExtraType -> R.string.intent_type_double_array_header + is CharExtraType -> R.string.intent_type_char_header + is CharArrayExtraType -> R.string.intent_type_char_array_header + is FloatExtraType -> R.string.intent_type_float_header + is FloatArrayExtraType -> R.string.intent_type_float_array_header + is ShortExtraType -> R.string.intent_type_short_header + is ShortArrayExtraType -> R.string.intent_type_short_array_header +} + +fun IntentExtraType.getExampleStringRes(): Int = when (this) { + is BoolExtraType -> R.string.intent_type_bool_example + is BoolArrayExtraType -> R.string.intent_type_bool_array_example + is IntExtraType -> R.string.intent_type_int_example + is IntArrayExtraType -> R.string.intent_type_int_array_example + is StringExtraType -> R.string.intent_type_string_example + is StringArrayExtraType -> R.string.intent_type_string_array_example + is LongExtraType -> R.string.intent_type_long_example + is LongArrayExtraType -> R.string.intent_type_long_array_example + is ByteExtraType -> R.string.intent_type_byte_example + is ByteArrayExtraType -> R.string.intent_type_byte_array_example + is DoubleExtraType -> R.string.intent_type_double_example + is DoubleArrayExtraType -> R.string.intent_type_double_array_example + is CharExtraType -> R.string.intent_type_char_example + is CharArrayExtraType -> R.string.intent_type_char_array_example + is FloatExtraType -> R.string.intent_type_float_example + is FloatArrayExtraType -> R.string.intent_type_float_array_example + is ShortExtraType -> R.string.intent_type_short_example + is ShortArrayExtraType -> R.string.intent_type_short_array_example +} \ No newline at end of file diff --git a/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt index 580c035dca..0394541116 100644 --- a/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.actions import android.view.KeyEvent import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.base.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter diff --git a/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt index e3bdc2ed16..e6d6f650a7 100644 --- a/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt @@ -8,7 +8,7 @@ import io.github.sds100.keymapper.system.devices.FakeDevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel -import io.github.sds100.keymapper.system.popup.PopupMessageAdapter +import io.github.sds100.keymapper.system.popup.ToastAdapter import io.github.sds100.keymapper.base.utils.InputEventType import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -42,7 +42,7 @@ class PerformActionsUseCaseTest { private lateinit var mockImeInputEventInjector: ImeInputEventInjector private lateinit var fakeDevicesAdapter: FakeDevicesAdapter private lateinit var mockAccessibilityService: IAccessibilityService - private lateinit var mockToastAdapter: PopupMessageAdapter + private lateinit var mockToastAdapter: ToastAdapter @Before fun init() { diff --git a/system/build.gradle.kts b/system/build.gradle.kts index 278b76cdc2..89a9f148bb 100644 --- a/system/build.gradle.kts +++ b/system/build.gradle.kts @@ -40,6 +40,7 @@ android { dependencies { implementation(project(":common")) implementation(project(":data")) + implementation(project(":systemstubs")) // kotlin stuff implementation(libs.kotlinx.coroutines.android) @@ -50,6 +51,12 @@ dependencies { implementation(libs.dagger.hilt.android) ksp(libs.dagger.hilt.android.compiler) implementation(libs.net.lingala.zip4j) + implementation(libs.lsposed.hiddenapibypass) implementation(libs.anggrayudi.storage) implementation(libs.androidx.core.ktx) + implementation(libs.squareup.okhttp) + implementation(libs.rikka.shizuku.api) + implementation(libs.rikka.shizuku.provider) + implementation(libs.androidx.datastore.preferences) + implementation(libs.androidx.preference.ktx) } diff --git a/system/src/main/AndroidManifest.xml b/system/src/main/AndroidManifest.xml index 63b5ee0049..7924c3db50 100644 --- a/system/src/main/AndroidManifest.xml +++ b/system/src/main/AndroidManifest.xml @@ -17,7 +17,6 @@ - diff --git a/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt b/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt index 7276fe95f2..dc855d4815 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt @@ -4,8 +4,8 @@ import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import io.github.sds100.keymapper.system.airplanemode.AndroidAirplaneModeAdapter import io.github.sds100.keymapper.system.airplanemode.AirplaneModeAdapter +import io.github.sds100.keymapper.system.airplanemode.AndroidAirplaneModeAdapter import io.github.sds100.keymapper.system.apps.AndroidAppShortcutAdapter import io.github.sds100.keymapper.system.apps.AndroidPackageManagerAdapter import io.github.sds100.keymapper.system.apps.AppShortcutAdapter @@ -36,14 +36,12 @@ import io.github.sds100.keymapper.system.network.AndroidNetworkAdapter import io.github.sds100.keymapper.system.network.NetworkAdapter import io.github.sds100.keymapper.system.nfc.AndroidNfcAdapter import io.github.sds100.keymapper.system.nfc.NfcAdapter -import io.github.sds100.keymapper.system.notifications.AndroidNotificationAdapter -import io.github.sds100.keymapper.system.notifications.NotificationAdapter import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.phone.AndroidPhoneAdapter import io.github.sds100.keymapper.system.phone.PhoneAdapter import io.github.sds100.keymapper.system.popup.AndroidToastAdapter -import io.github.sds100.keymapper.system.popup.PopupMessageAdapter +import io.github.sds100.keymapper.system.popup.ToastAdapter import io.github.sds100.keymapper.system.power.AndroidPowerAdapter import io.github.sds100.keymapper.system.power.PowerAdapter import io.github.sds100.keymapper.system.ringtones.AndroidRingtoneAdapter @@ -125,10 +123,6 @@ abstract class SystemHiltModule { @Binds abstract fun provideNfcAdapter(impl: AndroidNfcAdapter): NfcAdapter - @Singleton - @Binds - abstract fun provideNotificationAdapter(impl: AndroidNotificationAdapter): NotificationAdapter - @Singleton @Binds abstract fun providePermissionAdapter(impl: AndroidPermissionAdapter): PermissionAdapter @@ -139,7 +133,7 @@ abstract class SystemHiltModule { @Singleton @Binds - abstract fun providePopupMessageAdapter(impl: AndroidToastAdapter): PopupMessageAdapter + abstract fun providePopupMessageAdapter(impl: AndroidToastAdapter): ToastAdapter @Singleton @Binds diff --git a/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt index 2d77ce2768..5d127d1f9d 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentExtraType.kt @@ -1,15 +1,10 @@ package io.github.sds100.keymapper.system.intents import android.content.Intent -import io.github.sds100.keymapper.R import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient @Serializable sealed class IntentExtraType { - abstract val labelStringRes: Int - abstract val exampleStringRes: Int - abstract fun putInIntent(intent: Intent, name: String, value: String) /** @@ -21,13 +16,7 @@ sealed class IntentExtraType { } @Serializable -class BoolExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_bool_header - - @Transient - override val exampleStringRes = R.string.intent_type_bool_example - +data object BoolExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -40,13 +29,7 @@ class BoolExtraType : IntentExtraType() { } @Serializable -class BoolArrayExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_bool_array_header - - @Transient - override val exampleStringRes = R.string.intent_type_bool_array_example - +data object BoolArrayExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -67,13 +50,7 @@ class BoolArrayExtraType : IntentExtraType() { } @Serializable -class IntExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_int_header - - @Transient - override val exampleStringRes = R.string.intent_type_int_example - +data object IntExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -86,13 +63,7 @@ class IntExtraType : IntentExtraType() { } @Serializable -class IntArrayExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_int_array_header - - @Transient - override val exampleStringRes = R.string.intent_type_int_array_example - +data object IntArrayExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -113,13 +84,7 @@ class IntArrayExtraType : IntentExtraType() { } @Serializable -class StringExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_string_header - - @Transient - override val exampleStringRes = R.string.intent_type_string_example - +data object StringExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -128,13 +93,7 @@ class StringExtraType : IntentExtraType() { } @Serializable -class StringArrayExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_string_array_header - - @Transient - override val exampleStringRes = R.string.intent_type_string_array_example - +data object StringArrayExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -149,13 +108,7 @@ class StringArrayExtraType : IntentExtraType() { } @Serializable -class LongExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_long_header - - @Transient - override val exampleStringRes = R.string.intent_type_long_example - +data object LongExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -168,13 +121,7 @@ class LongExtraType : IntentExtraType() { } @Serializable -class LongArrayExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_long_array_header - - @Transient - override val exampleStringRes = R.string.intent_type_long_array_example - +data object LongArrayExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -195,13 +142,7 @@ class LongArrayExtraType : IntentExtraType() { } @Serializable -class ByteExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_byte_header - - @Transient - override val exampleStringRes = R.string.intent_type_byte_example - +data object ByteExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -214,13 +155,7 @@ class ByteExtraType : IntentExtraType() { } @Serializable -class ByteArrayExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_byte_array_header - - @Transient - override val exampleStringRes = R.string.intent_type_byte_array_example - +data object ByteArrayExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -241,13 +176,7 @@ class ByteArrayExtraType : IntentExtraType() { } @Serializable -class DoubleExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_double_header - - @Transient - override val exampleStringRes = R.string.intent_type_double_example - +data object DoubleExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -260,13 +189,7 @@ class DoubleExtraType : IntentExtraType() { } @Serializable -class DoubleArrayExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_double_array_header - - @Transient - override val exampleStringRes = R.string.intent_type_double_array_example - +data object DoubleArrayExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -287,13 +210,7 @@ class DoubleArrayExtraType : IntentExtraType() { } @Serializable -class CharExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_char_header - - @Transient - override val exampleStringRes = R.string.intent_type_char_example - +data object CharExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -306,13 +223,7 @@ class CharExtraType : IntentExtraType() { } @Serializable -class CharArrayExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_char_array_header - - @Transient - override val exampleStringRes = R.string.intent_type_char_array_example - +data object CharArrayExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -333,13 +244,7 @@ class CharArrayExtraType : IntentExtraType() { } @Serializable -class FloatExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_float_header - - @Transient - override val exampleStringRes = R.string.intent_type_float_example - +data object FloatExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -352,13 +257,7 @@ class FloatExtraType : IntentExtraType() { } @Serializable -class FloatArrayExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_float_array_header - - @Transient - override val exampleStringRes = R.string.intent_type_float_array_example - +data object FloatArrayExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -379,13 +278,7 @@ class FloatArrayExtraType : IntentExtraType() { } @Serializable -class ShortExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_short_header - - @Transient - override val exampleStringRes = R.string.intent_type_short_example - +data object ShortExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } @@ -398,13 +291,7 @@ class ShortExtraType : IntentExtraType() { } @Serializable -class ShortArrayExtraType : IntentExtraType() { - @Transient - override val labelStringRes = R.string.intent_type_short_array_header - - @Transient - override val exampleStringRes = R.string.intent_type_short_array_example - +data object ShortArrayExtraType : IntentExtraType() { override fun putInIntent(intent: Intent, name: String, value: String) { intent.putExtra(name, parse(value)) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt index 8b48bfbfa0..059208e275 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapter.kt @@ -4,8 +4,14 @@ import android.app.UiModeManager import android.content.Context import android.content.res.Configuration import androidx.core.content.getSystemService +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton -class LeanbackAdapterImpl(context: Context) : LeanbackAdapter { +@Singleton +class LeanbackAdapterImpl @Inject constructor( + @ApplicationContext context: Context, +) : LeanbackAdapter { private val ctx = context.applicationContext override fun isTvDevice(): Boolean { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapterImpl.kt b/system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapterImpl.kt deleted file mode 100644 index 11870dd64f..0000000000 --- a/system/src/main/java/io/github/sds100/keymapper/system/leanback/LeanbackAdapterImpl.kt +++ /dev/null @@ -1,13 +0,0 @@ -package io.github.sds100.keymapper.system.leanback - -import android.content.Context -import dagger.hilt.android.qualifiers.ApplicationContext -import javax.inject.Inject -import javax.inject.Singleton - -@Singleton -class LeanbackAdapterImpl @Inject constructor( - @ApplicationContext private val context: Context -) : LeanbackAdapter { - // ... existing code ... -} \ No newline at end of file diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt index b340136c20..1b21665d7d 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt @@ -10,16 +10,15 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry import androidx.lifecycle.lifecycleScope -import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.base.utils.ServiceEvent +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.system.media.AndroidMediaAdapter import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import timber.log.Timber +import javax.inject.Inject - -class NotificationReceiver : - NotificationListenerService(), - LifecycleOwner { +@AndroidEntryPoint +class NotificationReceiver : NotificationListenerService(), LifecycleOwner { private val mediaSessionManager: MediaSessionManager by lazy { getSystemService()!! } private val notificationListenerComponent by lazy { @@ -29,7 +28,8 @@ class NotificationReceiver : ) } - private val mediaAdapter by lazy { ServiceLocator.mediaAdapter(this) } + @Inject + lateinit var mediaAdapter: AndroidMediaAdapter private val activeSessionsChangeListener = MediaSessionManager.OnActiveSessionsChangedListener { controllers -> @@ -38,9 +38,9 @@ class NotificationReceiver : private var lastNotificationKey: String? = null - private val serviceAdapter: NotificationReceiverAdapterImpl by lazy { - ServiceLocator.notificationReceiverAdapter(this) - } + + @Inject + lateinit var serviceAdapter: NotificationReceiverAdapterImpl private lateinit var lifecycleRegistry: LifecycleRegistry @@ -53,8 +53,8 @@ class NotificationReceiver : serviceAdapter.eventsToService .onEach { event -> when (event) { - ServiceEvent.DismissLastNotification -> cancelNotification(lastNotificationKey) - ServiceEvent.DismissAllNotifications -> cancelAllNotifications() + NotificationServiceEvent.DismissLastNotification -> cancelNotification(lastNotificationKey) + NotificationServiceEvent.DismissAllNotifications -> cancelAllNotifications() else -> Unit } }.launchIn(lifecycleScope) diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapterImpl.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapterImpl.kt index f433b640a8..8a893f503b 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapterImpl.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapterImpl.kt @@ -15,7 +15,7 @@ import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.withFlag -import io.github.sds100.keymapper.base.JobSchedulerHelper +import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission import kotlinx.coroutines.CoroutineScope @@ -41,7 +41,7 @@ class NotificationReceiverAdapterImpl @Inject constructor( init { // use job scheduler because there is there is a much shorter delay when the app is in the background if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - io.github.sds100.keymapper.base.JobSchedulerHelper.observeEnabledNotificationListeners(ctx) + JobSchedulerHelper.observeEnabledNotificationListeners(ctx) } else { val uri = Settings.Secure.getUriFor("enabled_notification_listeners") val observer = object : ContentObserver(Handler(Looper.getMainLooper())) { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt index 7e4ab25703..08b3ba9ed3 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt @@ -5,16 +5,13 @@ import android.content.Intent import android.os.Build import android.provider.Settings import androidx.annotation.RequiresApi -import io.github.sds100.keymapper.Constants - - object NotificationUtils { @RequiresApi(Build.VERSION_CODES.O) - fun openChannelSettings(ctx: Context, channelId: String) { + fun openChannelSettings(ctx: Context, packageName: String, channelId: String) { Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply { - putExtra(Settings.EXTRA_APP_PACKAGE, Constants.PACKAGE_NAME) + putExtra(Settings.EXTRA_APP_PACKAGE, packageName) putExtra(Settings.EXTRA_CHANNEL_ID, channelId) addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt index 1a9e9656d4..d01039e34d 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/ObserveNotificationListenersJob.kt @@ -3,16 +3,22 @@ package io.github.sds100.keymapper.system.notifications import android.app.job.JobParameters import android.app.job.JobService import android.os.Build -import io.github.sds100.keymapper.KeyMapperApp -import io.github.sds100.keymapper.base.JobSchedulerHelper - +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.system.JobSchedulerHelper +import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter +import javax.inject.Inject +@AndroidEntryPoint class ObserveNotificationListenersJob : JobService() { + + @Inject + lateinit var permissionAdapter: AndroidPermissionAdapter + override fun onStartJob(params: JobParameters?): Boolean { - (applicationContext as KeyMapperApp).permissionAdapter.onPermissionsChanged() + permissionAdapter.onPermissionsChanged() if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - io.github.sds100.keymapper.base.JobSchedulerHelper.observeEnabledNotificationListeners(applicationContext) + JobSchedulerHelper.observeEnabledNotificationListeners(applicationContext) } return false } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt index 7f3d1a3901..ec14c0aad5 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt @@ -16,21 +16,21 @@ import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat import androidx.core.content.getSystemService import dagger.hilt.android.qualifiers.ApplicationContext -import io.github.sds100.keymapper.Constants -import io.github.sds100.keymapper.base.utils.getIdentifier +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.getIdentifier import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.base.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.DeviceAdmin import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapter import io.github.sds100.keymapper.system.root.SuAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuUtils import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow @@ -60,6 +60,7 @@ class AndroidPermissionAdapter @Inject constructor( private val notificationReceiverAdapter: NotificationReceiverAdapter, private val preferenceRepository: PreferenceRepository, private val packageManagerAdapter: PackageManagerAdapter, + private val buildConfigProvider: BuildConfigProvider, ) : PermissionAdapter { companion object { const val REQUEST_CODE_SHIZUKU_PERMISSION = 1 @@ -115,7 +116,7 @@ class AndroidPermissionAdapter @Inject constructor( } } - notificationReceiverAdapter.state + notificationReceiverAdapter.isEnabled .drop(1) .onEach { onPermissionsChanged() } .launchIn(coroutineScope) @@ -158,7 +159,7 @@ class AndroidPermissionAdapter @Inject constructor( } } else if (isGranted(Permission.ROOT)) { suAdapter.execute( - "pm grant ${Constants.PACKAGE_NAME} $permissionName", + "pm grant ${buildConfigProvider.packageName} $permissionName", block = true, ) if (ContextCompat.checkSelfPermission(ctx, permissionName) == PERMISSION_GRANTED) { @@ -189,7 +190,7 @@ class AndroidPermissionAdapter @Inject constructor( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { try { shizukuPermissionManager.grantRuntimePermission( - Constants.PACKAGE_NAME, + buildConfigProvider.packageName, permissionName, ctx.deviceId, userId, @@ -197,14 +198,14 @@ class AndroidPermissionAdapter @Inject constructor( } catch (_: NoSuchMethodError) { try { shizukuPermissionManager.grantRuntimePermission( - Constants.PACKAGE_NAME, + buildConfigProvider.packageName, permissionName, "0", userId, ) } catch (_: NoSuchMethodError) { shizukuPermissionManager.grantRuntimePermission( - Constants.PACKAGE_NAME, + buildConfigProvider.packageName, permissionName, userId, ) @@ -213,13 +214,13 @@ class AndroidPermissionAdapter @Inject constructor( // In Android 11 this method was moved from IPackageManager to IPermissionManager. } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { shizukuPermissionManager.grantRuntimePermission( - Constants.PACKAGE_NAME, + buildConfigProvider.packageName, permissionName, userId, ) } else { shizukuPackageManager.grantRuntimePermission( - Constants.PACKAGE_NAME, + buildConfigProvider.packageName, permissionName, userId, ) @@ -272,7 +273,7 @@ class AndroidPermissionAdapter @Inject constructor( Permission.NOTIFICATION_LISTENER -> NotificationManagerCompat.getEnabledListenerPackages(ctx) - .contains(Constants.PACKAGE_NAME) + .contains(buildConfigProvider.packageName) Permission.CALL_PHONE -> ContextCompat.checkSelfPermission( @@ -285,7 +286,7 @@ class AndroidPermissionAdapter @Inject constructor( Permission.IGNORE_BATTERY_OPTIMISATION -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { val ignoringOptimisations = - powerManager?.isIgnoringBatteryOptimizations(Constants.PACKAGE_NAME) + powerManager?.isIgnoringBatteryOptimizations(buildConfigProvider.packageName) when { powerManager == null -> Timber.i("Power manager is null") diff --git a/system/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt index ea5b936331..b4e7e7cf0a 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/popup/AndroidToastAdapter.kt @@ -1,18 +1,16 @@ package io.github.sds100.keymapper.system.popup import android.content.Context +import android.widget.Toast import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton -import splitties.toast.toast @Singleton class AndroidToastAdapter @Inject constructor( - @ApplicationContext private val context: Context -) : PopupMessageAdapter { - private val ctx: Context = context.applicationContext - - override fun showPopupMessage(message: String) { - ctx.toast(message) + @ApplicationContext private val ctx: Context, +) : ToastAdapter { + override fun show(message: String) { + Toast.makeText(ctx, message, Toast.LENGTH_SHORT).show() } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt deleted file mode 100644 index 925f720b11..0000000000 --- a/system/src/main/java/io/github/sds100/keymapper/system/popup/PopupMessageAdapter.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.sds100.keymapper.system.popup - - -interface PopupMessageAdapter { - fun showPopupMessage(message: String) -} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/popup/ToastAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/popup/ToastAdapter.kt new file mode 100644 index 0000000000..4cce00be35 --- /dev/null +++ b/system/src/main/java/io/github/sds100/keymapper/system/popup/ToastAdapter.kt @@ -0,0 +1,6 @@ +package io.github.sds100.keymapper.system.popup + + +interface ToastAdapter { + fun show(message: String) +} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/ringtones/AndroidRingtoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/ringtones/AndroidRingtoneAdapter.kt deleted file mode 100644 index ce0d42fb58..0000000000 --- a/system/src/main/java/io/github/sds100/keymapper/system/ringtones/AndroidRingtoneAdapter.kt +++ /dev/null @@ -1,13 +0,0 @@ -package io.github.sds100.keymapper.system.ringtones - -import android.content.Context -import dagger.hilt.android.qualifiers.ApplicationContext -import javax.inject.Inject -import javax.inject.Singleton - -@Singleton -class AndroidRingtoneAdapter @Inject constructor( - @ApplicationContext private val context: Context -) : RingtoneAdapter { - // ... existing code ... -} \ No newline at end of file diff --git a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapterImpl.kt b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapterImpl.kt deleted file mode 100644 index 9461464c1c..0000000000 --- a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapterImpl.kt +++ /dev/null @@ -1,13 +0,0 @@ -package io.github.sds100.keymapper.system.root - -import android.content.Context -import dagger.hilt.android.qualifiers.ApplicationContext -import javax.inject.Inject -import javax.inject.Singleton - -@Singleton -class SuAdapterImpl @Inject constructor( - @ApplicationContext private val context: Context -) : SuAdapter { - // ... existing code ... -} \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuAdapter.kt similarity index 69% rename from base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuAdapter.kt rename to system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuAdapter.kt index 744c5e1ddb..d3c1aabf02 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuAdapter.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.shizuku +package io.github.sds100.keymapper.system.shizuku import kotlinx.coroutines.flow.StateFlow @@ -7,4 +7,5 @@ interface ShizukuAdapter { val isInstalled: StateFlow val isStarted: StateFlow fun openShizukuApp() + fun requestPermission() } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuAdapterImpl.kt b/system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuAdapterImpl.kt similarity index 84% rename from base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuAdapterImpl.kt rename to system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuAdapterImpl.kt index 9f0b7b2f3f..14064916a4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuAdapterImpl.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuAdapterImpl.kt @@ -1,7 +1,8 @@ -package io.github.sds100.keymapper.base.shizuku +package io.github.sds100.keymapper.system.shizuku import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.apps.isAppInstalledFlow +import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted @@ -10,7 +11,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.stateIn import rikka.shizuku.Shizuku - class ShizukuAdapterImpl( private val coroutineScope: CoroutineScope, private val packageManagerAdapter: PackageManagerAdapter, @@ -49,4 +49,10 @@ class ShizukuAdapterImpl( override fun openShizukuApp() { packageManagerAdapter.openApp(ShizukuUtils.SHIZUKU_PACKAGE) } + + override fun requestPermission() { + if (Shizuku.getBinder() != null) { + Shizuku.requestPermission(AndroidPermissionAdapter.REQUEST_CODE_SHIZUKU_PERMISSION) + } + } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt b/system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuInputEventInjector.kt similarity index 97% rename from base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt rename to system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuInputEventInjector.kt index f027e0d0b9..e63b4e4590 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuInputEventInjector.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuInputEventInjector.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.shizuku +package io.github.sds100.keymapper.system.shizuku import android.annotation.SuppressLint import android.content.Context diff --git a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuUtils.kt similarity index 90% rename from base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuUtils.kt rename to system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuUtils.kt index 226d827bfe..df8a057936 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/shizuku/ShizukuUtils.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.shizuku +package io.github.sds100.keymapper.system.shizuku import android.os.Build diff --git a/systemstubs/build.gradle.kts b/systemstubs/build.gradle.kts index 0a2143212c..55a7af6e29 100644 --- a/systemstubs/build.gradle.kts +++ b/systemstubs/build.gradle.kts @@ -30,6 +30,10 @@ android { kotlinOptions { jvmTarget = "17" } + + buildFeatures { + aidl = true + } } dependencies { diff --git a/systemstubs/src/main/aidl/android/content/pm/IPackageManager.aidl b/systemstubs/src/main/aidl/android/content/pm/IPackageManager.aidl new file mode 100644 index 0000000000..51f2382d8b --- /dev/null +++ b/systemstubs/src/main/aidl/android/content/pm/IPackageManager.aidl @@ -0,0 +1,5 @@ +package android.content.pm; + +interface IPackageManager { + void grantRuntimePermission(String packageName, String permissionName, int userId); +} \ No newline at end of file diff --git a/systemstubs/src/main/aidl/android/hardware/input/IInputManager.aidl b/systemstubs/src/main/aidl/android/hardware/input/IInputManager.aidl new file mode 100644 index 0000000000..0cbe5f383d --- /dev/null +++ b/systemstubs/src/main/aidl/android/hardware/input/IInputManager.aidl @@ -0,0 +1,6 @@ +package android.hardware.input; + + +interface IInputManager { + boolean injectInputEvent(in InputEvent event, int mode); +} \ No newline at end of file From 1adb550e91de1fe353292232126d6893b5dbc35a Mon Sep 17 00:00:00 2001 From: sds100 Date: Sun, 18 May 2025 12:47:09 +0200 Subject: [PATCH 21/71] #1711 WIP: refactor more files --- base/build.gradle.kts | 1 + .../sds100/keymapper/base/BaseHiltModule.kt | 5 + .../sds100/keymapper/base/BaseKeyMapperApp.kt | 63 ++++------- .../base/actions/CreateActionUseCase.kt | 3 +- .../keyevent/ChooseKeyCodeViewModel.kt | 7 +- .../inputmethod/AutoSwitchImeController.kt | 6 +- .../system/intents/ConfigIntentViewModel.kt | 102 +++++++++--------- .../notifications/NotificationController.kt | 4 +- 8 files changed, 92 insertions(+), 99 deletions(-) diff --git a/base/build.gradle.kts b/base/build.gradle.kts index 611a99a762..fe09b340f2 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -8,6 +8,7 @@ plugins { alias(libs.plugins.androidx.navigation.safeargs.kotlin) alias(libs.plugins.google.devtools.ksp) alias(libs.plugins.jlleitschuh.gradle.ktlint) + alias(libs.plugins.dagger.hilt.android) } android { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseHiltModule.kt index c1d829950b..be27df4c66 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseHiltModule.kt @@ -5,6 +5,8 @@ import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import io.github.sds100.keymapper.base.system.notifications.AndroidNotificationAdapter +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ResourceProviderImpl import io.github.sds100.keymapper.system.notifications.NotificationAdapter import javax.inject.Singleton @@ -15,4 +17,7 @@ abstract class BaseHiltModule { @Binds abstract fun provideNotificationAdapter(impl: AndroidNotificationAdapter): NotificationAdapter + @Singleton + @Binds + abstract fun provideResourceProvider(impl: ResourceProviderImpl): ResourceProvider } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseKeyMapperApp.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseKeyMapperApp.kt index 08bbb3790b..1a4a80c4ce 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseKeyMapperApp.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseKeyMapperApp.kt @@ -12,22 +12,21 @@ import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.OnLifecycleEvent import androidx.lifecycle.ProcessLifecycleOwner import androidx.multidex.MultiDexApplication -import dagger.hilt.android.HiltAndroidApp import io.github.sds100.keymapper.base.logging.KeyMapperLoggingTree import io.github.sds100.keymapper.base.settings.ThemeUtils +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapterImpl +import io.github.sds100.keymapper.base.system.inputmethod.AutoSwitchImeController +import io.github.sds100.keymapper.base.system.notifications.NotificationController +import io.github.sds100.keymapper.base.system.permissions.AutoGrantPermissionController import io.github.sds100.keymapper.data.Keys +import io.github.sds100.keymapper.data.entities.LogEntryEntity +import io.github.sds100.keymapper.data.repositories.LogRepository import io.github.sds100.keymapper.data.repositories.SettingsPreferenceRepository -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapterImpl import io.github.sds100.keymapper.system.apps.AndroidPackageManagerAdapter import io.github.sds100.keymapper.system.devices.AndroidDevicesAdapter -import io.github.sds100.keymapper.base.system.inputmethod.AutoSwitchImeController -import io.github.sds100.keymapper.system.inputmethod.ShowHideInputMethodUseCaseImpl -import io.github.sds100.keymapper.base.system.notifications.AndroidNotificationAdapter -import io.github.sds100.keymapper.base.system.notifications.ManageNotificationsUseCaseImpl -import io.github.sds100.keymapper.base.system.notifications.NotificationController import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter -import io.github.sds100.keymapper.base.system.permissions.AutoGrantPermissionController import io.github.sds100.keymapper.system.permissions.Permission +import io.github.sds100.keymapper.system.root.SuAdapterImpl import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.launchIn @@ -41,7 +40,6 @@ import java.util.Calendar import javax.inject.Inject @SuppressLint("LogNotTimber") -@HiltAndroidApp abstract class BaseKeyMapperApp : MultiDexApplication() { private val tag = BaseKeyMapperApp::class.simpleName @@ -49,9 +47,9 @@ abstract class BaseKeyMapperApp : MultiDexApplication() { lateinit var appCoroutineScope: CoroutineScope @Inject - lateinit var notificationAdapter: AndroidNotificationAdapter - lateinit var notificationController: NotificationController + + @Inject lateinit var autoSwitchImeController: AutoSwitchImeController @Inject @@ -78,6 +76,9 @@ abstract class BaseKeyMapperApp : MultiDexApplication() { @Inject lateinit var settingsRepository: SettingsPreferenceRepository + @Inject + lateinit var logRepository: LogRepository + private val processLifecycleOwner by lazy { ProcessLifecycleOwner.get() } private val userManager: UserManager? by lazy { getSystemService() } @@ -92,15 +93,15 @@ abstract class BaseKeyMapperApp : MultiDexApplication() { Thread.setDefaultUncaughtExceptionHandler { thread, exception -> // log in a blocking manner and always log regardless of whether the setting is turned on - val entry = io.github.sds100.keymapper.data.entities.LogEntryEntity( + val entry = LogEntryEntity( id = 0, time = Calendar.getInstance().timeInMillis, - severity = io.github.sds100.keymapper.data.entities.LogEntryEntity.SEVERITY_ERROR, + severity = LogEntryEntity.SEVERITY_ERROR, message = exception.stackTraceToString(), ) runBlocking { - ServiceLocator.logRepository(this@BaseKeyMapperApp).insertSuspend(entry) + logRepository.insertSuspend(entry) } priorExceptionHandler?.uncaughtException(thread, exception) @@ -151,33 +152,9 @@ abstract class BaseKeyMapperApp : MultiDexApplication() { Timber.plant(loggingTree) - notificationController = NotificationController( - appCoroutineScope, - ManageNotificationsUseCaseImpl( - ServiceLocator.settingsRepository(this), - notificationAdapter, - suAdapter, - permissionAdapter, - ), - UseCases.pauseKeyMaps(this), - UseCases.showImePicker(this), - UseCases.controlAccessibilityService(this), - UseCases.toggleCompatibleIme(this), - ShowHideInputMethodUseCaseImpl(ServiceLocator.accessibilityServiceAdapter(this)), - UseCases.onboarding(this), - ServiceLocator.resourceProvider(this), - ) - - autoSwitchImeController = AutoSwitchImeController( - appCoroutineScope, - ServiceLocator.settingsRepository(this), - ServiceLocator.inputMethodAdapter(this), - UseCases.pauseKeyMaps(this), - devicesAdapter, - popupMessageAdapter, - resourceProvider, - ServiceLocator.accessibilityServiceAdapter(this), - ) + notificationController.init() + + autoSwitchImeController .init() processLifecycleOwner.lifecycle.addObserver(object : LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) @@ -193,7 +170,7 @@ abstract class BaseKeyMapperApp : MultiDexApplication() { appCoroutineScope.launch { notificationController.openApp.collectLatest { intentAction -> - Intent(this@BaseKeyMapperApp, MainActivity::class.java).apply { + Intent(this@BaseKeyMapperApp, getMainActivityClass()).apply { action = intentAction flags = Intent.FLAG_ACTIVITY_NEW_TASK @@ -208,4 +185,6 @@ abstract class BaseKeyMapperApp : MultiDexApplication() { autoGrantPermissionController.start() } + + abstract fun getMainActivityClass(): Class<*> } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt index ee70647330..6d363783eb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt @@ -8,6 +8,7 @@ import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter +import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter import io.github.sds100.keymapper.system.systemfeature.SystemFeatureAdapter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first @@ -20,7 +21,7 @@ class CreateActionUseCaseImpl @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, private val systemFeatureAdapter: SystemFeatureAdapter, private val cameraAdapter: CameraAdapter, - private val permissionAdapter: PermissionAdapter + private val permissionAdapter: PermissionAdapter, ) : CreateActionUseCase, IsActionSupportedUseCase by IsActionSupportedUseCaseImpl( systemFeatureAdapter, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt index fa4dbabe5a..ad4b34732c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -5,13 +5,13 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.actions.ActionData -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.base.utils.filterByQuery import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.system.inputevents.InputEventUtils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -21,9 +21,10 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import javax.inject.Inject @HiltViewModel -class ChooseKeyCodeViewModel : +class ChooseKeyCodeViewModel @Inject constructor() : ViewModel(), PopupViewModel by PopupViewModelImpl() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt index dcbb3d6d5a..847455cfeb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt @@ -4,6 +4,7 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess @@ -33,8 +34,9 @@ class AutoSwitchImeController @Inject constructor( private val toastAdapter: ToastAdapter, private val resourceProvider: ResourceProvider, private val accessibilityServiceAdapter: AccessibilityServiceAdapter, + private val buildConfigProvider: BuildConfigProvider, ) : PreferenceRepository by preferenceRepository { - private val imeHelper = KeyMapperImeHelper(inputMethodAdapter) + private val imeHelper = KeyMapperImeHelper(inputMethodAdapter, buildConfigProvider.packageName) private val devicesThatToggleKeyboard by PrefDelegate(Keys.devicesThatChangeIme, emptySet()) @@ -54,7 +56,7 @@ class AutoSwitchImeController @Inject constructor( private var showToast: Boolean = PreferenceDefaults.SHOW_TOAST_WHEN_AUTO_CHANGE_IME - init { + fun init() { pauseKeyMapsUseCase.isPaused.onEach { isPaused -> if (!toggleKeyboardOnToggleKeymaps) return@onEach diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt index 8ae72d224a..6770e23b07 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt @@ -8,7 +8,20 @@ import androidx.core.net.toUri import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem +import io.github.sds100.keymapper.base.utils.ui.NavDestination +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.withFlag import io.github.sds100.keymapper.system.apps.ActivityInfo import io.github.sds100.keymapper.system.intents.BoolArrayExtraType import io.github.sds100.keymapper.system.intents.BoolExtraType @@ -33,17 +46,8 @@ import io.github.sds100.keymapper.system.intents.ShortArrayExtraType import io.github.sds100.keymapper.system.intents.ShortExtraType import io.github.sds100.keymapper.system.intents.StringArrayExtraType import io.github.sds100.keymapper.system.intents.StringExtraType -import io.github.sds100.keymapper.base.utils.DialogResponse -import io.github.sds100.keymapper.base.utils.MultiChoiceItem -import io.github.sds100.keymapper.base.utils.NavDestination -import io.github.sds100.keymapper.base.utils.NavigationViewModel -import io.github.sds100.keymapper.base.utils.NavigationViewModelImpl -import io.github.sds100.keymapper.base.utils.PopupUi -import io.github.sds100.keymapper.base.utils.PopupViewModel -import io.github.sds100.keymapper.base.utils.PopupViewModelImpl -import io.github.sds100.keymapper.base.utils.ResourceProvider -import io.github.sds100.keymapper.base.utils.navigate -import io.github.sds100.keymapper.base.utils.showPopup +import io.github.sds100.keymapper.utils.getExampleStringRes +import io.github.sds100.keymapper.utils.getLabelStringRes import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -55,8 +59,6 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -import io.github.sds100.keymapper.common.utils.hasFlag -import io.github.sds100.keymapper.common.utils.withFlag import javax.inject.Inject @HiltViewModel @@ -70,23 +72,23 @@ class ConfigIntentViewModel @Inject constructor( companion object { private val EXTRA_TYPES = arrayOf( BoolExtraType, - BoolArrayExtraType(), - IntExtraType(), - IntArrayExtraType(), - StringExtraType(), - StringArrayExtraType(), - LongExtraType(), - LongArrayExtraType(), - ByteExtraType(), - ByteArrayExtraType(), - DoubleExtraType(), - DoubleArrayExtraType(), - CharExtraType(), - CharArrayExtraType(), - FloatExtraType(), - FloatArrayExtraType(), - ShortExtraType(), - ShortArrayExtraType(), + BoolArrayExtraType, + IntExtraType, + IntArrayExtraType, + StringExtraType, + StringArrayExtraType, + LongExtraType, + LongArrayExtraType, + ByteExtraType, + ByteArrayExtraType, + DoubleExtraType, + DoubleArrayExtraType, + CharExtraType, + CharArrayExtraType, + FloatExtraType, + FloatArrayExtraType, + ShortExtraType, + ShortArrayExtraType, ) val availableIntentFlags: List> = @@ -318,14 +320,14 @@ class ConfigIntentViewModel @Inject constructor( fun onAddExtraClick() { viewModelScope.launch { - val items = EXTRA_TYPES.map { it to getString(it.labelStringRes) } + val items = EXTRA_TYPES.map { it to getString(it.getLabelStringRes()) } val dialog = PopupUi.SingleChoice(items) val extraType = showPopup("add_extra", dialog) ?: return@launch val modelValue = when (extraType) { - is BoolExtraType -> "true" + BoolExtraType -> "true" else -> "" } @@ -416,21 +418,21 @@ class ConfigIntentViewModel @Inject constructor( val extraType = when (value) { is Boolean -> BoolExtraType - is BooleanArray -> BoolArrayExtraType() - is Int -> IntExtraType() - is IntArray -> IntArrayExtraType() - is Long -> LongExtraType() - is LongArrayExtraType -> LongArrayExtraType() - is Byte -> ByteExtraType() - is ByteArrayExtraType -> ByteArrayExtraType() - is Double -> DoubleExtraType() - is DoubleArray -> DoubleArrayExtraType() - is Float -> FloatExtraType() - is FloatArray -> FloatArrayExtraType() - is Short -> ShortExtraType() - is ShortArray -> ShortArrayExtraType() - is String -> StringExtraType() - is Array<*> -> StringArrayExtraType() + is BooleanArray -> BoolArrayExtraType + is Int -> IntExtraType + is IntArray -> IntArrayExtraType + is Long -> LongExtraType + is LongArrayExtraType -> LongArrayExtraType + is Byte -> ByteExtraType + is ByteArrayExtraType -> ByteArrayExtraType + is Double -> DoubleExtraType + is DoubleArray -> DoubleArrayExtraType + is Float -> FloatExtraType + is FloatArray -> FloatArrayExtraType + is Short -> ShortExtraType + is ShortArray -> ShortArrayExtraType + is String -> StringExtraType + is Array<*> -> StringArrayExtraType else -> throw IllegalArgumentException("Don't know how to convert this extra (${value.javaClass.name}) to an IntentExtraType") } @@ -533,11 +535,11 @@ class ConfigIntentViewModel @Inject constructor( GenericIntentExtraListItem( uid, - getString(type.labelStringRes), + getString(type.getLabelStringRes()), name, value, isValidValue, - getString(type.exampleStringRes), + getString(type.getExampleStringRes()), inputType, ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt index 13b533c00b..e761d17da4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt @@ -5,6 +5,7 @@ import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import io.github.sds100.keymapper.base.BaseMainActivity import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.ui.ResourceProvider @@ -15,6 +16,7 @@ import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.mapping.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.system.accessibility.ControlAccessibilityServiceUseCase +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import io.github.sds100.keymapper.system.inputmethod.ShowHideInputMethodUseCase import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase @@ -105,7 +107,7 @@ class NotificationController @Inject constructor( private val _showToast = MutableSharedFlow() val showToast = _showToast.asSharedFlow() - init { + fun init() { manageNotifications.deleteChannel(CHANNEL_ID_WARNINGS) manageNotifications.deleteChannel(CHANNEL_ID_PERSISTENT) From 6a355fbf2b8c56595f5dc5781ad711af49cbcc34 Mon Sep 17 00:00:00 2001 From: sds100 Date: Sun, 18 May 2025 15:16:56 +0200 Subject: [PATCH 22/71] #1711 refactor more --- .../sds100/keymapper/home/HomeViewModel.kt | 40 ++++ .../AccessibilityServiceController.kt | 2 +- .../accessibility/MyAccessibilityService.kt | 2 +- .../keymaps/detection/KeyMapController.kt | 24 +- .../trigger/AdvancedTriggersBottomSheet.kt | 2 +- .../trigger/ConfigTriggerViewModel.kt | 2 +- base/src/main/AndroidManifest.xml | 2 +- .../sds100/keymapper/base/BaseMainActivity.kt | 2 +- .../keymapper/base/actions/ActionListItem.kt | 2 +- .../base/actions/ActionOptionsBottomSheet.kt | 2 +- .../keymapper/base/actions/ActionUtils.kt | 2 +- .../keymapper/base/actions/ActionsScreen.kt | 2 +- .../base/actions/ChooseActionScreen.kt | 2 +- .../base/actions/ChooseActionViewModel.kt | 2 +- .../base/actions/ConfigActionsViewModel.kt | 7 +- .../base/actions/CreateActionDelegate.kt | 2 +- .../base/actions/CreateActionUseCase.kt | 3 - .../actions/FlashlightActionBottomSheet.kt | 2 +- .../base/actions/HttpRequestBottomSheet.kt | 2 +- .../base/actions/PerformActionsUseCase.kt | 10 +- .../keyevent/ConfigKeyEventActionFragment.kt | 2 +- .../keyevent/ConfigKeyEventActionViewModel.kt | 2 +- .../PinchPickDisplayCoordinateFragment.kt | 2 +- .../PinchPickDisplayCoordinateViewModel.kt | 2 +- .../actions/sound/ChooseSoundFileViewModel.kt | 2 +- .../SwipePickDisplayCoordinateViewModel.kt | 2 +- .../tapscreen/PickCoordinateImageView.kt | 2 +- .../PickDisplayCoordinateViewModel.kt | 2 +- .../uielement/ChooseUiElementScreen.kt | 2 +- .../uielement/InteractUiElementScreen.kt | 2 +- .../uielement/InteractUiElementViewModel.kt | 2 +- .../backup/BackupRestoreMappingsUseCase.kt | 3 +- .../base/backup/RestoreKeyMapsActivity.kt | 2 +- .../constraints/ChooseConstraintScreen.kt | 2 +- .../constraints/ChooseConstraintViewModel.kt | 2 +- .../constraints/ConfigConstraintsViewModel.kt | 15 +- .../base/constraints/ConstraintListItem.kt | 2 +- .../base/constraints/ConstraintUiHelper.kt | 2 +- .../base/constraints/ConstraintUtils.kt | 2 +- .../base/constraints/ConstraintsScreen.kt | 2 +- .../constraints/GetConstraintErrorUseCase.kt | 2 +- .../constraints/TimeConstraintBottomSheet.kt | 2 +- .../base/groups/DeleteGroupDialog.kt | 2 +- .../sds100/keymapper/base/groups/Group.kt | 6 +- .../base/groups/GroupBreadcrumbRow.kt | 2 +- .../base/groups/GroupConstraintRow.kt | 4 +- .../sds100/keymapper/base/groups/GroupRow.kt | 2 +- ...{HomeViewModel.kt => BaseHomeViewModel.kt} | 52 +---- .../base/home/DeleteKeyMapsDialog.kt | 2 +- .../keymapper/base/home/HomeFragment.kt | 4 +- .../base/home/HomeKeyMapListScreen.kt | 22 +- .../sds100/keymapper/base/home/HomeScreen.kt | 2 +- .../keymapper/base/home/HomeWarningList.kt | 2 +- .../keymapper/base/home/ImportDialog.kt | 2 +- .../keymapper/base/home/KeyMapListAppBar.kt | 14 +- .../base/home/SelectionBottomSheet.kt | 8 +- .../base/keymaps/ConfigKeyMapFragment.kt | 2 +- .../keymaps/ConfigKeyMapOptionsViewModel.kt | 2 +- .../base/keymaps/ConfigKeyMapScreen.kt | 8 +- .../base/keymaps/ConfigKeyMapViewModel.kt | 65 +----- .../keymaps/CreateKeyMapShortcutActivity.kt | 2 +- .../keymaps/CreateKeyMapShortcutScreen.kt | 14 +- .../keymaps/CreateKeyMapShortcutUseCase.kt | 4 +- .../keymaps/CreateKeyMapShortcutViewModel.kt | 14 +- .../base/keymaps/DisplayKeyMapUseCase.kt | 23 +- .../FingerprintGesturesSupportedUseCase.kt | 2 - .../sds100/keymapper/base/keymaps/KeyMap.kt | 18 +- .../base/keymaps/KeyMapAppBarState.kt | 4 +- .../keymapper/base/keymaps/KeyMapGroup.kt | 2 +- .../base/keymaps/KeyMapListItemCreator.kt | 32 +-- .../base/keymaps/KeyMapListScreen.kt | 8 +- .../keymapper/base/keymaps/KeyMapListState.kt | 2 +- .../base/keymaps/KeyMapListViewModel.kt | 90 +++---- .../base/keymaps/KeyMapOptionsScreen.kt | 2 +- .../base/keymaps/ListKeyMapsUseCase.kt | 22 +- .../base/keymaps/PauseKeyMapsUseCase.kt | 3 +- .../keymapper/base/keymaps/ShortcutRow.kt | 4 +- .../base/keymaps/SimpleMappingController.kt | 6 +- .../keymaps/detection/DetectKeyMapModel.kt | 2 +- .../keymaps/detection/DetectKeyMapsUseCase.kt | 14 +- .../ParallelTriggerActionPerformer.kt | 2 +- .../SequenceTriggerActionPerformer.kt | 2 +- .../TriggerKeyMapFromOtherAppsController.kt | 2 +- .../base/logging/DisplayLogUseCase.kt | 2 +- .../keymapper/base/logging/LogFragment.kt | 2 +- .../keymapper/base/logging/LogViewModel.kt | 2 +- .../base/onboarding/OnboardingTapTarget.kt | 2 +- .../RerouteKeyEventsController.kt | 2 +- .../RerouteKeyEventsUseCase.kt | 2 - .../Android11BugWorkaroundSettingsFragment.kt | 2 +- .../AutomaticallyChangeImeSettings.kt | 2 +- .../base/settings/BaseSettingsFragment.kt | 2 +- .../DefaultOptionsSettingsFragment.kt | 2 +- .../settings/ImePickerSettingsFragment.kt | 2 +- .../base/settings/MainSettingsFragment.kt | 4 +- .../keymapper/base/settings/SettingsUtils.kt | 2 +- .../base/settings/SettingsViewModel.kt | 2 +- .../base/settings/ShizukuSettingsFragment.kt | 2 +- .../base/sorting/SortBottomSheetContent.kt | 2 +- .../base/sorting/SortKeyMapsUseCase.kt | 2 - .../KeyMapConstraintsComparator.kt | 4 +- .../system/ChooseBluetoothDeviceViewModel.kt | 2 +- .../accessibility/BaseAccessibilityService.kt | 4 +- .../BaseAccessibilityServiceController.kt | 10 +- .../accessibility/IAccessibilityService.kt | 2 +- .../base/system/apps/ChooseAppScreen.kt | 2 +- .../system/apps/ChooseAppShortcutFragment.kt | 2 +- .../system/apps/ChooseAppShortcutViewModel.kt | 2 +- .../notifications/NotificationController.kt | 2 +- .../base/tiles/ToggleMappingsTile.kt | 2 +- .../trigger/BaseConfigTriggerViewModel.kt | 221 +++++++++--------- .../base/trigger/KeyMapListItemModel.kt | 2 +- .../base/trigger/RecordTriggerButtonRow.kt | 4 +- .../trigger/SetupGuiKeyboardBottomSheet.kt | 2 +- .../base/trigger/TriggerKeyListItem.kt | 2 +- .../trigger/TriggerKeyOptionsBottomSheet.kt | 2 +- .../keymapper/base/trigger/TriggerScreen.kt | 2 +- .../keymapper/base/utils/ui/DialogUtils.kt | 2 +- .../keymapper/base/utils/ui/NavDestination.kt | 2 +- .../base/utils/ui/NavigationViewModel.kt | 4 +- .../keymapper/base/utils/ui/PopupViewModel.kt | 2 +- .../base/utils/ui/RecyclerViewFragment.kt | 2 +- .../base/utils/ui/RecyclerViewUtils.kt | 2 +- .../utils/ui/SimpleRecyclerViewFragment.kt | 2 +- .../keymapper/base/utils/ui/SnackBarUtils.kt | 2 +- .../base/utils/ui/ViewModelHelper.kt | 2 +- .../utils/ui/compose/KeyMapperTapTarget.kt | 4 +- .../base/utils/ui/compose/ListItemFixError.kt | 2 +- .../utils/ui/compose/SearchAppBarActions.kt | 2 +- .../base/utils/ui/compose/SimpleListItem.kt | 2 +- .../base/utils/ui/compose/SliderOptionText.kt | 2 +- .../base/utils/ui/compose/UriHandlerUtils.kt | 2 +- .../sds100/keymapper/utils/IntentStrings.kt | 2 +- base/src/main/res/navigation/nav_app.xml | 2 +- .../sds100/keymapper/BackupManagerTest.kt | 6 +- .../keymapper/ConfigKeyMapUseCaseTest.kt | 18 +- .../actions/PerformActionsUseCaseTest.kt | 2 +- .../keymapper/keymaps/KeyMapControllerTest.kt | 26 +-- .../ProcessKeyMapGroupsForDetectionTest.kt | 8 +- ...riggerKeyMapFromOtherAppsControllerTest.kt | 4 +- .../sds100/keymapper/util/KeyMapUtils.kt | 12 +- .../keymapper/util/TestConstraintSnapshot.kt | 4 +- .../sds100/keymapper/data/DataHiltModule.kt | 40 ++++ .../sds100/keymapper/data/db/AppDatabase.kt | 2 + .../keymapper/data/db/AppDatabaseModule.kt | 86 +++++++ .../AccessibilityNodeRepository.kt | 47 ---- .../repositories/FloatingButtonRepository.kt | 52 ----- .../repositories/FloatingLayoutRepository.kt | 52 ----- .../data/repositories/GroupRepository.kt | 69 ------ .../RoomAccessibilityNodeRepository.kt | 55 +++++ .../RoomFloatingButtonRepository.kt | 61 +++++ .../RoomFloatingLayoutRepository.kt | 62 +++++ .../data/repositories/RoomGroupRepository.kt | 76 ++++++ .../data/repositories/RoomKeyMapRepository.kt | 5 +- .../data/repositories/RoomLogRepository.kt | 5 +- .../SettingsPreferenceRepository.kt | 8 +- 156 files changed, 911 insertions(+), 777 deletions(-) create mode 100644 app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt rename base/src/main/java/io/github/sds100/keymapper/base/home/{HomeViewModel.kt => BaseHomeViewModel.kt} (77%) create mode 100644 data/src/main/java/io/github/sds100/keymapper/data/DataHiltModule.kt create mode 100644 data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabaseModule.kt create mode 100644 data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomAccessibilityNodeRepository.kt create mode 100644 data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingButtonRepository.kt create mode 100644 data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingLayoutRepository.kt create mode 100644 data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomGroupRepository.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt new file mode 100644 index 0000000000..766ec6c585 --- /dev/null +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt @@ -0,0 +1,40 @@ +package io.github.sds100.keymapper.home + +import dagger.hilt.android.lifecycle.HiltViewModel +import io.github.sds100.keymapper.base.backup.BackupRestoreMappingsUseCase +import io.github.sds100.keymapper.base.home.BaseHomeViewModel +import io.github.sds100.keymapper.base.home.ShowHomeScreenAlertsUseCase +import io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase +import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.common.BuildConfigProvider +import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase +import javax.inject.Inject + +@HiltViewModel +class HomeViewModel @Inject constructor( + private val listKeyMaps: ListKeyMapsUseCase, + private val pauseKeyMaps: PauseKeyMapsUseCase, + private val backupRestore: BackupRestoreMappingsUseCase, + private val showAlertsUseCase: ShowHomeScreenAlertsUseCase, + private val onboarding: OnboardingUseCase, + resourceProvider: ResourceProvider, + private val setupGuiKeyboard: SetupGuiKeyboardUseCase, + private val sortKeyMaps: SortKeyMapsUseCase, + private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, + private val buildConfigProvider: BuildConfigProvider, +) : BaseHomeViewModel( + listKeyMaps, + pauseKeyMaps, + backupRestore, + showAlertsUseCase, + onboarding, + resourceProvider, + setupGuiKeyboard, + sortKeyMaps, + showInputMethodPickerUseCase, + buildConfigProvider, +) diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt index 71b4de8e9d..4aebb02df5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.accessibility import io.github.sds100.keymapper.base.actions.PerformActionsUseCase -import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt index 30938a6233..4fe66beb7a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt @@ -11,7 +11,7 @@ import androidx.lifecycle.Lifecycle import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityService import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent -import io.github.sds100.keymapper.trigger.KeyEventDetectionSource +import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource import kotlinx.coroutines.flow.update import timber.log.Timber diff --git a/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt b/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt index ec02a00f50..0282d6605e 100644 --- a/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt +++ b/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt @@ -7,10 +7,10 @@ import androidx.collection.valueIterator import io.github.sds100.keymapper.base.actions.Action import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.PerformActionsUseCase -import io.github.sds100.keymapper.constraints.ConstraintSnapshot -import io.github.sds100.keymapper.constraints.ConstraintState -import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase -import io.github.sds100.keymapper.constraints.isSatisfied +import io.github.sds100.keymapper.base.constraints.ConstraintSnapshot +import io.github.sds100.keymapper.base.constraints.ConstraintState +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase +import io.github.sds100.keymapper.base.constraints.isSatisfied import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.base.keymaps.ClickType @@ -18,15 +18,15 @@ import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent -import io.github.sds100.keymapper.trigger.FingerprintTriggerKey -import io.github.sds100.keymapper.trigger.KeyCodeTriggerKey -import io.github.sds100.keymapper.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.trigger.Trigger -import io.github.sds100.keymapper.trigger.TriggerKey -import io.github.sds100.keymapper.trigger.TriggerKeyDevice -import io.github.sds100.keymapper.trigger.TriggerMode +import io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey +import io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey +import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource +import io.github.sds100.keymapper.base.trigger.Trigger +import io.github.sds100.keymapper.base.trigger.TriggerKey +import io.github.sds100.keymapper.base.trigger.TriggerKeyDevice +import io.github.sds100.keymapper.base.trigger.TriggerMode import io.github.sds100.keymapper.base.utils.Error -import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.base.utils.Result import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job diff --git a/base/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt b/base/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt index dc1abbe1d9..13b42f8508 100644 --- a/base/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt +++ b/base/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt @@ -29,7 +29,7 @@ import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import kotlinx.coroutines.launch diff --git a/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt b/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt index a876875220..72eb963698 100644 --- a/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt +++ b/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt @@ -4,7 +4,7 @@ import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.CreateKeyMapShortcutUseCase import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase -import io.github.sds100.keymapper.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope diff --git a/base/src/main/AndroidManifest.xml b/base/src/main/AndroidManifest.xml index 62a004143b..0e9587cc98 100644 --- a/base/src/main/AndroidManifest.xml +++ b/base/src/main/AndroidManifest.xml @@ -57,7 +57,7 @@ android:excludeFromRecents="true" android:exported="true" android:launchMode="singleInstance" - android:taskAffinity="io.github.sds100.keymapper.restore_key_maps" + android:taskAffinity="io.github.sds100.keymapper.base.Restore_key_maps" android:theme="@style/AppTheme.DialogActivity" android:windowSoftInputMode="adjustResize"> diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt index 3fc55a9bf9..38f30df23e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt @@ -34,7 +34,7 @@ import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter import io.github.sds100.keymapper.base.system.permissions.RequestPermissionDelegate -import io.github.sds100.keymapper.trigger.RecordTriggerController +import io.github.sds100.keymapper.base.trigger.RecordTriggerController import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.showPopups import kotlinx.coroutines.Dispatchers diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt index 3588a8693f..a6554d2cb1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt @@ -43,7 +43,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.drawable import io.github.sds100.keymapper.base.utils.ui.LinkType import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt index e43d7e8973..b09292ae13 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt @@ -37,7 +37,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.ui.SliderMaximums import io.github.sds100.keymapper.base.utils.ui.SliderMinimums diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt index 4bc876f26f..6a72bf3719 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt @@ -71,7 +71,7 @@ import androidx.compose.material.icons.rounded.ContentPaste import androidx.compose.material.icons.rounded.Wifi import androidx.compose.material.icons.rounded.WifiOff import androidx.compose.ui.graphics.vector.ImageVector -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.base.utils.ui.compose.icons.HomeIotDevice import io.github.sds100.keymapper.base.utils.ui.compose.icons.InstantMix diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt index 748344c5fa..2614355722 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt @@ -37,7 +37,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt index 1d8e877fbc..30e3709b62 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt @@ -38,7 +38,7 @@ import androidx.compose.ui.tooling.preview.Devices import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index b46b224b85..20843fbfa0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.actions import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.common.utils.State diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index d414bd7855..8b97afb009 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -1,12 +1,12 @@ package io.github.sds100.keymapper.base.actions -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.ShortcutModel -import io.github.sds100.keymapper.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.common.utils.State @@ -41,8 +41,9 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch +import javax.inject.Inject -class ConfigActionsViewModel( +class ConfigActionsViewModel @Inject constructor( private val coroutineScope: CoroutineScope, private val displayAction: DisplayActionUseCase, private val createAction: CreateActionUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index 81fde15c30..fcd59647df 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -4,7 +4,7 @@ import android.text.InputType import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickCoordinateResult import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickCoordinateResult import io.github.sds100.keymapper.base.actions.tapscreen.PickCoordinateResult diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt index 6d363783eb..e7c8fa6b39 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt @@ -1,7 +1,5 @@ package io.github.sds100.keymapper.base.actions -import io.github.sds100.keymapper.mapping.actions.IsActionSupportedUseCase -import io.github.sds100.keymapper.mapping.actions.IsActionSupportedUseCaseImpl import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraFlashInfo import io.github.sds100.keymapper.system.camera.CameraLens @@ -9,7 +7,6 @@ import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter -import io.github.sds100.keymapper.system.systemfeature.SystemFeatureAdapter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.merge diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt index 6d8973b646..28999c6bd3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt @@ -46,7 +46,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.system.camera.CameraFlashInfo import io.github.sds100.keymapper.system.camera.CameraLens diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt index 7e499aecdf..9033cf4a9e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt @@ -37,7 +37,7 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperDropdownMenu diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt index 43073c797a..5ca66df8a0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt @@ -5,7 +5,7 @@ import android.os.Build import android.view.InputDevice import android.view.KeyEvent import android.view.accessibility.AccessibilityNodeInfo -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.sound.SoundsManager import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result @@ -49,7 +49,7 @@ import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.system.url.OpenUrlAdapter import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.base.utils.ServiceEvent import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.common.utils.firstBlocking @@ -71,7 +71,8 @@ import io.github.sds100.keymapper.system.Shell import io.github.sds100.keymapper.system.audio.AudioAdapter import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjectorImpl import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapterImpl -import io.github.sds100.keymapper.base.utils.SettingsRepository +import io.github.sds100.keymapper.system.shizuku.ShizukuInputEventInjector +import io.github.sds100.keymapper.system.volume.VolumeAdapter import javax.inject.Inject import javax.inject.Singleton @@ -92,7 +93,7 @@ class PerformActionsUseCaseImpl @Inject constructor( private val toastAdapter: ToastAdapter, private val devicesAdapter: DevicesAdapter, private val phoneAdapter: PhoneAdapter, - private val audioAdapter: AudioAdapter, + private val audioAdapter: VolumeAdapter, private val cameraAdapter: CameraAdapter, private val displayAdapter: DisplayAdapter, private val lockScreenAdapter: LockScreenAdapter, @@ -103,7 +104,6 @@ class PerformActionsUseCaseImpl @Inject constructor( private val nfcAdapter: NfcAdapter, private val openUrlAdapter: OpenUrlAdapter, private val resourceProvider: ResourceProvider, - private val settingsRepository: SettingsRepository, private val soundsManager: SoundsManager, private val permissionAdapter: PermissionAdapter, private val notificationReceiverAdapter: NotificationReceiverAdapterImpl, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt index 057ce54529..95740f49aa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt @@ -16,7 +16,7 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.databinding.FragmentConfigKeyEventBinding import io.github.sds100.keymapper.common.utils.putJsonSerializable import io.github.sds100.keymapper.base.utils.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt index 0c837aed9b..552b0c166f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -5,7 +5,7 @@ import android.view.KeyEvent import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt index 3b4570a4cf..ac6c9c175e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt @@ -21,7 +21,7 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.databinding.FragmentPinchPickCoordinatesBinding import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.base.utils.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt index 037209ca42..425bf3e60b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt @@ -10,7 +10,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt index ddd6c8cfef..cbf3540e3c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.actions.sound import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt index d54669fbd3..443f163a18 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt @@ -8,7 +8,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt index 2d3c5bf947..dce2f86ad9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt @@ -7,7 +7,7 @@ import android.graphics.Point import android.util.AttributeSet import android.view.MotionEvent import androidx.appcompat.widget.AppCompatImageView -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.color import kotlinx.coroutines.flow.MutableStateFlow import kotlin.math.roundToInt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt index b687f50d7d..f004327d87 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt index 3e8945b201..f075aed5ba 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt @@ -49,7 +49,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.compose.CheckBoxText diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt index a478615b5f..dbc7100f77 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt @@ -69,7 +69,7 @@ import androidx.navigation.compose.rememberNavController import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass import com.google.accompanist.drawablepainter.rememberDrawablePainter -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.base.system.apps.ChooseAppScreen diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt index 972adb3946..a9ac3d363c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt @@ -5,7 +5,7 @@ import androidx.compose.material.icons.rounded.Android import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Success diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt index 2e976fcbc5..5c388994fa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt @@ -7,8 +7,9 @@ import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.system.files.FileAdapter import kotlinx.coroutines.flow.Flow import timber.log.Timber +import javax.inject.Inject -class BackupRestoreMappingsUseCaseImpl( +class BackupRestoreMappingsUseCaseImpl @Inject constructor( private val fileAdapter: FileAdapter, private val backupManager: BackupManager, ) : BackupRestoreMappingsUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt index 5704d80574..d0558370db 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt @@ -17,7 +17,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.MainActivity -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.ui.compose.CustomDialogContent diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt index 037c3c191d..dc0517b55a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt @@ -44,7 +44,7 @@ import androidx.compose.ui.tooling.preview.Devices import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt index 9509bf3ab4..d607fdb52b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt @@ -6,7 +6,7 @@ import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.common.utils.State diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index acc59f9d07..49abb85e93 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -3,16 +3,10 @@ package io.github.sds100.keymapper.base.constraints import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.ShortcutModel -import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.isFixable -import io.github.sds100.keymapper.common.utils.mapData import io.github.sds100.keymapper.base.utils.ui.NavDestination import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl @@ -22,6 +16,12 @@ import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.system.SystemError +import io.github.sds100.keymapper.system.permissions.Permission import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted @@ -35,8 +35,9 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import javax.inject.Inject -class ConfigConstraintsViewModel( +class ConfigConstraintsViewModel @Inject constructor( private val coroutineScope: CoroutineScope, private val config: ConfigKeyMapUseCase, private val displayConstraint: DisplayConstraintUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt index 1bdde59ef6..c46321bcaa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt index ba743750a9..0ba957a32e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.constraints import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Android -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.handle import io.github.sds100.keymapper.common.utils.valueIfFailure import io.github.sds100.keymapper.system.camera.CameraLens diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt index 8db2e6dc6a..8ea3d1f352 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUtils.kt @@ -24,7 +24,7 @@ import androidx.compose.material.icons.outlined.Timer import androidx.compose.material.icons.outlined.Wifi import androidx.compose.material.icons.outlined.WifiOff import androidx.compose.material.icons.rounded.Android -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo object ConstraintUtils { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt index 8a9f36132c..eb9e0ef0dc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt @@ -36,7 +36,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt index ec48afea54..45760071fa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.system.systemfeature.SystemFeatureAdapter +import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter import javax.inject.Inject import javax.inject.Singleton import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt index 6787cab4b0..3929148bab 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt @@ -41,7 +41,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.TimeUtils import io.github.sds100.keymapper.base.utils.ui.compose.OptionsHeaderRow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/DeleteGroupDialog.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/DeleteGroupDialog.kt index df73d79ef0..ff6e8ca867 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/DeleteGroupDialog.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/DeleteGroupDialog.kt @@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R @Composable fun DeleteGroupDialog( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/Group.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/Group.kt index 5dbc731aa7..0ca10b7535 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/Group.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/Group.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.groups -import io.github.sds100.keymapper.constraints.ConstraintEntityMapper -import io.github.sds100.keymapper.constraints.ConstraintModeEntityMapper -import io.github.sds100.keymapper.constraints.ConstraintState +import io.github.sds100.keymapper.base.constraints.ConstraintEntityMapper +import io.github.sds100.keymapper.base.constraints.ConstraintModeEntityMapper +import io.github.sds100.keymapper.base.constraints.ConstraintState import io.github.sds100.keymapper.data.entities.GroupEntity data class Group( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupBreadcrumbRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupBreadcrumbRow.kt index 550e83e861..d3ece625dc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupBreadcrumbRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupBreadcrumbRow.kt @@ -24,7 +24,7 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R @Composable fun GroupBreadcrumbRow( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt index 9c7c661f97..788b745577 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt @@ -38,10 +38,10 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.constraints.ConstraintMode +import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.utils.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt index c3b6617f34..f79455da59 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt @@ -42,7 +42,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt similarity index 77% rename from base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt index 92a4ca45c3..13bddc3339 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt @@ -7,18 +7,13 @@ import androidx.compose.material.icons.outlined.Keyboard import androidx.compose.ui.graphics.vector.ImageVector import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.backup.BackupRestoreMappingsUseCase -import io.github.sds100.keymapper.floating.ListFloatingLayoutsUseCase -import io.github.sds100.keymapper.floating.ListFloatingLayoutsViewModel -import io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.backup.BackupRestoreMappingsUseCase import io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.onboarding.OnboardingUseCase -import io.github.sds100.keymapper.sorting.SortKeyMapsUseCase -import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase -import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase +import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl @@ -27,17 +22,12 @@ import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showPopup -import kotlinx.coroutines.flow.SharingStarted -import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.combine +import io.github.sds100.keymapper.common.BuildConfigProvider +import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase import kotlinx.coroutines.flow.first -import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -import javax.inject.Inject -import io.github.sds100.keymapper.common.BuildConfigProvider -@HiltViewModel -class HomeViewModel @Inject constructor( +abstract class BaseHomeViewModel( private val listKeyMaps: ListKeyMapsUseCase, private val pauseKeyMaps: PauseKeyMapsUseCase, private val backupRestore: BackupRestoreMappingsUseCase, @@ -46,7 +36,6 @@ class HomeViewModel @Inject constructor( resourceProvider: ResourceProvider, private val setupGuiKeyboard: SetupGuiKeyboardUseCase, private val sortKeyMaps: SortKeyMapsUseCase, - private val listFloatingLayouts: ListFloatingLayoutsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val buildConfigProvider: BuildConfigProvider, ) : ViewModel(), @@ -54,23 +43,8 @@ class HomeViewModel @Inject constructor( PopupViewModel by PopupViewModelImpl(), NavigationViewModel by NavigationViewModelImpl() { - val navBarItems: StateFlow> = - combine( - listFloatingLayouts.showFloatingLayouts, - onboarding.hasViewedAdvancedTriggers, - transform = ::buildNavBarItems, - ) - .stateIn( - viewModelScope, - SharingStarted.Eagerly, - buildNavBarItems( - showFloatingLayouts = false, - viewedAdvancedTriggers = false, - ), - ) - val keyMapListViewModel by lazy { - io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel( + io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel( viewModelScope, listKeyMaps, resourceProvider, @@ -84,14 +58,6 @@ class HomeViewModel @Inject constructor( ) } - val listFloatingLayoutsViewModel by lazy { - ListFloatingLayoutsViewModel( - viewModelScope, - listFloatingLayouts, - resourceProvider, - ) - } - init { viewModelScope.launch { onboarding.showWhatsNew.collect { showWhatsNew -> diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/DeleteKeyMapsDialog.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/DeleteKeyMapsDialog.kt index 2f0288a87d..86ff062ecb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/DeleteKeyMapsDialog.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/DeleteKeyMapsDialog.kt @@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.stringResource -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R @Composable fun DeleteKeyMapsDialog( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt index e935df7ad6..57eadf8e30 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt @@ -20,6 +20,8 @@ import io.github.sds100.keymapper.ActivityViewModel import io.github.sds100.keymapper.BaseMainActivity import io.github.sds100.keymapper.NavAppDirections import io.github.sds100.keymapper.ServiceLocator +import io.github.sds100.keymapper.base.BaseMainActivity +import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.utils.Inject @@ -28,7 +30,7 @@ import io.github.sds100.keymapper.base.utils.ui.showPopups class HomeFragment : Fragment() { - private val homeViewModel: HomeViewModel by activityViewModels { + private val homeViewModel: BaseHomeViewModel by activityViewModels { Inject.homeViewModel(requireContext()) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt index dd608a2899..4205a23f90 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt @@ -53,22 +53,22 @@ import androidx.compose.ui.unit.dp import androidx.core.net.toUri import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.canopas.lib.showcase.IntroShowcase -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.backup.ImportExportState -import io.github.sds100.keymapper.backup.RestoreType +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.backup.ImportExportState +import io.github.sds100.keymapper.base.backup.RestoreType import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.groups.GroupListItemModel +import io.github.sds100.keymapper.base.constraints.ConstraintMode +import io.github.sds100.keymapper.base.groups.GroupListItemModel import io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState import io.github.sds100.keymapper.base.keymaps.KeyMapList -import io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel -import io.github.sds100.keymapper.onboarding.OnboardingTapTarget +import io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel +import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.sorting.SortBottomSheet import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.trigger.DpadTriggerSetupBottomSheet -import io.github.sds100.keymapper.trigger.KeyMapListItemModel -import io.github.sds100.keymapper.trigger.TriggerError +import io.github.sds100.keymapper.base.trigger.DpadTriggerSetupBottomSheet +import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel +import io.github.sds100.keymapper.base.trigger.TriggerError import io.github.sds100.keymapper.base.utils.ShareUtils import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.drawable @@ -83,7 +83,7 @@ import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe @Composable fun HomeKeyMapListScreen( modifier: Modifier = Modifier, - viewModel: io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel, + viewModel: io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel, snackbarState: SnackbarHostState, onSettingsClick: () -> Unit, onAboutClick: () -> Unit, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt index 209ed46207..f588cb2b68 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt @@ -38,7 +38,7 @@ import io.github.sds100.keymapper.base.utils.ui.SelectionState @Composable fun HomeScreen( modifier: Modifier = Modifier, - viewModel: HomeViewModel, + viewModel: BaseHomeViewModel, onSettingsClick: () -> Unit, onAboutClick: () -> Unit, finishActivity: () -> Unit, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeWarningList.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeWarningList.kt index f48a6ca314..d59d88fb5e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeWarningList.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeWarningList.kt @@ -21,7 +21,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R @Composable fun HomeWarningList( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/ImportDialog.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/ImportDialog.kt index f342572a20..56deadebb6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/ImportDialog.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/ImportDialog.kt @@ -9,7 +9,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt index 9423fee8e2..6d48744cc4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt @@ -90,16 +90,16 @@ import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette -import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.groups.DeleteGroupDialog -import io.github.sds100.keymapper.groups.GroupBreadcrumbRow -import io.github.sds100.keymapper.groups.GroupConstraintRow -import io.github.sds100.keymapper.groups.GroupListItemModel -import io.github.sds100.keymapper.groups.GroupRow +import io.github.sds100.keymapper.base.constraints.ConstraintMode +import io.github.sds100.keymapper.base.groups.DeleteGroupDialog +import io.github.sds100.keymapper.base.groups.GroupBreadcrumbRow +import io.github.sds100.keymapper.base.groups.GroupConstraintRow +import io.github.sds100.keymapper.base.groups.GroupListItemModel +import io.github.sds100.keymapper.base.groups.GroupRow import io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState import io.github.sds100.keymapper.base.utils.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt index 8f961c0fe7..d705a1c74b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt @@ -38,11 +38,11 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.groups.GroupBreadcrumbRow -import io.github.sds100.keymapper.groups.GroupListItemModel -import io.github.sds100.keymapper.groups.GroupRow +import io.github.sds100.keymapper.base.groups.GroupBreadcrumbRow +import io.github.sds100.keymapper.base.groups.GroupListItemModel +import io.github.sds100.keymapper.base.groups.GroupRow import io.github.sds100.keymapper.base.utils.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt index 5efeda0d6d..98729cd952 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt @@ -18,7 +18,7 @@ import androidx.fragment.app.Fragment import androidx.navigation.findNavController import androidx.navigation.fragment.navArgs import androidx.navigation.navGraphViewModels -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.utils.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt index 954337c54e..68aa4eadba 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.keymaps import android.graphics.Color import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionUiHelper import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.State diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt index 8937d32f01..ff97f42c08 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt @@ -55,12 +55,12 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.canopas.lib.showcase.IntroShowcase -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionsScreen import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.constraints.ConstraintsScreen -import io.github.sds100.keymapper.onboarding.OnboardingTapTarget -import io.github.sds100.keymapper.trigger.TriggerScreen +import io.github.sds100.keymapper.base.constraints.ConstraintsScreen +import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget +import io.github.sds100.keymapper.base.trigger.TriggerScreen import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperTapTarget import io.github.sds100.keymapper.base.utils.ui.compose.keyMapperShowcaseStyle import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt index 73d15ce756..99b546ecee 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt @@ -3,81 +3,38 @@ package io.github.sds100.keymapper.base.keymaps import android.os.Bundle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.actions.ConfigActionsViewModel -import io.github.sds100.keymapper.base.actions.CreateActionUseCase -import io.github.sds100.keymapper.base.actions.TestActionUseCase -import io.github.sds100.keymapper.constraints.ConfigConstraintsViewModel -import io.github.sds100.keymapper.onboarding.OnboardingTapTarget -import io.github.sds100.keymapper.onboarding.OnboardingUseCase -import io.github.sds100.keymapper.base.purchasing.PurchasingManager -import io.github.sds100.keymapper.trigger.ConfigTriggerViewModel -import io.github.sds100.keymapper.trigger.RecordTriggerUseCase -import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase -import io.github.sds100.keymapper.common.utils.getJsonSerializable -import io.github.sds100.keymapper.common.utils.putJsonSerializable +import io.github.sds100.keymapper.base.constraints.ConfigConstraintsViewModel +import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.common.utils.firstBlocking +import io.github.sds100.keymapper.common.utils.getJsonSerializable import io.github.sds100.keymapper.common.utils.ifIsData -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.common.utils.putJsonSerializable import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject @HiltViewModel class ConfigKeyMapViewModel @Inject constructor( + private val configActionsViewModel: ConfigActionsViewModel, + private val configTriggerViewModel: BaseConfigTriggerViewModel, + private val configConstraintsViewModel: ConfigConstraintsViewModel, private val config: ConfigKeyMapUseCase, - private val testAction: TestActionUseCase, private val onboarding: OnboardingUseCase, - private val recordTrigger: RecordTriggerUseCase, - private val createKeyMapShortcut: CreateKeyMapShortcutUseCase, - private val displayMapping: DisplayKeyMapUseCase, - createActionUseCase: CreateActionUseCase, - resourceProvider: ResourceProvider, - purchasingManager: PurchasingManager, - setupGuiKeyboardUseCase: SetupGuiKeyboardUseCase, - fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, -) : ViewModel(), - ResourceProvider by resourceProvider { +) : ViewModel() { companion object { private const val STATE_KEY = "config_keymap" } - val configActionsViewModel = ConfigActionsViewModel( - viewModelScope, - displayMapping, - createActionUseCase, - testAction, - config, - onboarding, - resourceProvider, - ) - - val configTriggerViewModel = ConfigTriggerViewModel( - viewModelScope, - onboarding, - config, - recordTrigger, - createKeyMapShortcut, - displayMapping, - resourceProvider, - purchasingManager, - setupGuiKeyboardUseCase, - fingerprintGesturesSupported, - ) - - val configConstraintsViewModel = ConfigConstraintsViewModel( - viewModelScope, - config, - displayMapping, - resourceProvider, - ) - val isEnabled: StateFlow = config.keyMap .map { state -> state.dataOrNull()?.isEnabled ?: true } .stateIn(viewModelScope, SharingStarted.Eagerly, true) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt index ae675e32fa..c5bd2c02f6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt @@ -9,7 +9,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.compose.ui.graphics.toArgb import androidx.lifecycle.Lifecycle import androidx.navigation.findNavController -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.compose.ComposeColors import io.github.sds100.keymapper.compose.KeyMapperTheme diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt index 3f3b1cef55..ef9c21367e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt @@ -37,15 +37,15 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.groups.GroupBreadcrumbRow -import io.github.sds100.keymapper.groups.GroupListItemModel -import io.github.sds100.keymapper.groups.GroupRow -import io.github.sds100.keymapper.trigger.KeyMapListItemModel -import io.github.sds100.keymapper.trigger.TriggerError +import io.github.sds100.keymapper.base.constraints.ConstraintMode +import io.github.sds100.keymapper.base.groups.GroupBreadcrumbRow +import io.github.sds100.keymapper.base.groups.GroupListItemModel +import io.github.sds100.keymapper.base.groups.GroupRow +import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel +import io.github.sds100.keymapper.base.trigger.TriggerError import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt index e79c8e6e91..a71df793ee 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt @@ -3,11 +3,11 @@ package io.github.sds100.keymapper.base.keymaps import android.content.Intent import android.graphics.drawable.Drawable import androidx.core.os.bundleOf -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.api.Api import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.system.apps.AppShortcutAdapter -import io.github.sds100.keymapper.base.utils.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import javax.inject.Inject import javax.inject.Singleton diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt index 12c9998611..cef7613565 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt @@ -11,15 +11,15 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.actions.ActionErrorSnapshot import io.github.sds100.keymapper.base.actions.ActionUiHelper -import io.github.sds100.keymapper.constraints.ConstraintErrorSnapshot -import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.constraints.ConstraintUiHelper -import io.github.sds100.keymapper.groups.GroupListItemModel -import io.github.sds100.keymapper.trigger.KeyMapListItemModel -import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot +import io.github.sds100.keymapper.base.constraints.ConstraintErrorSnapshot +import io.github.sds100.keymapper.base.constraints.ConstraintMode +import io.github.sds100.keymapper.base.constraints.ConstraintUiHelper +import io.github.sds100.keymapper.base.groups.GroupListItemModel +import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel +import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.mapData -import io.github.sds100.keymapper.base.utils.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.TintType import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index 7d49dde826..452e610e69 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -9,8 +9,8 @@ import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.otherwise import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.common.utils.valueIfFailure -import io.github.sds100.keymapper.constraints.DisplayConstraintUseCase -import io.github.sds100.keymapper.constraints.GetConstraintErrorUseCase +import io.github.sds100.keymapper.base.constraints.DisplayConstraintUseCase +import io.github.sds100.keymapper.base.constraints.GetConstraintErrorUseCase import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.base.purchasing.ProductId import io.github.sds100.keymapper.base.purchasing.PurchasingError @@ -23,11 +23,14 @@ import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.ringtone.RingtoneAdapter -import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot +import io.github.sds100.keymapper.base.trigger.TriggerError +import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull -import io.github.sds100.keymapper.base.utils.SettingsRepository +import io.github.sds100.keymapper.data.repositories.PreferenceRepository +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter import kotlinx.coroutines.TimeoutCancellationException import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.callbackFlow @@ -45,17 +48,17 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( private val permissionAdapter: PermissionAdapter, private val inputMethodAdapter: InputMethodAdapter, private val packageManagerAdapter: PackageManagerAdapter, - private val settingsRepository: SettingsRepository, - private val accessibilityServiceAdapter: io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapterImpl, - private val settingsRepository2: SettingsRepository, + private val settingsRepository: PreferenceRepository, + private val accessibilityServiceAdapter: AccessibilityServiceAdapter, private val purchasingManager: PurchasingManager, private val ringtoneAdapter: RingtoneAdapter, private val getActionErrorUseCase: GetActionErrorUseCase, - private val getConstraintErrorUseCase: GetConstraintErrorUseCase + private val getConstraintErrorUseCase: GetConstraintErrorUseCase, + private val buildConfigProvider: BuildConfigProvider ) : DisplayKeyMapUseCase, GetActionErrorUseCase by getActionErrorUseCase, GetConstraintErrorUseCase by getConstraintErrorUseCase { - private val keyMapperImeHelper = KeyMapperImeHelper(inputMethodAdapter) + private val keyMapperImeHelper = KeyMapperImeHelper(inputMethodAdapter, buildConfigProvider.packageName) private val showDpadImeSetupError: Flow = settingsRepository.get(Keys.neverShowDpadImeTriggerError).map { neverShow -> diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt index c9042ce14a..84b2792f31 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/FingerprintGesturesSupportedUseCase.kt @@ -3,7 +3,6 @@ package io.github.sds100.keymapper.base.keymaps import android.os.Build import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.base.utils.SettingsRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import javax.inject.Inject @@ -12,7 +11,6 @@ import javax.inject.Singleton @Singleton class FingerprintGesturesSupportedUseCaseImpl @Inject constructor( private val preferenceRepository: PreferenceRepository, - private val settingsRepository: SettingsRepository ) : FingerprintGesturesSupportedUseCase { override val isSupported: Flow = preferenceRepository.get(Keys.fingerprintGesturesAvailable).map { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt index 6137476397..f57fe873e1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt @@ -5,15 +5,15 @@ import io.github.sds100.keymapper.base.actions.Action import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.ActionEntityMapper import io.github.sds100.keymapper.base.actions.canBeHeldDown -import io.github.sds100.keymapper.constraints.ConstraintEntityMapper -import io.github.sds100.keymapper.constraints.ConstraintModeEntityMapper -import io.github.sds100.keymapper.constraints.ConstraintState +import io.github.sds100.keymapper.base.constraints.ConstraintEntityMapper +import io.github.sds100.keymapper.base.constraints.ConstraintModeEntityMapper +import io.github.sds100.keymapper.base.constraints.ConstraintState import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.base.keymaps.detection.KeyMapController -import io.github.sds100.keymapper.trigger.Trigger -import io.github.sds100.keymapper.trigger.TriggerEntityMapper -import io.github.sds100.keymapper.trigger.TriggerKey +import io.github.sds100.keymapper.base.trigger.Trigger +import io.github.sds100.keymapper.base.trigger.TriggerEntityMapper +import io.github.sds100.keymapper.base.trigger.TriggerKey import kotlinx.serialization.Serializable import java.util.UUID @@ -67,7 +67,7 @@ fun KeyMap.requiresImeKeyEventForwarding(): Boolean { actionList.any { it.data is ActionData.AnswerCall || it.data is ActionData.EndCall } val hasVolumeKeys = trigger.keys - .mapNotNull { it as? io.github.sds100.keymapper.trigger.KeyCodeTriggerKey } + .mapNotNull { it as? io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey } .any { it.keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || it.keyCode == KeyEvent.KEYCODE_VOLUME_UP @@ -83,7 +83,7 @@ fun KeyMap.requiresImeKeyEventForwarding(): Boolean { * is incoming. */ fun KeyMap.requiresImeKeyEventForwardingInPhoneCall(triggerKey: TriggerKey): Boolean { - if (triggerKey !is io.github.sds100.keymapper.trigger.KeyCodeTriggerKey) { + if (triggerKey !is io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey) { return false } @@ -91,7 +91,7 @@ fun KeyMap.requiresImeKeyEventForwardingInPhoneCall(triggerKey: TriggerKey): Boo actionList.any { it.data is ActionData.AnswerCall || it.data is ActionData.EndCall } val hasVolumeKeys = trigger.keys - .mapNotNull { it as? io.github.sds100.keymapper.trigger.KeyCodeTriggerKey } + .mapNotNull { it as? io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey } .any { it.keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || it.keyCode == KeyEvent.KEYCODE_VOLUME_UP diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt index 209f8002c6..9a28a6c99b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.keymaps -import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.groups.GroupListItemModel +import io.github.sds100.keymapper.base.constraints.ConstraintMode +import io.github.sds100.keymapper.base.groups.GroupListItemModel import io.github.sds100.keymapper.home.HomeWarningListItem import io.github.sds100.keymapper.home.SelectedKeyMapsEnabled import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt index ea8d866b34..8ddf927570 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapGroup.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.keymaps -import io.github.sds100.keymapper.groups.Group +import io.github.sds100.keymapper.base.groups.Group import io.github.sds100.keymapper.common.utils.State data class KeyMapGroup( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt index 301973543c..58b6b7a8e6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt @@ -3,25 +3,25 @@ package io.github.sds100.keymapper.base.keymaps import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.outlined.ArrowForward import androidx.compose.material.icons.outlined.Add -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionErrorSnapshot import io.github.sds100.keymapper.base.actions.ActionUiHelper import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.constraints.ConstraintErrorSnapshot -import io.github.sds100.keymapper.constraints.ConstraintState -import io.github.sds100.keymapper.constraints.ConstraintUiHelper +import io.github.sds100.keymapper.base.constraints.ConstraintErrorSnapshot +import io.github.sds100.keymapper.base.constraints.ConstraintState +import io.github.sds100.keymapper.base.constraints.ConstraintUiHelper import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.trigger.AssistantTriggerKey -import io.github.sds100.keymapper.trigger.AssistantTriggerType -import io.github.sds100.keymapper.trigger.FingerprintTriggerKey -import io.github.sds100.keymapper.trigger.FloatingButtonKey -import io.github.sds100.keymapper.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.trigger.KeyMapListItemModel -import io.github.sds100.keymapper.trigger.Trigger -import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.trigger.TriggerKeyDevice -import io.github.sds100.keymapper.trigger.TriggerMode +import io.github.sds100.keymapper.base.trigger.AssistantTriggerKey +import io.github.sds100.keymapper.base.trigger.AssistantTriggerType +import io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey +import io.github.sds100.keymapper.base.trigger.FloatingButtonKey +import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource +import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel +import io.github.sds100.keymapper.base.trigger.Trigger +import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot +import io.github.sds100.keymapper.base.trigger.TriggerKeyDevice +import io.github.sds100.keymapper.base.trigger.TriggerMode import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @@ -55,7 +55,7 @@ class KeyMapListItemCreator( val triggerKeys = keyMap.trigger.keys.map { key -> when (key) { is AssistantTriggerKey -> assistantTriggerKeyName(key) - is io.github.sds100.keymapper.trigger.KeyCodeTriggerKey -> keyCodeTriggerKeyName( + is io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey -> keyCodeTriggerKeyName( key, showDeviceDescriptors, ) @@ -241,7 +241,7 @@ class KeyMapListItemCreator( } private fun keyCodeTriggerKeyName( - key: io.github.sds100.keymapper.trigger.KeyCodeTriggerKey, + key: io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey, showDeviceDescriptors: Boolean, ): String = buildString { when (key.clickType) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt index bfe9ff8c5e..2f687a9867 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt @@ -52,12 +52,12 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.google.accompanist.drawablepainter.rememberDrawablePainter -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.trigger.KeyMapListItemModel -import io.github.sds100.keymapper.trigger.TriggerError +import io.github.sds100.keymapper.base.constraints.ConstraintMode +import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel +import io.github.sds100.keymapper.base.trigger.TriggerError import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.drawable import io.github.sds100.keymapper.base.utils.ui.compose.CompactChip diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt index 366624deb2..16189cadba 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListState.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.keymaps -import io.github.sds100.keymapper.trigger.KeyMapListItemModel +import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel import io.github.sds100.keymapper.common.utils.State data class KeyMapListState( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index d3cf50eec7..079025ffc2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -3,38 +3,38 @@ package io.github.sds100.keymapper.base.keymaps import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionErrorSnapshot -import io.github.sds100.keymapper.backup.BackupRestoreMappingsUseCase -import io.github.sds100.keymapper.backup.ImportExportState -import io.github.sds100.keymapper.backup.RestoreType +import io.github.sds100.keymapper.base.backup.BackupRestoreMappingsUseCase +import io.github.sds100.keymapper.base.backup.ImportExportState +import io.github.sds100.keymapper.base.backup.RestoreType import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.constraints.ConstraintErrorSnapshot -import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.constraints.ConstraintUiHelper -import io.github.sds100.keymapper.groups.Group -import io.github.sds100.keymapper.groups.GroupFamily -import io.github.sds100.keymapper.groups.GroupListItemModel +import io.github.sds100.keymapper.base.constraints.ConstraintErrorSnapshot +import io.github.sds100.keymapper.base.constraints.ConstraintMode +import io.github.sds100.keymapper.base.constraints.ConstraintUiHelper +import io.github.sds100.keymapper.base.groups.Group +import io.github.sds100.keymapper.base.groups.GroupFamily +import io.github.sds100.keymapper.base.groups.GroupListItemModel import io.github.sds100.keymapper.home.HomeWarningListItem import io.github.sds100.keymapper.home.SelectedKeyMapsEnabled import io.github.sds100.keymapper.home.ShowHomeScreenAlertsUseCase -import io.github.sds100.keymapper.onboarding.OnboardingTapTarget -import io.github.sds100.keymapper.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.sorting.SortViewModel import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.trigger.KeyMapListItemModel -import io.github.sds100.keymapper.trigger.SetupGuiKeyboardState -import io.github.sds100.keymapper.trigger.SetupGuiKeyboardUseCase -import io.github.sds100.keymapper.trigger.TriggerError -import io.github.sds100.keymapper.trigger.TriggerErrorSnapshot +import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel +import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardState +import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase +import io.github.sds100.keymapper.base.trigger.TriggerError +import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.base.utils.getFullMessage @@ -78,12 +78,12 @@ import kotlinx.coroutines.launch @OptIn(ExperimentalCoroutinesApi::class) class KeyMapListViewModel( private val coroutineScope: CoroutineScope, - private val listKeyMaps: io.github.sds100.keymapper.mapping.keymaps.ListKeyMapsUseCase, + private val listKeyMaps: io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCase, resourceProvider: ResourceProvider, private val setupGuiKeyboard: SetupGuiKeyboardUseCase, private val sortKeyMaps: SortKeyMapsUseCase, private val showAlertsUseCase: ShowHomeScreenAlertsUseCase, - private val pauseKeyMaps: io.github.sds100.keymapper.mapping.keymaps.PauseKeyMapsUseCase, + private val pauseKeyMaps: io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase, private val backupRestore: BackupRestoreMappingsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val onboarding: OnboardingUseCase, @@ -105,15 +105,15 @@ class KeyMapListViewModel( val multiSelectProvider: MultiSelectProvider = MultiSelectProvider() private val listItemCreator = - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListItemCreator( + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListItemCreator( listKeyMaps, resourceProvider ) private val constraintUiHelper = ConstraintUiHelper(listKeyMaps, resourceProvider) private val initialState = - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListState( - appBarState = _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.RootGroup( + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListState( + appBarState = _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.RootGroup( subGroups = emptyList(), warnings = emptyList(), isPaused = false, @@ -121,7 +121,7 @@ class KeyMapListViewModel( listItems = State.Loading, showCreateKeyMapTapTarget = false, ) - private val _state: MutableStateFlow = MutableStateFlow(initialState) + private val _state: MutableStateFlow = MutableStateFlow(initialState) val state = _state.asStateFlow() var showFabText: Boolean by mutableStateOf(true) @@ -143,7 +143,7 @@ class KeyMapListViewModel( private val keyMapGroupStateFlow = listKeyMaps.keyMapGroup.stateIn( coroutineScope, SharingStarted.Eagerly, - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapGroup( + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapGroup( group = null, subGroups = emptyList(), keyMaps = State.Loading, @@ -172,7 +172,7 @@ class KeyMapListViewModel( AccessibilityServiceState.CRASHED -> add( HomeWarningListItem( - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM, + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM, getString(R.string.home_error_accessibility_service_is_crashed), ), ) @@ -180,7 +180,7 @@ class KeyMapListViewModel( AccessibilityServiceState.DISABLED -> add( HomeWarningListItem( - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM, + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM, getString(R.string.home_error_accessibility_service_is_disabled), ), ) @@ -191,7 +191,7 @@ class KeyMapListViewModel( if (isBatteryOptimised) { add( HomeWarningListItem( - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_BATTERY_OPTIMISATION_LIST_ITEM, + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_BATTERY_OPTIMISATION_LIST_ITEM, getString(R.string.home_error_is_battery_optimised), ), ) @@ -200,7 +200,7 @@ class KeyMapListViewModel( if (showNotificationPermissionAlert) { add( HomeWarningListItem( - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_NOTIFICATION_PERMISSION_DENIED_LIST_ITEM, + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_NOTIFICATION_PERMISSION_DENIED_LIST_ITEM, getString(R.string.home_error_notification_permission), ), ) @@ -209,7 +209,7 @@ class KeyMapListViewModel( if (isLoggingEnabled) { add( HomeWarningListItem( - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_LOGGING_ENABLED_LIST_ITEM, + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_LOGGING_ENABLED_LIST_ITEM, getString(R.string.home_error_logging_enabled), ), ) @@ -317,7 +317,7 @@ class KeyMapListViewModel( ) @OptIn(ExperimentalCoroutinesApi::class) - val appBarStateFlow: Flow = + val appBarStateFlow: Flow = multiSelectProvider.state.flatMapLatest { selectionState -> when (selectionState) { is SelectionState.Selecting -> selectionAppBarState @@ -348,7 +348,7 @@ class KeyMapListViewModel( } _state.value = - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListState( + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListState( appBarState, listState, showCreateKeyMapTapTarget @@ -364,12 +364,12 @@ class KeyMapListViewModel( } private fun buildSelectingAppBarState( - keyMapGroup: io.github.sds100.keymapper.mapping.keymaps.KeyMapGroup, + keyMapGroup: io.github.sds100.keymapper.base.keymaps.KeyMapGroup, selectionState: SelectionState.Selecting, groupListItems: List, breadcrumbListItems: List, showThisGroup: Boolean, - ): io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.Selecting { + ): io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.Selecting { var selectedKeyMapsEnabled: SelectedKeyMapsEnabled? = null val keyMaps = keyMapGroup.keyMaps.dataOrNull() ?: emptyList() @@ -392,7 +392,7 @@ class KeyMapListViewModel( } } - return _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.Selecting( + return _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.Selecting( selectionCount = selectionState.selectedIds.size, selectedKeyMapsEnabled = selectedKeyMapsEnabled ?: SelectedKeyMapsEnabled.NONE, isAllSelected = selectionState.selectedIds.size == keyMaps.size, @@ -403,12 +403,12 @@ class KeyMapListViewModel( } private fun buildGroupAppBarState( - keyMapGroup: _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapGroup, + keyMapGroup: _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapGroup, warnings: List, isPaused: Boolean, constraintErrorSnapshot: ConstraintErrorSnapshot, isEditingGroupName: Boolean, - ): _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState { + ): _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState { val subGroupListItems = keyMapGroup.subGroups.map { group -> buildGroupListItem(group) } @@ -422,13 +422,13 @@ class KeyMapListViewModel( } if (keyMapGroup.group == null) { - return _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.RootGroup( + return _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.RootGroup( subGroups = subGroupListItems, warnings = warnings, isPaused = isPaused, ) } else { - return _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.ChildGroup( + return _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.ChildGroup( groupName = keyMapGroup.group.name, constraints = listItemCreator.buildConstraintChipList( keyMapGroup.group.constraintState, @@ -589,7 +589,7 @@ class KeyMapListViewModel( fun onSelectAllClick() { state.value.also { state -> - if (state.appBarState is _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.Selecting) { + if (state.appBarState is _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.Selecting) { if (state.appBarState.isAllSelected) { multiSelectProvider.stopSelecting() } else { @@ -676,7 +676,7 @@ class KeyMapListViewModel( fun onFixWarningClick(id: String) { coroutineScope.launch { when (id) { - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM -> { + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM -> { val explanationResponse = ViewModelHelper.showAccessibilityServiceExplanationDialog( resourceProvider = this@KeyMapListViewModel, @@ -695,7 +695,7 @@ class KeyMapListViewModel( } } - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM -> + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM -> ViewModelHelper.handleKeyMapperCrashedDialog( resourceProvider = this@KeyMapListViewModel, popupViewModel = this@KeyMapListViewModel, @@ -703,9 +703,9 @@ class KeyMapListViewModel( ignoreCrashed = showAlertsUseCase::acknowledgeCrashed, ) - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_BATTERY_OPTIMISATION_LIST_ITEM -> showAlertsUseCase.disableBatteryOptimisation() - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_LOGGING_ENABLED_LIST_ITEM -> showAlertsUseCase.disableLogging() - _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapListViewModel.Companion.ID_NOTIFICATION_PERMISSION_DENIED_LIST_ITEM -> showNotificationPermissionAlertDialog() + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_BATTERY_OPTIMISATION_LIST_ITEM -> showAlertsUseCase.disableBatteryOptimisation() + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_LOGGING_ENABLED_LIST_ITEM -> showAlertsUseCase.disableLogging() + _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_NOTIFICATION_PERMISSION_DENIED_LIST_ITEM -> showNotificationPermissionAlertDialog() } } } @@ -795,7 +795,7 @@ class KeyMapListViewModel( return true } - state.value.appBarState is _root_ide_package_.io.github.sds100.keymapper.mapping.keymaps.KeyMapAppBarState.ChildGroup -> { + state.value.appBarState is _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.ChildGroup -> { if (!isEditingGroupName.value) { coroutineScope.launch { listKeyMaps.popGroup() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt index ce0e39e3d5..5d08303452 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt @@ -41,7 +41,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.SliderMaximums diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt index 197d85cc00..2c6a85be63 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt @@ -1,23 +1,23 @@ package io.github.sds100.keymapper.base.keymaps import android.database.sqlite.SQLiteConstraintException -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.backup.BackupManager -import io.github.sds100.keymapper.backup.BackupManagerImpl -import io.github.sds100.keymapper.backup.BackupUtils +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.backup.BackupManager +import io.github.sds100.keymapper.base.backup.BackupManagerImpl +import io.github.sds100.keymapper.base.backup.BackupUtils import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success -import io.github.sds100.keymapper.constraints.Constraint -import io.github.sds100.keymapper.constraints.ConstraintEntityMapper -import io.github.sds100.keymapper.constraints.ConstraintMode -import io.github.sds100.keymapper.constraints.ConstraintModeEntityMapper +import io.github.sds100.keymapper.base.constraints.Constraint +import io.github.sds100.keymapper.base.constraints.ConstraintEntityMapper +import io.github.sds100.keymapper.base.constraints.ConstraintMode +import io.github.sds100.keymapper.base.constraints.ConstraintModeEntityMapper import io.github.sds100.keymapper.data.entities.GroupEntity import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository import io.github.sds100.keymapper.data.repositories.GroupRepository import io.github.sds100.keymapper.data.repositories.RepositoryUtils -import io.github.sds100.keymapper.groups.Group -import io.github.sds100.keymapper.groups.GroupEntityMapper -import io.github.sds100.keymapper.groups.GroupFamily +import io.github.sds100.keymapper.base.groups.Group +import io.github.sds100.keymapper.base.groups.GroupEntityMapper +import io.github.sds100.keymapper.base.groups.GroupFamily import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt index b32d239ebb..2bb81cf600 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt @@ -4,7 +4,7 @@ import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.media.MediaAdapter import io.github.sds100.keymapper.system.ringtone.RingtoneAdapter -import io.github.sds100.keymapper.base.utils.SettingsRepository +import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter import javax.inject.Inject import javax.inject.Singleton import kotlinx.coroutines.flow.Flow @@ -13,7 +13,6 @@ import timber.log.Timber @Singleton class PauseKeyMapsUseCaseImpl @Inject constructor( - private val settingsRepository: SettingsRepository, private val preferenceRepository: PreferenceRepository, private val mediaAdapter: MediaAdapter, private val ringtoneAdapter: RingtoneAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt index a98a91edcc..e1a4cccd95 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt @@ -24,9 +24,9 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.trigger.TriggerKeyShortcut +import io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut import io.github.sds100.keymapper.base.utils.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt index 73f4541fb6..30b82267f2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt @@ -3,11 +3,11 @@ package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.base.actions.Action import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.actions.RepeatMode -import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase -import io.github.sds100.keymapper.constraints.isSatisfied +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase +import io.github.sds100.keymapper.base.constraints.isSatisfied import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase -import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.common.utils.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineStart import kotlinx.coroutines.Job diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt index b732403cc2..127f2021dd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapModel.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.keymaps.detection -import io.github.sds100.keymapper.constraints.ConstraintState +import io.github.sds100.keymapper.base.constraints.ConstraintState import io.github.sds100.keymapper.base.keymaps.KeyMap data class DetectKeyMapModel( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt index ef618e3ad6..912c42ee2a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt @@ -4,15 +4,15 @@ import android.accessibilityservice.AccessibilityService import android.os.SystemClock import android.view.InputDevice import android.view.KeyEvent -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.constraints.ConstraintState +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.constraints.ConstraintState import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository import io.github.sds100.keymapper.data.repositories.GroupRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.groups.Group -import io.github.sds100.keymapper.groups.GroupEntityMapper +import io.github.sds100.keymapper.base.groups.Group +import io.github.sds100.keymapper.base.groups.GroupEntityMapper import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.KeyMapEntityMapper import io.github.sds100.keymapper.data.repositories.KeyMapRepository @@ -28,11 +28,11 @@ import io.github.sds100.keymapper.system.popup.ToastAdapter import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.system.vibrator.VibratorAdapter import io.github.sds100.keymapper.system.volume.VolumeAdapter -import io.github.sds100.keymapper.trigger.FingerprintTriggerKey -import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey +import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull -import io.github.sds100.keymapper.base.utils.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt index 6094ee46cf..a38b9d9ad9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.actions.RepeatMode import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.common.utils.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt index 8c86545e95..a256f3eb8b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.base.actions.Action import io.github.sds100.keymapper.base.actions.PerformActionsUseCase -import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.common.utils.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt index 05eab5bfb3..c46de7b3d1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.keymaps.detection import io.github.sds100.keymapper.base.actions.PerformActionsUseCase -import io.github.sds100.keymapper.constraints.DetectConstraintsUseCase +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.SimpleMappingController import kotlinx.coroutines.CoroutineScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt index 84aa846e1a..c2aee808cb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.logging -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.clipboard.ClipboardAdapter import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.common.utils.State diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt index 0a370bab4b..1f9f40d1d4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt @@ -14,7 +14,7 @@ import com.airbnb.epoxy.EpoxyRecyclerView import com.airbnb.epoxy.TypedEpoxyController import com.michaelflisar.dragselectrecyclerview.DragSelectTouchListener import com.michaelflisar.dragselectrecyclerview.DragSelectionProcessor -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.logEntry import io.github.sds100.keymapper.system.files.FileUtils diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt index 43c5d8cb1d..7c06aac05a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt @@ -4,7 +4,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.michaelflisar.dragselectrecyclerview.DragSelectionProcessor import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.ifIsData import io.github.sds100.keymapper.common.utils.mapData diff --git a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingTapTarget.kt b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingTapTarget.kt index 3f2f2db2ed..a65de34e57 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingTapTarget.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingTapTarget.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.onboarding import androidx.annotation.StringRes -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R enum class OnboardingTapTarget( @StringRes val titleRes: Int, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt index ca6e78e29e..d35f760723 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt @@ -4,7 +4,7 @@ import android.view.KeyEvent import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputmethod.InputKeyModel -import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.common.utils.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt index 0324f4f1c3..1a7a66d1ff 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -8,7 +8,6 @@ import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.common.utils.firstBlocking -import io.github.sds100.keymapper.base.utils.SettingsRepository import kotlinx.coroutines.flow.map import kotlinx.coroutines.runBlocking import javax.inject.Inject @@ -24,7 +23,6 @@ class RerouteKeyEventsUseCaseImpl @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, private val keyMapperImeMessenger: ImeInputEventInjector, private val preferenceRepository: PreferenceRepository, - private val settingsRepository: SettingsRepository ) : RerouteKeyEventsUseCase { private val rerouteKeyEvents = diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt index c9a70dc003..a9f3f5ed60 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.Lifecycle import androidx.preference.Preference import androidx.preference.SwitchPreference import androidx.preference.isEmpty -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.system.leanback.LeanbackUtils import io.github.sds100.keymapper.system.url.UrlUtils diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt index 9e680a5177..8cdbe429cf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt @@ -7,7 +7,7 @@ import androidx.annotation.RequiresApi import androidx.preference.Preference import androidx.preference.SwitchPreferenceCompat import androidx.preference.isEmpty -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.base.system.notifications.NotificationController diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt index 0f2d22383e..c9340190a3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt @@ -10,7 +10,7 @@ import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import androidx.preference.PreferenceFragmentCompat import com.google.android.material.bottomappbar.BottomAppBar -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.url.UrlUtils import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.str diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt index 370b13133b..b8bcaff1ea 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.Lifecycle import androidx.preference.Preference import androidx.preference.SeekBarPreference import androidx.preference.isEmpty -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt index 5fc659c4bb..7edf68f7a5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt @@ -7,7 +7,7 @@ import androidx.annotation.RequiresApi import androidx.preference.Preference import androidx.preference.SwitchPreferenceCompat import androidx.preference.isEmpty -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.base.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt index e89d54a675..1c8cdd2ed3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt @@ -15,8 +15,8 @@ import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.SwitchPreferenceCompat import androidx.preference.isEmpty -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.backup.BackupUtils +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.backup.BackupUtils import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.system.shizuku.ShizukuUtils diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsUtils.kt index 2e849b24d5..6e9e942221 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsUtils.kt @@ -4,7 +4,7 @@ import android.content.Context import androidx.annotation.StringRes import androidx.datastore.preferences.core.Preferences import androidx.preference.Preference -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R object SettingsUtils { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt index 9644e4e272..d63a96b9af 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.settings import androidx.datastore.preferences.core.Preferences import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.common.utils.otherwise diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt index 9c86eed10b..55e0535520 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt @@ -5,7 +5,7 @@ import android.view.View import androidx.lifecycle.Lifecycle import androidx.preference.Preference import androidx.preference.isEmpty -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.url.UrlUtils import io.github.sds100.keymapper.base.utils.drawable import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt index 450ff69fc7..493365cf15 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt @@ -68,7 +68,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.ui.compose.DraggableItem import io.github.sds100.keymapper.base.utils.ui.compose.rememberDragDropState diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt index 943eadf8ff..1806f0380a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt @@ -9,7 +9,6 @@ import io.github.sds100.keymapper.sorting.comparators.KeyMapConstraintsComparato import io.github.sds100.keymapper.sorting.comparators.KeyMapOptionsComparator import io.github.sds100.keymapper.sorting.comparators.KeyMapTriggerComparator import io.github.sds100.keymapper.base.utils.SettingsRepository -import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlinx.serialization.json.Json import javax.inject.Inject @@ -19,7 +18,6 @@ import javax.inject.Singleton class SortKeyMapsUseCaseImpl @Inject constructor( private val preferenceRepository: PreferenceRepository, private val displayKeyMapUseCase: DisplayKeyMapUseCase, - private val settingsRepository: SettingsRepository ) : SortKeyMapsUseCase { override val showHelp = preferenceRepository.get(Keys.sortShowHelp).map { it ?: true } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt index 58f6e558b6..90775285bd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt @@ -4,8 +4,8 @@ import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.common.utils.valueOrNull -import io.github.sds100.keymapper.constraints.Constraint -import io.github.sds100.keymapper.constraints.DisplayConstraintUseCase +import io.github.sds100.keymapper.base.constraints.Constraint +import io.github.sds100.keymapper.base.constraints.DisplayConstraintUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap import java.time.LocalDate import java.time.ZoneOffset diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt index 1d9058094b..6289b9c79b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.system import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.bluetooth.ChooseBluetoothDeviceUseCase diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt index 79be299a00..f820e6fe40 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt @@ -16,14 +16,14 @@ import androidx.lifecycle.LifecycleRegistry import androidx.savedstate.SavedStateRegistry import androidx.savedstate.SavedStateRegistryController import androidx.savedstate.SavedStateRegistryOwner -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback import io.github.sds100.keymapper.api.KeyEventRelayService import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapperImpl import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent -import io.github.sds100.keymapper.trigger.KeyEventDetectionSource +import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.base.utils.Inject import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt index 1143df57c7..abb27603cc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt @@ -18,20 +18,20 @@ import io.github.sds100.keymapper.base.keymaps.detection.KeyMapController import io.github.sds100.keymapper.base.keymaps.detection.TriggerKeyMapFromOtherAppsController import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase import io.github.sds100.keymapper.base.trigger.RecordTriggerEvent -import io.github.sds100.keymapper.reroutekeyevents.RerouteKeyEventsController +import io.github.sds100.keymapper.base.Reroutekeyevents.RerouteKeyEventsController import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.trigger.KeyEventDetectionSource +import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.mapping.actions.PerformActionsUseCase import io.github.sds100.keymapper.mapping.constraints.DetectConstraintsUseCase -import io.github.sds100.keymapper.mapping.keymaps.FingerprintGesturesSupportedUseCase -import io.github.sds100.keymapper.mapping.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.mapping.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt index 9ff8f56a2b..bb7f7f53a0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.system.accessibility import android.os.Build import androidx.annotation.RequiresApi import io.github.sds100.keymapper.common.utils.Result -import io.github.sds100.keymapper.base.utils.InputEventType +import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.common.utils.PinchScreenType import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt index adf930932c..353bed8c47 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt @@ -31,7 +31,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.drawable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt index 15b81ec755..e01f94161b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt @@ -8,7 +8,7 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.simple diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt index 5589c377db..bff9827076 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt @@ -4,7 +4,7 @@ import android.content.Intent import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.mapData diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt index e761d17da4..3f4fb10614 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt @@ -14,7 +14,7 @@ import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.mapping.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.system.accessibility.ControlAccessibilityServiceUseCase import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState diff --git a/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt index ea5436ad2e..a0b4bc32e8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt @@ -8,7 +8,7 @@ import androidx.annotation.RequiresApi import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.UseCases import AccessibilityServiceState diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index 3d1390b322..171b0d477d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -8,29 +8,21 @@ import androidx.compose.material.icons.rounded.Fingerprint import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result -import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapOptionsViewModel import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.CreateKeyMapShortcutUseCase import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase -import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.ShortcutModel -import io.github.sds100.keymapper.onboarding.OnboardingTapTarget -import io.github.sds100.keymapper.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.purchasing.ProductId import io.github.sds100.keymapper.base.purchasing.PurchasingManager -import io.github.sds100.keymapper.system.devices.InputDeviceUtils -import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.dataOrNull -import io.github.sds100.keymapper.common.utils.ifIsData -import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType +import io.github.sds100.keymapper.base.utils.InputEventStrings import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.LinkType @@ -43,6 +35,15 @@ import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.common.utils.ifIsData +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.system.devices.InputDeviceUtils +import io.github.sds100.keymapper.system.inputevents.InputEventUtils import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow @@ -66,11 +67,11 @@ abstract class BaseConfigTriggerViewModel( private val coroutineScope: CoroutineScope, private val onboarding: OnboardingUseCase, private val config: ConfigKeyMapUseCase, - private val recordTrigger: io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase, + private val recordTrigger: RecordTriggerUseCase, private val createKeyMapShortcut: CreateKeyMapShortcutUseCase, private val displayKeyMap: DisplayKeyMapUseCase, private val purchasingManager: PurchasingManager, - private val setupGuiKeyboard: io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase, + private val setupGuiKeyboard: SetupGuiKeyboardUseCase, private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, ) : ResourceProvider by resourceProvider, @@ -94,14 +95,14 @@ abstract class BaseConfigTriggerViewModel( fingerprintGesturesSupported.isSupported, purchasingManager.purchases, ) { isFingerprintGesturesSupported, purchasesState -> - val newShortcuts = mutableSetOf>() + val newShortcuts = mutableSetOf>() if (isFingerprintGesturesSupported == true) { newShortcuts.add( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.Fingerprint), text = getString(R.string.trigger_key_shortcut_add_fingerprint_gesture), - data = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut.FINGERPRINT_GESTURE, + data = TriggerKeyShortcut.FINGERPRINT_GESTURE, ), ) } @@ -113,7 +114,7 @@ abstract class BaseConfigTriggerViewModel( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.Assistant), text = getString(R.string.trigger_key_shortcut_add_assistant), - data = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut.ASSISTANT, + data = TriggerKeyShortcut.ASSISTANT, ), ) } @@ -123,7 +124,7 @@ abstract class BaseConfigTriggerViewModel( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.BubbleChart), text = getString(R.string.trigger_key_shortcut_add_floating_button), - data = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut.FLOATING_BUTTON, + data = TriggerKeyShortcut.FLOATING_BUTTON, ), ) } @@ -137,32 +138,32 @@ abstract class BaseConfigTriggerViewModel( MutableStateFlow(State.Loading) val state: StateFlow> = _state.asStateFlow() - val recordTriggerState: StateFlow = recordTrigger.state.stateIn( + val recordTriggerState: StateFlow = recordTrigger.state.stateIn( coroutineScope, SharingStarted.Lazily, - _root_ide_package_.io.github.sds100.keymapper.base.trigger.RecordTriggerState.Idle, + RecordTriggerState.Idle, ) var showAdvancedTriggersBottomSheet: Boolean by mutableStateOf(false) var showDpadTriggerSetupBottomSheet: Boolean by mutableStateOf(false) var showNoKeysRecordedBottomSheet: Boolean by mutableStateOf(false) - val setupGuiKeyboardState: StateFlow = combine( + val setupGuiKeyboardState: StateFlow = combine( setupGuiKeyboard.isInstalled, setupGuiKeyboard.isEnabled, setupGuiKeyboard.isChosen, ) { isInstalled, isEnabled, isChosen -> - _root_ide_package_.io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardState( + SetupGuiKeyboardState( isInstalled, isEnabled, isChosen, ) }.stateIn(coroutineScope, SharingStarted.Lazily, - _root_ide_package_.io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardState.Companion.DEFAULT + SetupGuiKeyboardState.DEFAULT ) val triggerKeyOptionsUid = MutableStateFlow(null) - val triggerKeyOptionsState: StateFlow = + val triggerKeyOptionsState: StateFlow = combine(config.keyMap, triggerKeyOptionsUid, transform = ::buildKeyOptionsUiState) .stateIn(coroutineScope, SharingStarted.Lazily, null) @@ -222,7 +223,7 @@ abstract class BaseConfigTriggerViewModel( // "button not detected" bottom sheet isn't shown when // the screen is opened. recordTrigger.state.drop(1).onEach { state -> - if (state is io.github.sds100.keymapper.base.trigger.RecordTriggerState.Completed && + if (state is RecordTriggerState.Completed && state.recordedKeys.isEmpty() && onboarding.showNoKeysDetectedBottomSheet.first() && !isRecordingCompletionUserInitiated @@ -235,8 +236,8 @@ abstract class BaseConfigTriggerViewModel( }.launchIn(coroutineScope) } - open fun onClickTriggerKeyShortcut(shortcut: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut) { - if (shortcut == _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut.FINGERPRINT_GESTURE) { + open fun onClickTriggerKeyShortcut(shortcut: TriggerKeyShortcut) { + if (shortcut == TriggerKeyShortcut.FINGERPRINT_GESTURE) { coroutineScope.launch { val listItems = listOf( FingerprintGestureType.SWIPE_DOWN to getString(R.string.fingerprint_gesture_down), @@ -261,8 +262,8 @@ abstract class BaseConfigTriggerViewModel( private fun buildUiState( keyMapState: State, showDeviceDescriptors: Boolean, - triggerKeyShortcuts: Set>, - triggerErrorSnapshot: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot, + triggerKeyShortcuts: Set>, + triggerErrorSnapshot: TriggerErrorSnapshot, showRecordTriggerTapTarget: Boolean, showAdvancedTriggersTapTarget: Boolean, ): State { @@ -270,7 +271,7 @@ abstract class BaseConfigTriggerViewModel( val trigger = keyMap.trigger if (trigger.keys.isEmpty()) { - return@mapData _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty( + return@mapData ConfigTriggerState.Empty( triggerKeyShortcuts, showRecordTriggerTapTarget = showRecordTriggerTapTarget, showAdvancedTriggersTapTarget = showAdvancedTriggersTapTarget, @@ -306,18 +307,18 @@ abstract class BaseConfigTriggerViewModel( clickTypeButtons.add(ClickType.DOUBLE_PRESS) } - if (trigger.keys.isNotEmpty() && trigger.mode !is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Sequence && trigger.keys.all { it.allowedLongPress }) { + if (trigger.keys.isNotEmpty() && trigger.mode !is TriggerMode.Sequence && trigger.keys.all { it.allowedLongPress }) { clickTypeButtons.add(ClickType.SHORT_PRESS) clickTypeButtons.add(ClickType.LONG_PRESS) } val checkedClickType: ClickType? = when { - trigger.mode is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Parallel -> trigger.mode.clickType + trigger.mode is TriggerMode.Parallel -> trigger.mode.clickType trigger.keys.size == 1 -> trigger.keys[0].clickType else -> null } - _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Loaded( + ConfigTriggerState.Loaded( triggerKeys = triggerKeys, isReorderingEnabled = isReorderingEnabled, clickTypeButtons = clickTypeButtons, @@ -334,7 +335,7 @@ abstract class BaseConfigTriggerViewModel( private suspend fun buildKeyOptionsUiState( keyMapState: State, triggerKeyUid: String?, - ): _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState? { + ): TriggerKeyOptionsState? { if (triggerKeyUid == null) { return null } @@ -346,14 +347,14 @@ abstract class BaseConfigTriggerViewModel( val key = trigger.keys.find { it.uid == triggerKeyUid } ?: return null - val showClickTypes = trigger.mode is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Sequence + val showClickTypes = trigger.mode is TriggerMode.Sequence when (key) { - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey -> { + is KeyCodeTriggerKey -> { val showDeviceDescriptors = displayKeyMap.showDeviceDescriptors.first() val deviceListItems: List = config.getAvailableTriggerKeyDevices() - .map { device: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice -> + .map { device: TriggerKeyDevice -> buildDeviceListItem( device = device, showDeviceDescriptors = showDeviceDescriptors, @@ -361,7 +362,7 @@ abstract class BaseConfigTriggerViewModel( ) } - return _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.KeyCode( + return TriggerKeyOptionsState.KeyCode( doNotRemapChecked = !key.consumeEvent, clickType = key.clickType, showClickTypes = showClickTypes, @@ -369,23 +370,23 @@ abstract class BaseConfigTriggerViewModel( ) } - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.AssistantTriggerKey -> { - return _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.Assistant( + is AssistantTriggerKey -> { + return TriggerKeyOptionsState.Assistant( assistantType = key.type, clickType = key.clickType, ) } - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.FloatingButtonKey -> { - return _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.FloatingButton( + is FloatingButtonKey -> { + return TriggerKeyOptionsState.FloatingButton( clickType = key.clickType, showClickTypes = showClickTypes, isPurchased = displayKeyMap.isFloatingButtonsPurchased(), ) } - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey -> { - return _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.FingerprintGesture( + is FingerprintTriggerKey -> { + return TriggerKeyOptionsState.FingerprintGesture( gestureType = key.type, clickType = key.clickType, ) @@ -396,24 +397,24 @@ abstract class BaseConfigTriggerViewModel( } private fun buildDeviceListItem( - device: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice, + device: TriggerKeyDevice, isChecked: Boolean, showDeviceDescriptors: Boolean, ): CheckBoxListItem { return when (device) { - _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.Any -> CheckBoxListItem( - id = _root_ide_package_.io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_ANY, + TriggerKeyDevice.Any -> CheckBoxListItem( + id = DEVICE_ID_ANY, isChecked = isChecked, label = getString(R.string.any_device), ) - _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.Internal -> CheckBoxListItem( - id = _root_ide_package_.io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_INTERNAL, + TriggerKeyDevice.Internal -> CheckBoxListItem( + id = DEVICE_ID_INTERNAL, isChecked = isChecked, label = getString(R.string.this_device), ) - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.External -> { + is TriggerKeyDevice.External -> { val name = if (showDeviceDescriptors) { InputDeviceUtils.appendDeviceDescriptorToName( device.descriptor, @@ -432,8 +433,8 @@ abstract class BaseConfigTriggerViewModel( } } - private suspend fun onTriggerModeChanged(mode: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode) { - if (mode is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Parallel) { + private suspend fun onTriggerModeChanged(mode: TriggerMode) { + if (mode is TriggerMode.Parallel) { if (onboarding.shownParallelTriggerOrderExplanation) { return } @@ -447,7 +448,7 @@ abstract class BaseConfigTriggerViewModel( onboarding.shownParallelTriggerOrderExplanation = true } - if (mode is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Sequence) { + if (mode is TriggerMode.Sequence) { if (onboarding.shownSequenceTriggerExplanation) { return } @@ -463,7 +464,7 @@ abstract class BaseConfigTriggerViewModel( } } - private suspend fun onRecordTriggerKey(key: _root_ide_package_.io.github.sds100.keymapper.base.trigger.RecordedKey) { + private suspend fun onRecordTriggerKey(key: RecordedKey) { // Add the trigger key before showing the dialog so it doesn't // need to be dismissed before it is added. config.addKeyCodeTriggerKey(key.keyCode, key.device, key.detectionSource) @@ -505,7 +506,7 @@ abstract class BaseConfigTriggerViewModel( // Issue #491. Some key codes can only be detected through an input method. This will // be shown to the user by showing a keyboard icon next to the trigger key name so // explain this to the user. - if (key.detectionSource == _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource.INPUT_METHOD && displayKeyMap.showTriggerKeyboardIconExplanation.first()) { + if (key.detectionSource == KeyEventDetectionSource.INPUT_METHOD && displayKeyMap.showTriggerKeyboardIconExplanation.first()) { val dialog = PopupUi.Dialog( title = getString(R.string.dialog_title_keyboard_icon_means_ime_detection), message = getString(R.string.dialog_message_keyboard_icon_means_ime_detection), @@ -559,15 +560,15 @@ abstract class BaseConfigTriggerViewModel( fun onSelectTriggerKeyDevice(descriptor: String) { triggerKeyOptionsUid.value?.let { triggerKeyUid -> val device = when (descriptor) { - _root_ide_package_.io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_ANY -> _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.Any - _root_ide_package_.io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel.Companion.DEVICE_ID_INTERNAL -> _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.Internal + DEVICE_ID_ANY -> TriggerKeyDevice.Any + DEVICE_ID_INTERNAL -> TriggerKeyDevice.Internal else -> { val device = config.getAvailableTriggerKeyDevices() - .filterIsInstance<_root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.External>() + .filterIsInstance() .firstOrNull { it.descriptor == descriptor } ?: return - _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.External( + TriggerKeyDevice.External( device.descriptor, device.name ) @@ -581,7 +582,7 @@ abstract class BaseConfigTriggerViewModel( } } - fun onSelectTriggerKeyAssistantType(type: _root_ide_package_.io.github.sds100.keymapper.base.trigger.AssistantTriggerType) { + fun onSelectTriggerKeyAssistantType(type: AssistantTriggerType) { triggerKeyOptionsUid.value?.let { triggerKeyUid -> config.setAssistantTriggerKeyType(triggerKeyUid, type) } @@ -598,13 +599,13 @@ abstract class BaseConfigTriggerViewModel( val recordTriggerState = recordTrigger.state.firstOrNull() ?: return@launch val result = when (recordTriggerState) { - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.RecordTriggerState.CountingDown -> { + is RecordTriggerState.CountingDown -> { isRecordingCompletionUserInitiated = true recordTrigger.stopRecording() } - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.RecordTriggerState.Completed, - _root_ide_package_.io.github.sds100.keymapper.base.trigger.RecordTriggerState.Idle, + is RecordTriggerState.Completed, + RecordTriggerState.Idle, -> recordTrigger.startRecording() } @@ -631,10 +632,10 @@ abstract class BaseConfigTriggerViewModel( } } - open fun onTriggerErrorClick(error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError) { + open fun onTriggerErrorClick(error: TriggerError) { coroutineScope.launch { when (error) { - _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError.DND_ACCESS_DENIED -> + TriggerError.DND_ACCESS_DENIED -> ViewModelHelper.showDialogExplainingDndAccessBeingUnavailable( resourceProvider = this@BaseConfigTriggerViewModel, popupViewModel = this@BaseConfigTriggerViewModel, @@ -642,7 +643,7 @@ abstract class BaseConfigTriggerViewModel( fixError = { displayKeyMap.fixTriggerError(error) }, ) - _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError.DPAD_IME_NOT_SELECTED -> { + TriggerError.DPAD_IME_NOT_SELECTED -> { showDpadTriggerSetupBottomSheet = true } @@ -655,27 +656,27 @@ abstract class BaseConfigTriggerViewModel( keyMap: KeyMap, showDeviceDescriptors: Boolean, shortcutCount: Int, - triggerErrorSnapshot: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot, - ): List<_root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel> { + triggerErrorSnapshot: TriggerErrorSnapshot, + ): List { val trigger = keyMap.trigger return trigger.keys.mapIndexed { index, key -> val error = triggerErrorSnapshot.getTriggerError(keyMap, key) - val clickType = if (trigger.mode is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Parallel) { + val clickType = if (trigger.mode is TriggerMode.Parallel) { trigger.mode.clickType } else { key.clickType } val linkType = when { - trigger.mode is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Sequence && (index < trigger.keys.lastIndex) -> LinkType.ARROW + trigger.mode is TriggerMode.Sequence && (index < trigger.keys.lastIndex) -> LinkType.ARROW (index < trigger.keys.lastIndex) -> LinkType.PLUS else -> LinkType.HIDDEN } when (key) { - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.AssistantTriggerKey -> _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.Assistant( + is AssistantTriggerKey -> TriggerKeyListItemModel.Assistant( id = key.uid, assistantType = key.type, clickType = clickType, @@ -683,7 +684,7 @@ abstract class BaseConfigTriggerViewModel( error = error, ) - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey -> _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FingerprintGesture( + is FingerprintTriggerKey -> TriggerKeyListItemModel.FingerprintGesture( id = key.uid, gestureType = key.type, clickType = clickType, @@ -691,7 +692,7 @@ abstract class BaseConfigTriggerViewModel( error = error, ) - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey -> _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.KeyCode( + is KeyCodeTriggerKey -> TriggerKeyListItemModel.KeyCode( id = key.uid, keyName = getTriggerKeyName(key), clickType = clickType, @@ -703,15 +704,15 @@ abstract class BaseConfigTriggerViewModel( error = error, ) - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.FloatingButtonKey -> { + is FloatingButtonKey -> { if (key.button == null) { - _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButtonDeleted( + TriggerKeyListItemModel.FloatingButtonDeleted( id = key.uid, clickType = clickType, linkType = linkType, ) } else { - _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButton( + TriggerKeyListItemModel.FloatingButton( id = key.uid, buttonName = key.button.appearance.text, layoutName = key.button.layoutName, @@ -726,7 +727,7 @@ abstract class BaseConfigTriggerViewModel( } private fun getTriggerKeyExtraInfo( - key: _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey, + key: KeyCodeTriggerKey, showDeviceDescriptors: Boolean, ): String { return buildString { @@ -739,11 +740,11 @@ abstract class BaseConfigTriggerViewModel( } } - private fun getTriggerKeyName(key: _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey): String { + private fun getTriggerKeyName(key: KeyCodeTriggerKey): String { return buildString { - append(InputEventUtils.keyCodeToString(key.keyCode)) + append(InputEventStrings.keyCodeToString(key.keyCode)) - if (key.detectionSource == _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource.INPUT_METHOD) { + if (key.detectionSource == KeyEventDetectionSource.INPUT_METHOD) { val midDot = getString(R.string.middot) append(" $midDot ${getString(R.string.flag_detect_from_input_method)}") } @@ -751,12 +752,12 @@ abstract class BaseConfigTriggerViewModel( } private fun getTriggerKeyDeviceName( - device: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice, + device: TriggerKeyDevice, showDeviceDescriptors: Boolean, ): String = when (device) { - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.Internal -> getString(R.string.this_device) - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.Any -> getString(R.string.any_device) - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyDevice.External -> { + is TriggerKeyDevice.Internal -> getString(R.string.this_device) + is TriggerKeyDevice.Any -> getString(R.string.any_device) + is TriggerKeyDevice.External -> { if (showDeviceDescriptors) { InputDeviceUtils.appendDeviceDescriptorToName( device.descriptor, @@ -800,32 +801,32 @@ abstract class BaseConfigTriggerViewModel( } sealed class ConfigTriggerState { - abstract val shortcuts: Set> + abstract val shortcuts: Set> abstract val showAdvancedTriggersTapTarget: Boolean data class Empty( - override val shortcuts: Set> = emptySet(), + override val shortcuts: Set> = emptySet(), val showRecordTriggerTapTarget: Boolean = false, override val showAdvancedTriggersTapTarget: Boolean = false, - ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState() + ) : ConfigTriggerState() data class Loaded( - val triggerKeys: List<_root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel> = emptyList(), + val triggerKeys: List = emptyList(), val isReorderingEnabled: Boolean = false, val clickTypeButtons: Set = emptySet(), val checkedClickType: ClickType? = null, - val checkedTriggerMode: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerMode.Undefined, + val checkedTriggerMode: TriggerMode = TriggerMode.Undefined, val triggerModeButtonsEnabled: Boolean = false, val triggerModeButtonsVisible: Boolean = false, - override val shortcuts: Set> = emptySet(), + override val shortcuts: Set> = emptySet(), override val showAdvancedTriggersTapTarget: Boolean = false, - ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState() + ) : ConfigTriggerState() } sealed class TriggerKeyListItemModel { abstract val id: String abstract val linkType: LinkType - abstract val error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError? + abstract val error: TriggerError? abstract val clickType: ClickType data class KeyCode( @@ -834,24 +835,24 @@ sealed class TriggerKeyListItemModel { val keyName: String, override val clickType: ClickType, val extraInfo: String?, - override val error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError?, - ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel() + override val error: TriggerError?, + ) : TriggerKeyListItemModel() data class Assistant( override val id: String, override val linkType: LinkType, - val assistantType: _root_ide_package_.io.github.sds100.keymapper.base.trigger.AssistantTriggerType, + val assistantType: AssistantTriggerType, override val clickType: ClickType, - override val error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError?, - ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel() + override val error: TriggerError?, + ) : TriggerKeyListItemModel() data class FingerprintGesture( override val id: String, override val linkType: LinkType, val gestureType: FingerprintGestureType, override val clickType: ClickType, - override val error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError?, - ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel() + override val error: TriggerError?, + ) : TriggerKeyListItemModel() data class FloatingButton( override val id: String, @@ -859,16 +860,16 @@ sealed class TriggerKeyListItemModel { val buttonName: String, val layoutName: String, override val clickType: ClickType, - override val error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError?, - ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel() + override val error: TriggerError?, + ) : TriggerKeyListItemModel() data class FloatingButtonDeleted( override val id: String, override val linkType: LinkType, override val clickType: ClickType, - ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel() { - override val error: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError = - _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerError.FLOATING_BUTTON_DELETED + ) : TriggerKeyListItemModel() { + override val error: TriggerError = + TriggerError.FLOATING_BUTTON_DELETED } } @@ -882,14 +883,14 @@ sealed class TriggerKeyOptionsState { override val clickType: ClickType, override val showClickTypes: Boolean, val devices: List, - ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState() { + ) : TriggerKeyOptionsState() { override val showLongPressClickType: Boolean = true } data class Assistant( - val assistantType: _root_ide_package_.io.github.sds100.keymapper.base.trigger.AssistantTriggerType, + val assistantType: AssistantTriggerType, override val clickType: ClickType, - ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState() { + ) : TriggerKeyOptionsState() { override val showClickTypes: Boolean = false override val showLongPressClickType: Boolean = false } @@ -897,7 +898,7 @@ sealed class TriggerKeyOptionsState { data class FingerprintGesture( val gestureType: FingerprintGestureType, override val clickType: ClickType, - ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState() { + ) : TriggerKeyOptionsState() { override val showClickTypes: Boolean = false override val showLongPressClickType: Boolean = false } @@ -906,7 +907,7 @@ sealed class TriggerKeyOptionsState { override val clickType: ClickType, override val showClickTypes: Boolean, val isPurchased: Boolean, - ) : _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState() { + ) : TriggerKeyOptionsState() { override val showLongPressClickType: Boolean = true } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt index 8fef31c8c6..9e698a97bd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyMapListItemModel.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.trigger import androidx.compose.ui.graphics.vector.ImageVector -import io.github.sds100.keymapper.constraints.ConstraintMode +import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel data class KeyMapListItemModel( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt index 993285f8d1..8a4074fd09 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt @@ -20,10 +20,10 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.canopas.lib.showcase.IntroShowcase -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.compose.LocalCustomColorsPalette -import io.github.sds100.keymapper.onboarding.OnboardingTapTarget +import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperTapTarget import io.github.sds100.keymapper.base.utils.ui.compose.keyMapperShowcaseStyle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt index c871914d92..db6dcd0d24 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt @@ -33,7 +33,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe import kotlinx.coroutines.launch diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt index b0601e966a..d00554b316 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt @@ -41,7 +41,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType import io.github.sds100.keymapper.base.utils.ui.LinkType diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt index ce2a12477e..a5c56b3be7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt index da85d3dca3..1701af380a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt @@ -38,7 +38,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.ShortcutModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt index ca93b0317b..f4c99b4910 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt @@ -12,7 +12,7 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.OnLifecycleEvent import androidx.lifecycle.lifecycleScope import com.google.android.material.textfield.TextInputLayout -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt index 9fbfe515d8..e08bc82463 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt @@ -4,7 +4,7 @@ import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickCoordinateResult import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickCoordinateResult import io.github.sds100.keymapper.base.actions.tapscreen.PickCoordinateResult -import io.github.sds100.keymapper.constraints.Constraint +import io.github.sds100.keymapper.base.constraints.Constraint import io.github.sds100.keymapper.system.apps.ActivityInfo import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutResult import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt index 43fbf6b1fb..4be11b0dbf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt @@ -20,8 +20,8 @@ import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickDisplayCoord import io.github.sds100.keymapper.base.actions.tapscreen.PickCoordinateResult import io.github.sds100.keymapper.base.actions.tapscreen.PickDisplayCoordinateFragment import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementFragment -import io.github.sds100.keymapper.constraints.ChooseConstraintFragment -import io.github.sds100.keymapper.constraints.Constraint +import io.github.sds100.keymapper.base.constraints.ChooseConstraintFragment +import io.github.sds100.keymapper.base.constraints.Constraint import io.github.sds100.keymapper.system.apps.ActivityInfo import io.github.sds100.keymapper.base.system.apps.ChooseActivityFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppFragment diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt index b13611c994..10974e98c7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt @@ -10,7 +10,7 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.OnLifecycleEvent -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.databinding.DialogChooseAppStoreBinding import io.github.sds100.keymapper.system.url.UrlUtils import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt index 3ec556d59e..be1ddb2b34 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt @@ -19,7 +19,7 @@ import androidx.navigation.fragment.findNavController import androidx.savedstate.SavedStateRegistry import com.airbnb.epoxy.EpoxyRecyclerView import com.google.android.material.bottomappbar.BottomAppBar -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewUtils.kt index 611aac380f..ea96a1fb8d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewUtils.kt @@ -4,7 +4,7 @@ import android.graphics.Rect import android.view.View import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import kotlin.math.floor diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt index bf39a199e4..4b03e1dc0c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import androidx.annotation.MenuRes import androidx.annotation.StringRes import com.google.android.material.bottomappbar.BottomAppBar -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt index 255a10cd42..fd21d0b093 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.utils.ui import androidx.coordinatorlayout.widget.CoordinatorLayout -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import kotlinx.coroutines.suspendCancellableCoroutine import splitties.snackbar.action import splitties.snackbar.longSnack diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt index c495d7765d..feae8cbccf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.utils.ui -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperTapTarget.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperTapTarget.kt index 3ecc87ad6d..5169ea85ad 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperTapTarget.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/KeyMapperTapTarget.kt @@ -12,8 +12,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.canopas.lib.showcase.component.ShowcaseStyle -import io.github.sds100.keymapper.R -import io.github.sds100.keymapper.onboarding.OnboardingTapTarget +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget @Composable fun KeyMapperTapTarget( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ListItemFixError.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ListItemFixError.kt index e71a7ba496..255a902f80 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ListItemFixError.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ListItemFixError.kt @@ -18,7 +18,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.ui.TextListItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SearchAppBarActions.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SearchAppBarActions.kt index 5529b0b45f..02176b229e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SearchAppBarActions.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SearchAppBarActions.kt @@ -18,7 +18,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R @Composable @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItem.kt index f09d140353..2d622620bd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItem.kt @@ -31,7 +31,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.drawable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SliderOptionText.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SliderOptionText.kt index 3dd2b08d9d..eebdc839f2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SliderOptionText.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SliderOptionText.kt @@ -35,7 +35,7 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.compose.KeyMapperTheme import kotlin.math.roundToInt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/UriHandlerUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/UriHandlerUtils.kt index 8d47e26311..b0dfb22638 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/UriHandlerUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/UriHandlerUtils.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.utils.ui.compose import android.content.Context import android.widget.Toast import androidx.compose.ui.platform.UriHandler -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.str fun UriHandler.openUriSafe(ctx: Context, uri: String) { diff --git a/base/src/main/java/io/github/sds100/keymapper/utils/IntentStrings.kt b/base/src/main/java/io/github/sds100/keymapper/utils/IntentStrings.kt index 2d0242cd5f..276e82e999 100644 --- a/base/src/main/java/io/github/sds100/keymapper/utils/IntentStrings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/utils/IntentStrings.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.utils -import io.github.sds100.keymapper.R +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.intents.* fun IntentExtraType.getLabelStringRes(): Int = when (this) { diff --git a/base/src/main/res/navigation/nav_app.xml b/base/src/main/res/navigation/nav_app.xml index e7ef8fc5e8..76a5e6b11d 100644 --- a/base/src/main/res/navigation/nav_app.xml +++ b/base/src/main/res/navigation/nav_app.xml @@ -307,7 +307,7 @@ >> @@ -22,39 +11,3 @@ interface AccessibilityNodeRepository { suspend fun deleteAll() } -class AccessibilityNodeRepositoryImpl( - private val coroutineScope: CoroutineScope, - private val dao: AccessibilityNodeDao, -) : AccessibilityNodeRepository { - - override val nodes: StateFlow>> = - dao.getAll() - .map { list -> - // Distinct by all fields except the ID. - State.Data(list.distinctBy { it.copy(id = 0) }) - } - .flowOn(Dispatchers.IO) - .stateIn(coroutineScope, SharingStarted.WhileSubscribed(10000), State.Loading) - - override fun insert(vararg node: AccessibilityNodeEntity) { - coroutineScope.launch(Dispatchers.IO) { - for (n in node) { - try { - dao.insert(n) - } catch (e: SQLiteConstraintException) { - // Do nothing if the node already exists. - } - } - } - } - - override suspend fun get(id: Long): AccessibilityNodeEntity? { - return dao.getById(id) - } - - override suspend fun deleteAll() { - withContext(Dispatchers.IO) { - dao.deleteAll() - } - } -} diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt index 8ca87f7ef6..ca2d2cd488 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt @@ -1,18 +1,9 @@ package io.github.sds100.keymapper.data.repositories -import io.github.sds100.keymapper.data.db.dao.FloatingButtonDao import io.github.sds100.keymapper.data.entities.FloatingButtonEntity import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout -import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider -import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.common.utils.State -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.SharingStarted -import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.stateIn -import kotlinx.coroutines.launch interface FloatingButtonRepository { val buttonsList: Flow>> @@ -23,46 +14,3 @@ interface FloatingButtonRepository { fun delete(vararg uid: String) } -class RoomFloatingButtonRepository( - private val dao: FloatingButtonDao, - private val coroutineScope: CoroutineScope, - private val dispatchers: DispatcherProvider = DefaultDispatcherProvider(), -) : FloatingButtonRepository { - override val buttonsList: StateFlow>> = dao.getAll() - .map { State.Data(it) } - .stateIn(coroutineScope, SharingStarted.Eagerly, State.Loading) - - override fun insert(vararg button: FloatingButtonEntity) { - coroutineScope.launch(dispatchers.default()) { - dao.insert(*button) - } - } - - override fun update(button: FloatingButtonEntity) { - coroutineScope.launch(dispatchers.default()) { - dao.update( - FloatingButtonEntity( - uid = button.uid, - layoutUid = button.layoutUid, - text = button.text, - buttonSize = button.buttonSize, - borderOpacity = button.borderOpacity, - backgroundOpacity = button.backgroundOpacity, - x = button.x, - y = button.y, - orientation = button.orientation, - displayWidth = button.displayWidth, - displayHeight = button.displayHeight, - ), - ) - } - } - - override suspend fun get(uid: String): FloatingButtonEntityWithLayout? = dao.getByUidWithLayout(uid) - - override fun delete(vararg uid: String) { - coroutineScope.launch(dispatchers.default()) { - dao.deleteByUid(*uid) - } - } -} diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt index 8db8d19b18..7f7b3809c7 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt @@ -1,20 +1,9 @@ package io.github.sds100.keymapper.data.repositories -import android.database.sqlite.SQLiteConstraintException -import io.github.sds100.keymapper.data.db.dao.FloatingLayoutDao import io.github.sds100.keymapper.data.entities.FloatingLayoutEntity import io.github.sds100.keymapper.data.entities.FloatingLayoutEntityWithButtons -import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider -import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.common.utils.State -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.SharingStarted -import kotlinx.coroutines.flow.flowOn -import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.stateIn -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext interface FloatingLayoutRepository { val layouts: Flow>> @@ -30,44 +19,3 @@ interface FloatingLayoutRepository { suspend fun count(): Int } -class RoomFloatingLayoutRepository( - private val dao: FloatingLayoutDao, - private val coroutineScope: CoroutineScope, - private val dispatchers: DispatcherProvider = DefaultDispatcherProvider(), -) : FloatingLayoutRepository { - override val layouts = dao.getAllWithButtons() - .map { State.Data(it) } - .flowOn(dispatchers.io()) - .stateIn(coroutineScope, SharingStarted.Eagerly, State.Loading) - - override suspend fun insert(vararg layout: FloatingLayoutEntity) { - withContext(dispatchers.io()) { - dao.insert(*layout) - } - } - - override suspend fun update(vararg layout: FloatingLayoutEntity): Boolean { - return withContext(dispatchers.io()) { - try { - dao.update(*layout) - true - } catch (e: SQLiteConstraintException) { - false - } - } - } - - override fun get(uid: String): Flow { - return dao.getByUidWithButtonsFlow(uid) - } - - override fun delete(vararg uid: String) { - coroutineScope.launch(dispatchers.io()) { - dao.deleteByUid(*uid) - } - } - - override suspend fun count(): Int { - return dao.count() - } -} diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt index 21c9164d64..c7b0686cb8 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt @@ -1,19 +1,9 @@ package io.github.sds100.keymapper.data.repositories -import io.github.sds100.keymapper.data.db.dao.GroupDao import io.github.sds100.keymapper.data.entities.GroupEntity import io.github.sds100.keymapper.data.entities.GroupEntityWithChildren import io.github.sds100.keymapper.data.entities.KeyMapEntitiesWithGroup -import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider -import io.github.sds100.keymapper.common.utils.DispatcherProvider -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.SharingStarted -import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.flowOn -import kotlinx.coroutines.flow.stateIn -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext interface GroupRepository { val groups: Flow> @@ -30,62 +20,3 @@ interface GroupRepository { suspend fun setLastOpenedDate(groupUid: String, timestamp: Long) } -class RoomGroupRepository( - private val dao: GroupDao, - private val coroutineScope: CoroutineScope, - private val dispatchers: DispatcherProvider = DefaultDispatcherProvider(), -) : GroupRepository { - - override val groups: StateFlow> = - dao.getAll().stateIn(coroutineScope, SharingStarted.WhileSubscribed(5000), emptyList()) - - override fun getKeyMapsByGroup(groupUid: String): Flow { - return dao.getKeyMapsByGroup(groupUid).flowOn(dispatchers.io()) - } - - override suspend fun getGroup(uid: String): GroupEntity? { - return withContext(dispatchers.io()) { dao.getById(uid) } - } - - override fun getAllGroups(): Flow> { - return dao.getAll().flowOn(dispatchers.io()) - } - - override fun getGroups(vararg uid: String): Flow> { - return dao.getManyByIdFlow(*uid).flowOn(dispatchers.io()) - } - - override fun getGroupsByParent(uid: String?): Flow> { - return dao.getGroupsByParent(uid).flowOn(dispatchers.io()) - } - - override fun getGroupWithChildren(uid: String): Flow { - return dao.getGroupWithSubGroups(uid).flowOn(dispatchers.io()) - } - - override suspend fun insert(groupEntity: GroupEntity) { - withContext(dispatchers.io()) { - dao.insert(groupEntity) - } - } - - override suspend fun update(groupEntity: GroupEntity) { - withContext(dispatchers.io()) { - dao.update(groupEntity) - } - } - - override fun delete(uid: String) { - coroutineScope.launch { - withContext(dispatchers.io()) { - dao.deleteByUid(uid) - } - } - } - - override suspend fun setLastOpenedDate(groupUid: String, timestamp: Long) { - withContext(dispatchers.io()) { - dao.setLastOpenedDate(groupUid, timestamp) - } - } -} diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomAccessibilityNodeRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomAccessibilityNodeRepository.kt new file mode 100644 index 0000000000..a826196371 --- /dev/null +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomAccessibilityNodeRepository.kt @@ -0,0 +1,55 @@ +package io.github.sds100.keymapper.data.repositories + +import android.database.sqlite.SQLiteConstraintException +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.data.db.dao.AccessibilityNodeDao +import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class RoomAccessibilityNodeRepository @Inject constructor( + private val coroutineScope: CoroutineScope, + private val dao: AccessibilityNodeDao, +) : AccessibilityNodeRepository { + + override val nodes: StateFlow>> = + dao.getAll() + .map { list -> + // Distinct by all fields except the ID. + State.Data(list.distinctBy { it.copy(id = 0) }) + } + .flowOn(Dispatchers.IO) + .stateIn(coroutineScope, SharingStarted.WhileSubscribed(10000), State.Loading) + + override fun insert(vararg node: AccessibilityNodeEntity) { + coroutineScope.launch(Dispatchers.IO) { + for (n in node) { + try { + dao.insert(n) + } catch (e: SQLiteConstraintException) { + // Do nothing if the node already exists. + } + } + } + } + + override suspend fun get(id: Long): AccessibilityNodeEntity? { + return dao.getById(id) + } + + override suspend fun deleteAll() { + withContext(Dispatchers.IO) { + dao.deleteAll() + } + } +} \ No newline at end of file diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingButtonRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingButtonRepository.kt new file mode 100644 index 0000000000..c03700f2e6 --- /dev/null +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingButtonRepository.kt @@ -0,0 +1,61 @@ +package io.github.sds100.keymapper.data.repositories + +import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.common.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.data.db.dao.FloatingButtonDao +import io.github.sds100.keymapper.data.entities.FloatingButtonEntity +import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.launch +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class RoomFloatingButtonRepository @Inject constructor( + private val dao: FloatingButtonDao, + private val coroutineScope: CoroutineScope, + private val dispatchers: DispatcherProvider = DefaultDispatcherProvider(), +) : FloatingButtonRepository { + override val buttonsList: StateFlow>> = dao.getAll() + .map { State.Data(it) } + .stateIn(coroutineScope, SharingStarted.Eagerly, State.Loading) + + override fun insert(vararg button: FloatingButtonEntity) { + coroutineScope.launch(dispatchers.default()) { + dao.insert(*button) + } + } + + override fun update(button: FloatingButtonEntity) { + coroutineScope.launch(dispatchers.default()) { + dao.update( + FloatingButtonEntity( + uid = button.uid, + layoutUid = button.layoutUid, + text = button.text, + buttonSize = button.buttonSize, + borderOpacity = button.borderOpacity, + backgroundOpacity = button.backgroundOpacity, + x = button.x, + y = button.y, + orientation = button.orientation, + displayWidth = button.displayWidth, + displayHeight = button.displayHeight, + ), + ) + } + } + + override suspend fun get(uid: String): FloatingButtonEntityWithLayout? = dao.getByUidWithLayout(uid) + + override fun delete(vararg uid: String) { + coroutineScope.launch(dispatchers.default()) { + dao.deleteByUid(*uid) + } + } +} \ No newline at end of file diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingLayoutRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingLayoutRepository.kt new file mode 100644 index 0000000000..d5d27a9ad8 --- /dev/null +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingLayoutRepository.kt @@ -0,0 +1,62 @@ +package io.github.sds100.keymapper.data.repositories + +import android.database.sqlite.SQLiteConstraintException +import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.common.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.data.db.dao.FloatingLayoutDao +import io.github.sds100.keymapper.data.entities.FloatingLayoutEntity +import io.github.sds100.keymapper.data.entities.FloatingLayoutEntityWithButtons +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class RoomFloatingLayoutRepository @Inject constructor( + private val dao: FloatingLayoutDao, + private val coroutineScope: CoroutineScope, + private val dispatchers: DispatcherProvider = DefaultDispatcherProvider(), +) : FloatingLayoutRepository { + override val layouts = dao.getAllWithButtons() + .map { State.Data(it) } + .flowOn(dispatchers.io()) + .stateIn(coroutineScope, SharingStarted.Eagerly, State.Loading) + + override suspend fun insert(vararg layout: FloatingLayoutEntity) { + withContext(dispatchers.io()) { + dao.insert(*layout) + } + } + + override suspend fun update(vararg layout: FloatingLayoutEntity): Boolean { + return withContext(dispatchers.io()) { + try { + dao.update(*layout) + true + } catch (e: SQLiteConstraintException) { + false + } + } + } + + override fun get(uid: String): Flow { + return dao.getByUidWithButtonsFlow(uid) + } + + override fun delete(vararg uid: String) { + coroutineScope.launch(dispatchers.io()) { + dao.deleteByUid(*uid) + } + } + + override suspend fun count(): Int { + return dao.count() + } +} \ No newline at end of file diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomGroupRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomGroupRepository.kt new file mode 100644 index 0000000000..cb3c3778e0 --- /dev/null +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomGroupRepository.kt @@ -0,0 +1,76 @@ +package io.github.sds100.keymapper.data.repositories + +import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.common.utils.DispatcherProvider +import io.github.sds100.keymapper.data.db.dao.GroupDao +import io.github.sds100.keymapper.data.entities.GroupEntity +import io.github.sds100.keymapper.data.entities.GroupEntityWithChildren +import io.github.sds100.keymapper.data.entities.KeyMapEntitiesWithGroup +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +class RoomGroupRepository( + private val dao: GroupDao, + private val coroutineScope: CoroutineScope, + private val dispatchers: DispatcherProvider = DefaultDispatcherProvider(), +) : GroupRepository { + + override val groups: StateFlow> = + dao.getAll().stateIn(coroutineScope, SharingStarted.WhileSubscribed(5000), emptyList()) + + override fun getKeyMapsByGroup(groupUid: String): Flow { + return dao.getKeyMapsByGroup(groupUid).flowOn(dispatchers.io()) + } + + override suspend fun getGroup(uid: String): GroupEntity? { + return withContext(dispatchers.io()) { dao.getById(uid) } + } + + override fun getAllGroups(): Flow> { + return dao.getAll().flowOn(dispatchers.io()) + } + + override fun getGroups(vararg uid: String): Flow> { + return dao.getManyByIdFlow(*uid).flowOn(dispatchers.io()) + } + + override fun getGroupsByParent(uid: String?): Flow> { + return dao.getGroupsByParent(uid).flowOn(dispatchers.io()) + } + + override fun getGroupWithChildren(uid: String): Flow { + return dao.getGroupWithSubGroups(uid).flowOn(dispatchers.io()) + } + + override suspend fun insert(groupEntity: GroupEntity) { + withContext(dispatchers.io()) { + dao.insert(groupEntity) + } + } + + override suspend fun update(groupEntity: GroupEntity) { + withContext(dispatchers.io()) { + dao.update(groupEntity) + } + } + + override fun delete(uid: String) { + coroutineScope.launch { + withContext(dispatchers.io()) { + dao.deleteByUid(uid) + } + } + } + + override suspend fun setLastOpenedDate(groupUid: String, timestamp: Long) { + withContext(dispatchers.io()) { + dao.setLastOpenedDate(groupUid, timestamp) + } + } +} \ No newline at end of file diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt index ac79534c03..fc0306e24e 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt @@ -19,8 +19,11 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.UUID +import javax.inject.Inject +import javax.inject.Singleton -class RoomKeyMapRepository( +@Singleton +class RoomKeyMapRepository @Inject constructor( private val keyMapDao: KeyMapDao, private val fingerprintMapDao: FingerprintMapDao, private val coroutineScope: CoroutineScope, diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt index 83ee0bf5fe..083a8034b9 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomLogRepository.kt @@ -14,8 +14,11 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import javax.inject.Inject +import javax.inject.Singleton -class RoomLogRepository( +@Singleton +class RoomLogRepository @Inject constructor( private val coroutineScope: CoroutineScope, private val dao: LogEntryDao, ) : LogRepository { diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/SettingsPreferenceRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/SettingsPreferenceRepository.kt index b4fba3ba06..8d7f330d20 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/SettingsPreferenceRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/SettingsPreferenceRepository.kt @@ -4,14 +4,18 @@ import android.content.Context import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.preferencesDataStore +import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +import javax.inject.Inject +import javax.inject.Singleton -class SettingsPreferenceRepository( - context: Context, +@Singleton +class SettingsPreferenceRepository @Inject constructor( + @ApplicationContext context: Context, private val coroutineScope: CoroutineScope, ) : PreferenceRepository { From 5d727faa6330e6310a7a4cda821c0b972b2c5ba3 Mon Sep 17 00:00:00 2001 From: sds100 Date: Sun, 18 May 2025 16:24:32 +0200 Subject: [PATCH 23/71] #1711 refactor more files --- .../sds100/keymapper}/home/HomeFragment.kt | 27 +++---- .../trigger/AdvancedTriggersBottomSheet.kt | 2 +- .../sds100/keymapper/base/BaseKeyMapperApp.kt | 8 +- .../sds100/keymapper/base/BaseMainActivity.kt | 81 ++++++++++++------- .../github/sds100/keymapper/base/Constants.kt | 8 ++ .../keymapper/base/about/AboutFragment.kt | 2 +- .../base/actions/ActionDataEntityMapper.kt | 4 +- .../base/actions/ActionErrorSnapshot.kt | 4 +- .../keymapper/base/actions/ActionListItem.kt | 2 +- .../base/actions/ActionOptionsBottomSheet.kt | 2 +- .../keymapper/base/actions/ActionUiHelper.kt | 16 ++-- .../keymapper/base/actions/ActionUtils.kt | 1 + .../keymapper/base/actions/ActionsScreen.kt | 16 ++-- .../base/actions/ChooseActionFragment.kt | 11 ++- .../base/actions/ChooseActionScreen.kt | 2 +- .../base/actions/ChooseActionViewModel.kt | 1 + .../base/actions/CreateActionDelegate.kt | 37 +++++---- .../actions/FlashlightActionBottomSheet.kt | 2 +- .../base/actions/GetActionErrorUseCase.kt | 11 ++- .../base/actions/HttpRequestBottomSheet.kt | 2 +- .../base/actions/PerformActionsUseCase.kt | 13 +-- .../base/actions/TestActionUseCase.kt | 7 +- .../actions/keyevent/ChooseKeyCodeFragment.kt | 21 +++-- .../keyevent/ConfigKeyEventActionFragment.kt | 16 ++-- .../PinchPickDisplayCoordinateFragment.kt | 13 ++- .../actions/sound/ChooseSoundFileFragment.kt | 10 +-- .../SwipePickDisplayCoordinateFragment.kt | 11 ++- .../tapscreen/PickCoordinateImageView.kt | 2 +- .../PickDisplayCoordinateFragment.kt | 13 ++- .../uielement/ChooseUiElementScreen.kt | 2 +- .../uielement/InteractUiElementFragment.kt | 4 +- .../uielement/InteractUiElementScreen.kt | 6 +- .../base/backup/RestoreKeyMapsActivity.kt | 2 +- .../constraints/ChooseConstraintFragment.kt | 4 +- .../constraints/ChooseConstraintScreen.kt | 2 +- .../constraints/ConfigConstraintsViewModel.kt | 4 +- .../keymapper/base/constraints/Constraint.kt | 2 +- .../base/constraints/ConstraintListItem.kt | 8 +- .../constraints/ConstraintListItemModel.kt | 2 +- .../base/constraints/ConstraintsScreen.kt | 10 +-- .../constraints/TimeConstraintBottomSheet.kt | 2 +- .../base/floating/FloatingButtonData.kt | 2 +- .../base/groups/GroupConstraintRow.kt | 4 +- .../sds100/keymapper/base/groups/GroupRow.kt | 4 +- .../keymapper/base/home/HomeDestination.kt | 1 + .../base/home/HomeKeyMapListScreen.kt | 4 +- .../keymapper/base/home/ImportDialog.kt | 2 +- .../keymapper/base/home/KeyMapListAppBar.kt | 6 +- .../base/home/SelectionBottomSheet.kt | 4 +- .../base/keymaps/ConfigKeyMapFragment.kt | 4 +- .../base/keymaps/ConfigKeyMapScreen.kt | 2 +- .../base/keymaps/ConfigKeyMapUseCase.kt | 47 +++++------ .../keymaps/CreateKeyMapShortcutActivity.kt | 4 +- .../keymaps/CreateKeyMapShortcutScreen.kt | 4 +- .../base/keymaps/KeyMapListScreen.kt | 4 +- .../base/keymaps/KeyMapOptionsScreen.kt | 2 +- .../keymapper/base/keymaps/ShortcutRow.kt | 4 +- .../keymapper/base/logging/LogFragment.kt | 2 +- .../Android11BugWorkaroundSettingsFragment.kt | 4 +- .../base/settings/BaseSettingsFragment.kt | 2 +- .../base/settings/MainSettingsFragment.kt | 4 +- .../base/settings/ShizukuSettingsFragment.kt | 4 +- .../base/sorting/SortBottomSheetContent.kt | 2 +- .../system/ChooseBluetoothDeviceFragment.kt | 4 +- .../BaseAccessibilityServiceController.kt | 4 +- .../system/apps/ChooseActivityFragment.kt | 4 +- .../base/system/apps/ChooseAppFragment.kt | 4 +- .../base/system/apps/ChooseAppScreen.kt | 4 +- .../system/apps/ChooseAppShortcutFragment.kt | 4 +- .../system/intents/ConfigIntentFragment.kt | 4 +- .../base/tiles/ToggleMappingsTile.kt | 2 +- .../base/trigger/RecordTriggerButtonRow.kt | 4 +- .../base/trigger/RecordTriggerUseCase.kt | 8 +- .../trigger/SetupGuiKeyboardBottomSheet.kt | 2 +- .../trigger/TriggerKeyOptionsBottomSheet.kt | 2 +- .../keymapper/base/trigger/TriggerScreen.kt | 2 +- .../keymapper/base/utils/ui/DialogUtils.kt | 4 +- .../utils/ui/EpoxyRecyclerViewModelHelper.kt | 2 +- .../base/utils/ui/NavigationViewModel.kt | 4 +- .../keymapper/base/utils/ui/PopupViewModel.kt | 2 +- .../utils/ui/SimpleRecyclerViewFragment.kt | 2 +- .../base/utils/ui/compose/ListItemFixError.kt | 2 +- .../base/utils/ui/compose/SimpleListItem.kt | 4 +- .../base/utils/ui/compose/SliderOptionText.kt | 2 +- .../base/utils/ui/compose/UriHandlerUtils.kt | 2 +- .../res/layout/fragment_choose_sound_file.xml | 2 +- .../res/layout/fragment_config_key_event.xml | 2 +- .../res/layout/fragment_pick_coordinate.xml | 4 +- .../fragment_pinch_pick_coordinates.xml | 4 +- .../fragment_swipe_pick_coordinates.xml | 4 +- .../main/res/layout/list_item_log_entry.xml | 2 +- base/src/main/res/navigation/nav_app.xml | 16 ++-- base/src/main/res/navigation/nav_settings.xml | 2 +- ...onfigKeyServiceEventActionViewModelTest.kt | 2 +- 94 files changed, 321 insertions(+), 298 deletions(-) rename {base/src/main/java/io/github/sds100/keymapper/base => app/src/main/java/io/github/sds100/keymapper}/home/HomeFragment.kt (81%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/Constants.kt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt similarity index 81% rename from base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt rename to app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt index 57eadf8e30..83772a50b7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.home +package io.github.sds100.keymapper.home import android.os.Bundle import android.view.LayoutInflater @@ -16,27 +16,21 @@ import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController -import io.github.sds100.keymapper.ActivityViewModel -import io.github.sds100.keymapper.BaseMainActivity -import io.github.sds100.keymapper.NavAppDirections -import io.github.sds100.keymapper.ServiceLocator +import io.github.sds100.keymapper.base.ActivityViewModel import io.github.sds100.keymapper.base.BaseMainActivity +import io.github.sds100.keymapper.base.NavAppDirections +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.home.BaseHomeViewModel +import io.github.sds100.keymapper.base.home.HomeDestination +import io.github.sds100.keymapper.base.home.HomeScreen import io.github.sds100.keymapper.base.utils.ui.setupNavigation import io.github.sds100.keymapper.base.utils.ui.showPopups class HomeFragment : Fragment() { - private val homeViewModel: BaseHomeViewModel by activityViewModels { - Inject.homeViewModel(requireContext()) - } - - val activityViewModel: ActivityViewModel by activityViewModels { - ActivityViewModel.Factory(ServiceLocator.resourceProvider(requireContext())) - } + private val homeViewModel: HomeViewModel by activityViewModels() + private val activityViewModel: ActivityViewModel by activityViewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -95,6 +89,7 @@ class HomeFragment : Fragment() { homeViewModel.showPopups(this, view) homeViewModel.keyMapListViewModel.showPopups(this, view) - homeViewModel.listFloatingLayoutsViewModel.showPopups(this, view) + // TODO +// homeViewModel.listFloatingLayoutsViewModel.showPopups(this, view) } } diff --git a/base/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt b/base/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt index 13b42f8508..cc85192142 100644 --- a/base/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt +++ b/base/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseKeyMapperApp.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseKeyMapperApp.kt index 1a4a80c4ce..62d85ba466 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseKeyMapperApp.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseKeyMapperApp.kt @@ -5,6 +5,7 @@ import android.content.Intent import android.os.Build import android.os.UserManager import android.util.Log +import android.widget.Toast import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.getSystemService import androidx.lifecycle.Lifecycle @@ -34,7 +35,6 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking -import splitties.toast.toast import timber.log.Timber import java.util.Calendar import javax.inject.Inject @@ -154,7 +154,7 @@ abstract class BaseKeyMapperApp : MultiDexApplication() { notificationController.init() - autoSwitchImeController .init() + autoSwitchImeController.init() processLifecycleOwner.lifecycle.addObserver(object : LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) @@ -179,8 +179,8 @@ abstract class BaseKeyMapperApp : MultiDexApplication() { } } - notificationController.showToast.onEach { - toast(it) + notificationController.showToast.onEach { toast -> + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show() }.launchIn(appCoroutineScope) autoGrantPermissionController.start() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt index 38f30df23e..e8b81acdfb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt @@ -26,55 +26,71 @@ import androidx.navigation.findNavController import com.anggrayudi.storage.extension.openInputStream import com.anggrayudi.storage.extension.openOutputStream import com.anggrayudi.storage.extension.toDocumentFile -import io.github.sds100.keymapper.Constants.PACKAGE_NAME -import io.github.sds100.keymapper.compose.ComposeColors -import io.github.sds100.keymapper.databinding.ActivityMainBinding -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapterImpl -import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.system.inputevents.MyMotionEvent -import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter +import io.github.sds100.keymapper.base.compose.ComposeColors +import io.github.sds100.keymapper.base.databinding.ActivityMainBinding +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapterImpl import io.github.sds100.keymapper.base.system.permissions.RequestPermissionDelegate import io.github.sds100.keymapper.base.trigger.RecordTriggerController +import io.github.sds100.keymapper.base.utils.ui.ResourceProviderImpl import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.common.BuildConfigProvider +import io.github.sds100.keymapper.system.files.FileUtils +import io.github.sds100.keymapper.system.inputevents.MyMotionEvent +import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapterImpl +import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import timber.log.Timber +import javax.inject.Inject abstract class BaseMainActivity : AppCompatActivity() { companion object { const val ACTION_SHOW_ACCESSIBILITY_SETTINGS_NOT_FOUND_DIALOG = - "$PACKAGE_NAME.ACTION_SHOW_ACCESSIBILITY_SETTINGS_NOT_FOUND_DIALOG" + "${BuildConfig.LIBRARY_PACKAGE_NAME}.ACTION_SHOW_ACCESSIBILITY_SETTINGS_NOT_FOUND_DIALOG" const val ACTION_USE_FLOATING_BUTTONS = - "$PACKAGE_NAME.ACTION_USE_FLOATING_BUTTONS" + "${BuildConfig.LIBRARY_PACKAGE_NAME}.ACTION_USE_FLOATING_BUTTONS" - const val ACTION_SAVE_FILE = "$PACKAGE_NAME.ACTION_SAVE_FILE" - const val EXTRA_FILE_URI = "$PACKAGE_NAME.EXTRA_FILE_URI" + const val ACTION_SAVE_FILE = "${BuildConfig.LIBRARY_PACKAGE_NAME}.ACTION_SAVE_FILE" + const val EXTRA_FILE_URI = "${BuildConfig.LIBRARY_PACKAGE_NAME}.EXTRA_FILE_URI" } - private val permissionAdapter: AndroidPermissionAdapter by lazy { - ServiceLocator.permissionAdapter(this) - } + @Inject + lateinit var permissionAdapter: AndroidPermissionAdapter - val serviceAdapter: AccessibilityServiceAdapterImpl by lazy { - ServiceLocator.accessibilityServiceAdapter(this) - } + @Inject + lateinit var serviceAdapter: AccessibilityServiceAdapterImpl - val viewModel by viewModels { - ActivityViewModel.Factory(ServiceLocator.resourceProvider(this)) - } + @Inject + lateinit var resourceProvider: ResourceProviderImpl + + @Inject + lateinit var onboardingUseCase: OnboardingUseCase + + @Inject + lateinit var recordTriggerController: RecordTriggerController + + @Inject + lateinit var notificationReceiverAdapter: NotificationReceiverAdapterImpl + + @Inject + lateinit var shizukuAdapter: ShizukuAdapter + + @Inject + lateinit var buildConfigProvider: BuildConfigProvider + + private lateinit var requestPermissionDelegate: RequestPermissionDelegate private val currentNightMode: Int get() = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK - private lateinit var requestPermissionDelegate: RequestPermissionDelegate - private val recordTriggerController: RecordTriggerController by lazy { - (applicationContext as KeyMapperApp).recordTriggerController - } + val viewModel by viewModels() private var originalFileUri: Uri? = null @@ -120,7 +136,7 @@ abstract class BaseMainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) if (viewModel.previousNightMode != currentNightMode) { - ServiceLocator.resourceProvider(this).onThemeChange() + resourceProvider.onThemeChange() } val binding = @@ -128,9 +144,16 @@ abstract class BaseMainActivity : AppCompatActivity() { viewModel.showPopups(this, binding.coordinatorLayout) - requestPermissionDelegate = RequestPermissionDelegate(this, showDialogs = true) + requestPermissionDelegate = RequestPermissionDelegate( + this, + showDialogs = true, + permissionAdapter, + notificationReceiverAdapter = notificationReceiverAdapter, + buildConfigProvider = buildConfigProvider, + shizukuAdapter = shizukuAdapter, + ) - ServiceLocator.permissionAdapter(this@BaseMainActivity).request + permissionAdapter.request .flowWithLifecycle(lifecycle, Lifecycle.State.STARTED) .onEach { permission -> requestPermissionDelegate.requestPermission( @@ -170,7 +193,7 @@ abstract class BaseMainActivity : AppCompatActivity() { override fun onResume() { super.onResume() - Timber.i("MainActivity: onResume. Version: ${Constants.VERSION}") + Timber.i("MainActivity: onResume. Version: ${buildConfigProvider.version} ${buildConfigProvider.versionCode}") // This must be after onResume to ensure all the fragment lifecycles' have also // resumed which are observing these events. @@ -181,7 +204,7 @@ abstract class BaseMainActivity : AppCompatActivity() { } override fun onDestroy() { - UseCases.onboarding(this).shownAppIntro = true + onboardingUseCase.shownAppIntro = true viewModel.previousNightMode = currentNightMode unregisterReceiver(broadcastReceiver) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/Constants.kt b/base/src/main/java/io/github/sds100/keymapper/base/Constants.kt new file mode 100644 index 0000000000..0ef889fecd --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/Constants.kt @@ -0,0 +1,8 @@ +package io.github.sds100.keymapper.base + +import android.os.Build + +object Constants { + const val MIN_API: Int = Build.VERSION_CODES.LOLLIPOP + const val MAX_API: Int = 1000 +} \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt index d26bdf3c94..5e3bd07b0e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt @@ -12,7 +12,7 @@ import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.databinding.FragmentAboutBinding +import io.github.sds100.keymapper.base.databinding.FragmentAboutBinding import javax.inject.Inject class AboutFragment : Fragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt index 44b6469c92..f63dd59691 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.actions import androidx.core.net.toUri -import io.github.sds100.keymapper.base.actions.uielement.NodeInteractionType +import io.github.sds100.keymapper.common.utils.NodeInteractionType import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success @@ -20,7 +20,7 @@ import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.system.volume.DndMode import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.base.utils.getKey +import io.github.sds100.keymapper.common.utils.getKey import io.github.sds100.keymapper.common.utils.PinchScreenType import kotlinx.serialization.json.Json import io.github.sds100.keymapper.common.utils.hasFlag diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt index aae4bf5eef..9a16619172 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt @@ -1,6 +1,7 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.base.actions.sound.SoundsManager +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess @@ -25,13 +26,14 @@ class LazyActionErrorSnapshot( private val soundsManager: SoundsManager, shizukuAdapter: ShizukuAdapter, private val ringtoneAdapter: RingtoneAdapter, + buildConfigProvider: BuildConfigProvider ) : ActionErrorSnapshot, IsActionSupportedUseCase by IsActionSupportedUseCaseImpl( systemFeatureAdapter, cameraAdapter, permissionAdapter, ) { - private val keyMapperImeHelper = KeyMapperImeHelper(inputMethodAdapter) + private val keyMapperImeHelper = KeyMapperImeHelper(inputMethodAdapter, buildConfigProvider.packageName) private val isCompatibleImeEnabled by lazy { keyMapperImeHelper.isCompatibleImeEnabled() } private val isCompatibleImeChosen by lazy { keyMapperImeHelper.isCompatibleImeChosen() } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt index a6554d2cb1..3faaa094cf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt @@ -44,7 +44,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.LinkType import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.DragDropState diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt index b09292ae13..fac1d4ae7c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionOptionsBottomSheet.kt @@ -38,7 +38,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.ui.SliderMaximums import io.github.sds100.keymapper.base.utils.ui.SliderMinimums import io.github.sds100.keymapper.base.utils.ui.SliderStepSizes diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt index d44352ca10..b9a0b61f5e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUiHelper.kt @@ -6,7 +6,10 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Android import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.keymaps.KeyMap +import io.github.sds100.keymapper.base.utils.DndModeStrings import io.github.sds100.keymapper.base.utils.InputEventStrings +import io.github.sds100.keymapper.base.utils.RingerModeStrings +import io.github.sds100.keymapper.base.utils.VolumeStreamStrings import io.github.sds100.keymapper.base.utils.ui.IconInfo import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.TintType @@ -19,9 +22,6 @@ import io.github.sds100.keymapper.common.utils.toPercentString import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.intents.IntentTarget -import io.github.sds100.keymapper.system.volume.DndModeUtils -import io.github.sds100.keymapper.system.volume.RingerModeUtils -import io.github.sds100.keymapper.system.volume.VolumeStreamUtils class ActionUiHelper( displayActionUseCase: DisplayActionUseCase, @@ -90,7 +90,7 @@ class ActionUiHelper( } is ActionData.DoNotDisturb.Enable -> { - val dndModeString = getString(DndModeUtils.getLabel(action.dndMode)) + val dndModeString = getString(DndModeStrings.getLabel(action.dndMode)) getString( R.string.action_enable_dnd_mode_formatted, dndModeString, @@ -98,7 +98,7 @@ class ActionUiHelper( } is ActionData.DoNotDisturb.Toggle -> { - val dndModeString = getString(DndModeUtils.getLabel(action.dndMode)) + val dndModeString = getString(DndModeStrings.getLabel(action.dndMode)) getString( R.string.action_toggle_dnd_mode_formatted, dndModeString, @@ -108,7 +108,7 @@ class ActionUiHelper( ActionData.DoNotDisturb.Disable -> getString(R.string.action_disable_dnd_mode) is ActionData.Volume.SetRingerMode -> { - val ringerModeString = getString(RingerModeUtils.getLabel(action.ringerMode)) + val ringerModeString = getString(RingerModeStrings.getLabel(action.ringerMode)) getString(R.string.action_change_ringer_mode_formatted, ringerModeString) } @@ -120,7 +120,7 @@ class ActionUiHelper( when (action) { is ActionData.Volume.Stream -> { val streamString = getString( - VolumeStreamUtils.getLabel(action.volumeStream), + VolumeStreamStrings.getLabel(action.volumeStream), ) if (action.showVolumeUi) { @@ -190,7 +190,7 @@ class ActionUiHelper( is ActionData.Volume.SetRingerMode -> { val ringerModeString = - getString(RingerModeUtils.getLabel(action.ringerMode)) + getString(RingerModeStrings.getLabel(action.ringerMode)) string = getString( R.string.action_change_ringer_mode_formatted, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt index 6a72bf3719..4a53aefd41 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt @@ -71,6 +71,7 @@ import androidx.compose.material.icons.rounded.ContentPaste import androidx.compose.material.icons.rounded.Wifi import androidx.compose.material.icons.rounded.WifiOff import androidx.compose.ui.graphics.vector.ImageVector +import io.github.sds100.keymapper.base.Constants import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.base.utils.ui.compose.icons.HomeIotDevice diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt index 2614355722..d3c8e2636a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt @@ -38,7 +38,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow import io.github.sds100.keymapper.system.camera.CameraLens @@ -125,7 +125,7 @@ private fun ActionsScreen( State.Loading -> Loading() is State.Data -> Surface(modifier = modifier) { Column { - when (state.data) { + when (val data = state.data) { is ConfigActionsState.Empty -> { Column( modifier = Modifier.weight(1f), @@ -140,7 +140,7 @@ private fun ActionsScreen( textAlign = TextAlign.Center, ) - if (state.data.shortcuts.isNotEmpty()) { + if (data.shortcuts.isNotEmpty()) { Text( text = stringResource(R.string.recently_used_actions), style = MaterialTheme.typography.titleSmall, @@ -152,7 +152,7 @@ private fun ActionsScreen( modifier = Modifier .padding(horizontal = 32.dp) .fillMaxWidth(), - shortcuts = state.data.shortcuts, + shortcuts = data.shortcuts, onClick = onClickShortcut, ) } @@ -162,7 +162,7 @@ private fun ActionsScreen( is ConfigActionsState.Loaded -> { Spacer(Modifier.height(8.dp)) - if (state.data.actions.isNotEmpty()) { + if (data.actions.isNotEmpty()) { Spacer(Modifier.height(8.dp)) Text( @@ -176,9 +176,9 @@ private fun ActionsScreen( ActionList( modifier = Modifier.weight(1f), - actionList = state.data.actions, - shortcuts = state.data.shortcuts, - isReorderingEnabled = state.data.isReorderingEnabled, + actionList = data.actions, + shortcuts = data.shortcuts, + isReorderingEnabled = data.isReorderingEnabled, onRemoveClick = { actionToDelete = it showDeleteDialog = true diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt index 8bb1f62608..24ebd7ea30 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt @@ -22,9 +22,9 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.withStateAtLeast import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.utils.Inject +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.base.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.setupNavigation import io.github.sds100.keymapper.base.utils.ui.showPopups @@ -33,6 +33,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json +@AndroidEntryPoint class ChooseActionFragment : Fragment() { companion object { @@ -41,9 +42,7 @@ class ChooseActionFragment : Fragment() { private val args: ChooseActionFragmentArgs by navArgs() - private val viewModel by viewModels { - Inject.chooseActionViewModel(requireContext()) - } + private val viewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt index 30e3709b62..9f2578cf92 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt @@ -39,7 +39,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SearchAppBarActions diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index 20843fbfa0..5aba3cce3d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -29,6 +29,7 @@ import kotlinx.coroutines.flow.shareIn import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import dagger.hilt.android.lifecycle.HiltViewModel +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import javax.inject.Inject @HiltViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index fcd59647df..5930539bab 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -8,17 +8,10 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickCoordinateResult import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickCoordinateResult import io.github.sds100.keymapper.base.actions.tapscreen.PickCoordinateResult -import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.common.utils.Orientation -import io.github.sds100.keymapper.base.ui.intents.ConfigIntentResult -import io.github.sds100.keymapper.system.network.HttpMethod -import io.github.sds100.keymapper.system.volume.DndMode -import io.github.sds100.keymapper.system.volume.DndModeUtils -import io.github.sds100.keymapper.system.volume.RingerMode -import io.github.sds100.keymapper.system.volume.RingerModeUtils -import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.system.volume.VolumeStreamUtils +import io.github.sds100.keymapper.base.system.intents.ConfigIntentResult +import io.github.sds100.keymapper.base.utils.DndModeStrings +import io.github.sds100.keymapper.base.utils.RingerModeStrings +import io.github.sds100.keymapper.base.utils.VolumeStreamStrings import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.NavDestination import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel @@ -27,6 +20,12 @@ import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.common.utils.Orientation +import io.github.sds100.keymapper.system.camera.CameraLens +import io.github.sds100.keymapper.system.network.HttpMethod +import io.github.sds100.keymapper.system.volume.DndMode +import io.github.sds100.keymapper.system.volume.RingerMode +import io.github.sds100.keymapper.system.volume.VolumeStream import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.collectLatest @@ -295,8 +294,8 @@ class CreateActionDelegate( val showVolumeUi = chosenFlags.contains(showVolumeUiId) - val items = VolumeStream.values() - .map { it to getString(VolumeStreamUtils.getLabel(it)) } + val items = VolumeStream.entries + .map { it to getString(VolumeStreamStrings.getLabel(it)) } val stream = showPopup("pick_volume_stream", PopupUi.SingleChoice(items)) ?: return null @@ -315,8 +314,8 @@ class CreateActionDelegate( } ActionId.CHANGE_RINGER_MODE -> { - val items = RingerMode.values() - .map { it to getString(RingerModeUtils.getLabel(it)) } + val items = RingerMode.entries + .map { it to getString(RingerModeStrings.getLabel(it)) } val ringerMode = showPopup("pick_ringer_mode", PopupUi.SingleChoice(items)) @@ -329,8 +328,8 @@ class CreateActionDelegate( ActionId.TOGGLE_DND_MODE, ActionId.ENABLE_DND_MODE, -> { - val items = DndMode.values() - .map { it to getString(DndModeUtils.getLabel(it)) } + val items = DndMode.entries + .map { it to getString(DndModeStrings.getLabel(it)) } val dndMode = showPopup("pick_dnd_mode", PopupUi.SingleChoice(items)) @@ -449,8 +448,8 @@ class CreateActionDelegate( -> { val items = useCase.getFlashlightLenses().map {lens -> when (lens) { - CameraLens.FRONT -> R.string.lens_front - CameraLens.BACK -> R.string.lens_back + CameraLens.FRONT -> lens to getString(R.string.lens_front) + CameraLens.BACK -> lens to getString(R.string.lens_back) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt index 28999c6bd3..ad17e8375e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt @@ -47,7 +47,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.system.camera.CameraFlashInfo import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperSliderThumb diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt index 4d6c199c06..d165b5025b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/GetActionErrorUseCase.kt @@ -1,21 +1,22 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.base.actions.sound.SoundsManager -import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter -import javax.inject.Inject -import javax.inject.Singleton +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge +import javax.inject.Inject +import javax.inject.Singleton @Singleton class GetActionErrorUseCaseImpl @Inject constructor( @@ -26,7 +27,8 @@ class GetActionErrorUseCaseImpl @Inject constructor( private val cameraAdapter: CameraAdapter, private val soundsManager: SoundsManager, private val shizukuAdapter: ShizukuAdapter, - private val ringtoneAdapter: RingtoneAdapter + private val ringtoneAdapter: RingtoneAdapter, + private val buildConfigProvider: BuildConfigProvider, ) : GetActionErrorUseCase { private val invalidateActionErrors = merge( @@ -57,6 +59,7 @@ class GetActionErrorUseCaseImpl @Inject constructor( soundsManager, shizukuAdapter, ringtoneAdapter, + buildConfigProvider, ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt index 9033cf4a9e..ded9684357 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt @@ -38,7 +38,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperDropdownMenu import kotlinx.coroutines.flow.update diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt index 5ca66df8a0..fc40165f3c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt @@ -50,11 +50,10 @@ import io.github.sds100.keymapper.system.url.OpenUrlAdapter import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.VolumeStream import io.github.sds100.keymapper.common.utils.InputEventType -import io.github.sds100.keymapper.base.utils.ServiceEvent import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.base.utils.getWordBoundaries +import io.github.sds100.keymapper.common.utils.getWordBoundaries import io.github.sds100.keymapper.common.utils.ifIsData import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope @@ -68,9 +67,10 @@ import kotlinx.coroutines.flow.stateIn import io.github.sds100.keymapper.common.utils.withFlag import timber.log.Timber import io.github.sds100.keymapper.system.Shell -import io.github.sds100.keymapper.system.audio.AudioAdapter import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjectorImpl +import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapterImpl +import io.github.sds100.keymapper.system.notifications.NotificationServiceEvent import io.github.sds100.keymapper.system.shizuku.ShizukuInputEventInjector import io.github.sds100.keymapper.system.volume.VolumeAdapter import javax.inject.Inject @@ -107,7 +107,8 @@ class PerformActionsUseCaseImpl @Inject constructor( private val soundsManager: SoundsManager, private val permissionAdapter: PermissionAdapter, private val notificationReceiverAdapter: NotificationReceiverAdapterImpl, - private val ringtoneAdapter: RingtoneAdapter + private val ringtoneAdapter: RingtoneAdapter, + private val settingsRepository: PreferenceRepository ) : PerformActionsUseCase { private val openMenuHelper by lazy { @@ -808,11 +809,11 @@ class PerformActionsUseCaseImpl @Inject constructor( } ActionData.DismissAllNotifications -> { - result = notificationReceiverAdapter.send(ServiceEvent.DismissAllNotifications) + result = notificationReceiverAdapter.send(NotificationServiceEvent.DismissAllNotifications) } ActionData.DismissLastNotification -> { - result = notificationReceiverAdapter.send(ServiceEvent.DismissLastNotification) + result = notificationReceiverAdapter.send(NotificationServiceEvent.DismissLastNotification) } ActionData.AnswerCall -> { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt index 907d592882..fec2dc40a7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt @@ -2,15 +2,12 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter -import io.github.sds100.keymapper.base.utils.ServiceEvent - - +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent class TestActionUseCaseImpl( private val serviceAdapter: AccessibilityServiceAdapter, ) : TestActionUseCase { - override suspend fun invoke(action: ActionData): Result<*> = - serviceAdapter.send(ServiceEvent.TestAction(action)) + override suspend fun invoke(action: ActionData): Result<*> = serviceAdapter.send(TestActionEvent(action)) } interface TestActionUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt index b91f15d002..1b76ea794c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt @@ -4,30 +4,29 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView -import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding -import io.github.sds100.keymapper.simple -import io.github.sds100.keymapper.base.utils.Inject -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.base.simple import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest +@AndroidEntryPoint class ChooseKeyCodeFragment : SimpleRecyclerViewFragment() { companion object { const val EXTRA_KEYCODE = "extra_keycode" const val SEARCH_STATE_KEY = "key_keycode_search_state" } - override var searchStateKey: String? = - io.github.sds100.keymapper.mapping.actions.keyevent.ChooseKeyCodeFragment.Companion.SEARCH_STATE_KEY + override var searchStateKey: String? = SEARCH_STATE_KEY private val args: ChooseKeyCodeFragmentArgs by navArgs() - private val viewModel: io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeViewModel by viewModels { - Inject.chooseKeyCodeViewModel() - } + + private val viewModel: ChooseKeyCodeViewModel by viewModels() override val listItems: Flow>> get() = viewModel.state @@ -39,7 +38,7 @@ class ChooseKeyCodeFragment : SimpleRecyclerViewFragment() { viewLifecycleOwner.launchRepeatOnLifecycle(Lifecycle.State.RESUMED) { viewModel.returnResult.collectLatest { - returnResult(io.github.sds100.keymapper.mapping.actions.keyevent.ChooseKeyCodeFragment.Companion.EXTRA_KEYCODE to it) + returnResult(EXTRA_KEYCODE to it) } } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt index 95740f49aa..8ad4f680e6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt @@ -12,21 +12,21 @@ import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.setFragmentResult -import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.databinding.FragmentConfigKeyEventBinding -import io.github.sds100.keymapper.common.utils.putJsonSerializable -import io.github.sds100.keymapper.base.utils.Inject -import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.base.databinding.FragmentConfigKeyEventBinding +import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.base.utils.ui.configuredCheckBox +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.common.utils.putJsonSerializable import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json +@AndroidEntryPoint class ConfigKeyEventActionFragment : Fragment() { companion object { const val EXTRA_RESULT = "extra_result" @@ -36,9 +36,7 @@ class ConfigKeyEventActionFragment : Fragment() { private val requestKey: String by lazy { args.requestKey } - private val viewModel: ConfigKeyEventActionViewModel by viewModels { - Inject.configKeyEventViewModel(requireContext()) - } + private val viewModel: ConfigKeyEventActionViewModel () /** * Scoped to the lifecycle of the fragment's view (between onCreateView and onDestroyView) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt index ac6c9c175e..9184887b4a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt @@ -21,16 +21,17 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.databinding.FragmentPinchPickCoordinatesBinding -import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.base.databinding.FragmentPinchPickCoordinatesBinding import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.str import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.str +import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json +@AndroidEntryPoint class PinchPickDisplayCoordinateFragment : Fragment() { companion object { const val EXTRA_RESULT = "extra_result" @@ -40,9 +41,7 @@ class PinchPickDisplayCoordinateFragment : Fragment() { private val requestKey: String by lazy { args.requestKey } private var pinchTypesDisplayValues = mutableListOf() - private val viewModel: PinchPickDisplayCoordinateViewModel by viewModels { - Inject.pinchCoordinateActionTypeViewModel(requireContext()) - } + private val viewModel: PinchPickDisplayCoordinateViewModel by viewModels() private val screenshotLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { uri -> diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt index 860746cb12..15089e2178 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt @@ -21,8 +21,9 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import io.github.sds100.keymapper.databinding.FragmentChooseSoundFileBinding -import io.github.sds100.keymapper.simple +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.base.databinding.FragmentChooseSoundFileBinding +import io.github.sds100.keymapper.base.simple import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle @@ -32,6 +33,7 @@ import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.update import kotlinx.serialization.json.Json +@AndroidEntryPoint class ChooseSoundFileFragment : Fragment() { companion object { const val EXTRA_RESULT = "extra_sound_file_result" @@ -40,9 +42,7 @@ class ChooseSoundFileFragment : Fragment() { private val args: ChooseSoundFileFragmentArgs by navArgs() private val requestKey: String by lazy { args.requestKey } - private val viewModel: ChooseSoundFileViewModel by viewModels { - Inject.soundFileActionTypeViewModel(requireContext()) - } + private val viewModel: ChooseSoundFileViewModel by viewModels() private val chooseSoundFileLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt index ed1708973a..6b3117cc71 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt @@ -20,14 +20,15 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import io.github.sds100.keymapper.databinding.FragmentSwipePickCoordinatesBinding -import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.base.utils.Inject +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.base.databinding.FragmentSwipePickCoordinatesBinding import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json +@AndroidEntryPoint class SwipePickDisplayCoordinateFragment : Fragment() { companion object { const val EXTRA_RESULT = "extra_result" @@ -36,9 +37,7 @@ class SwipePickDisplayCoordinateFragment : Fragment() { private val args: SwipePickDisplayCoordinateFragmentArgs by navArgs() private val requestKey: String by lazy { args.requestKey } - private val viewModel: SwipePickDisplayCoordinateViewModel by viewModels { - Inject.swipeCoordinateActionTypeViewModel(requireContext()) - } + private val viewModel: SwipePickDisplayCoordinateViewModel by viewModels() private val screenshotLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { uri -> diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt index dce2f86ad9..4fa9f0ba0f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt @@ -8,7 +8,7 @@ import android.util.AttributeSet import android.view.MotionEvent import androidx.appcompat.widget.AppCompatImageView import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.color +import io.github.sds100.keymapper.base.utils.ui.color import kotlinx.coroutines.flow.MutableStateFlow import kotlin.math.roundToInt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt index 2a4cd77ab0..402cab18d7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt @@ -20,16 +20,15 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import io.github.sds100.keymapper.databinding.FragmentPickCoordinateBinding -import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.base.utils.Inject +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.base.databinding.FragmentPickCoordinateBinding import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json - - +@AndroidEntryPoint class PickDisplayCoordinateFragment : Fragment() { companion object { const val EXTRA_RESULT = "extra_result" @@ -38,9 +37,7 @@ class PickDisplayCoordinateFragment : Fragment() { private val args: PickDisplayCoordinateFragmentArgs by navArgs() private val requestKey: String by lazy { args.requestKey } - private val viewModel: PickDisplayCoordinateViewModel by viewModels { - Inject.tapCoordinateActionTypeViewModel(requireContext()) - } + private val viewModel: PickDisplayCoordinateViewModel by viewModels() private val screenshotLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { uri -> diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt index f075aed5ba..86cbb3c217 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt @@ -50,7 +50,7 @@ import androidx.compose.ui.unit.dp import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.compose.CheckBoxText import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperDropdownMenu diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt index 70a087d6c5..4b94fdb4db 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt @@ -22,8 +22,8 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.withStateAtLeast import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.databinding.FragmentComposeBinding +import io.github.sds100.keymapper.base.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.showPopups diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt index dbc7100f77..f1f50d44fc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt @@ -70,11 +70,11 @@ import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.compose.LocalCustomColorsPalette +import io.github.sds100.keymapper.base.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.base.system.apps.ChooseAppScreen import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperDropdownMenu import io.github.sds100.keymapper.base.utils.ui.compose.OptionsHeaderRow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt index d0558370db..c01d319543 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt @@ -19,7 +19,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.MainActivity import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.ui.compose.CustomDialogContent class RestoreKeyMapsActivity : ComponentActivity() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt index cca6c5dc27..15f964576e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt @@ -22,8 +22,8 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.withStateAtLeast import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.databinding.FragmentComposeBinding +import io.github.sds100.keymapper.base.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.setupNavigation diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt index dc0517b55a..8269983aff 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt @@ -45,7 +45,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemFixedHeight diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index 49abb85e93..1d03f6620c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -163,7 +163,7 @@ class ConfigConstraintsViewModel @Inject constructor( val icon: ComposeIconInfo = uiHelper.getIcon(constraint) val error: Error? = errorSnapshot.getError(constraint) - io.github.sds100.keymapper.mapping.constraints.ConstraintListItemModel( + io.github.sds100.keymapper.base.constraints.ConstraintListItemModel( id = constraint.uid, icon = icon, constraintModeLink = if (state.constraints.size > 1 && index < state.constraints.size - 1) { @@ -191,7 +191,7 @@ sealed class ConfigConstraintsState { ) : ConfigConstraintsState() data class Loaded( - val constraintList: List, + val constraintList: List, val selectedMode: ConstraintMode, val shortcuts: Set> = emptySet(), ) : ConfigConstraintsState() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt index 66d31fcd24..fda2d3dcbf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.common.utils.Orientation -import io.github.sds100.keymapper.base.utils.getKey +import io.github.sds100.keymapper.common.utils.getKey import kotlinx.serialization.Serializable import java.time.LocalTime import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt index c46321bcaa..614c092ce9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt @@ -35,13 +35,13 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @Composable fun ConstraintListItem( modifier: Modifier = Modifier, - model: io.github.sds100.keymapper.mapping.constraints.ConstraintListItemModel, + model: io.github.sds100.keymapper.base.constraints.ConstraintListItemModel, onRemoveClick: () -> Unit = {}, onFixClick: () -> Unit = {}, ) { @@ -178,7 +178,7 @@ private fun TextColumn( @Composable private fun VectorPreview() { ConstraintListItem( - model = io.github.sds100.keymapper.mapping.constraints.ConstraintListItemModel( + model = io.github.sds100.keymapper.base.constraints.ConstraintListItemModel( id = "id", icon = ComposeIconInfo.Vector(Icons.Outlined.ClearAll), constraintModeLink = ConstraintMode.AND, @@ -195,7 +195,7 @@ private fun DrawablePreview() { val drawable = LocalContext.current.drawable(R.mipmap.ic_launcher_round) ConstraintListItem( - model = io.github.sds100.keymapper.mapping.constraints.ConstraintListItemModel( + model = io.github.sds100.keymapper.base.constraints.ConstraintListItemModel( id = "id", text = "Dismiss most recent notification", error = null, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt index f8acd7b6dd..ac7876fb24 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt @@ -8,7 +8,7 @@ data class ConstraintListItemModel( /** * Null if no link should be shown between the items. */ - val constraintModeLink: io.github.sds100.keymapper.mapping.constraints.ConstraintMode?, + val constraintModeLink: io.github.sds100.keymapper.base.constraints.ConstraintMode?, val text: String, val error: String? = null, val isErrorFixable: Boolean = true, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt index eb9e0ef0dc..656703e3ea 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt @@ -37,12 +37,12 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText @@ -245,7 +245,7 @@ private fun Loading(modifier: Modifier = Modifier) { @Composable private fun ConstraintList( modifier: Modifier = Modifier, - constraintList: List, + constraintList: List, shortcuts: Set>, onRemoveClick: (String) -> Unit, onFixErrorClick: (String) -> Unit, @@ -325,7 +325,7 @@ private fun LoadedPreview() { state = State.Data( ConfigConstraintsState.Loaded( constraintList = listOf( - io.github.sds100.keymapper.mapping.constraints.ConstraintListItemModel( + io.github.sds100.keymapper.base.constraints.ConstraintListItemModel( id = "1", icon = ComposeIconInfo.Vector(Icons.Rounded.FlashlightOn), constraintModeLink = ConstraintMode.AND, @@ -333,7 +333,7 @@ private fun LoadedPreview() { error = "Flashlight not found", isErrorFixable = true, ), - io.github.sds100.keymapper.mapping.constraints.ConstraintListItemModel( + io.github.sds100.keymapper.base.constraints.ConstraintListItemModel( id = "2", icon = ComposeIconInfo.Drawable(ctx.drawable(R.mipmap.ic_launcher_round)), constraintModeLink = null, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt index 3929148bab..5d04b60952 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt @@ -42,7 +42,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.TimeUtils import io.github.sds100.keymapper.base.utils.ui.compose.OptionsHeaderRow import kotlinx.coroutines.launch diff --git a/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt index 4df51a3bf0..fcac028138 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt @@ -5,7 +5,7 @@ import io.github.sds100.keymapper.data.entities.FloatingButtonEntity import io.github.sds100.keymapper.floating.FloatingButtonData.Location import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.common.utils.SizeKM -import io.github.sds100.keymapper.base.utils.getKey +import io.github.sds100.keymapper.common.utils.getKey import kotlinx.serialization.Serializable import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt index 788b745577..642e6df248 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt @@ -40,9 +40,9 @@ import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.constraints.ConstraintMode -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt index f79455da59..60b1db21dd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt @@ -43,8 +43,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeDestination.kt index 8759428317..35c0f3e1ea 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeDestination.kt @@ -1,5 +1,6 @@ package io.github.sds100.keymapper.base.home +// TODO Move this out of FOSS sealed class HomeDestination(val route: String) { data object KeyMaps : HomeDestination("key_maps") data object FloatingButtons : HomeDestination("floating_buttons") diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt index 4205a23f90..869647fc48 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt @@ -57,7 +57,7 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.backup.ImportExportState import io.github.sds100.keymapper.base.backup.RestoreType import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.groups.GroupListItemModel import io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState @@ -71,7 +71,7 @@ import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel import io.github.sds100.keymapper.base.trigger.TriggerError import io.github.sds100.keymapper.base.utils.ShareUtils import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.CollapsableFloatingActionButton import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/ImportDialog.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/ImportDialog.kt index 56deadebb6..dfcb7ed9fb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/ImportDialog.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/ImportDialog.kt @@ -10,7 +10,7 @@ import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme @Composable fun ImportDialog( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt index 6d48744cc4..6828ee910e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt @@ -92,8 +92,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.compose.LocalCustomColorsPalette +import io.github.sds100.keymapper.base.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.groups.DeleteGroupDialog import io.github.sds100.keymapper.base.groups.GroupBreadcrumbRow @@ -101,7 +101,7 @@ import io.github.sds100.keymapper.base.groups.GroupConstraintRow import io.github.sds100.keymapper.base.groups.GroupListItemModel import io.github.sds100.keymapper.base.groups.GroupRow import io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt index d705a1c74b..5abc331f95 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt @@ -39,11 +39,11 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.groups.GroupBreadcrumbRow import io.github.sds100.keymapper.base.groups.GroupListItemModel import io.github.sds100.keymapper.base.groups.GroupRow -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt index 98729cd952..148579b5aa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt @@ -19,8 +19,8 @@ import androidx.navigation.findNavController import androidx.navigation.fragment.navArgs import androidx.navigation.navGraphViewModels import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.databinding.FragmentComposeBinding +import io.github.sds100.keymapper.base.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.ui.setupNavigation import io.github.sds100.keymapper.base.utils.ui.showPopups diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt index ff97f42c08..1fc37b669d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt @@ -57,7 +57,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.canopas.lib.showcase.IntroShowcase import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionsScreen -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.constraints.ConstraintsScreen import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.base.trigger.TriggerScreen diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt index 2425f5d7c7..8369529835 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt @@ -1,40 +1,41 @@ package io.github.sds100.keymapper.base.keymaps import android.database.sqlite.SQLiteConstraintException -import io.github.sds100.keymapper.mapping.actions.Action -import io.github.sds100.keymapper.mapping.actions.ActionData -import io.github.sds100.keymapper.mapping.actions.RepeatMode +import io.github.sds100.keymapper.base.actions.Action +import io.github.sds100.keymapper.base.actions.ActionData +import io.github.sds100.keymapper.base.actions.RepeatMode +import io.github.sds100.keymapper.base.constraints.Constraint +import io.github.sds100.keymapper.base.constraints.ConstraintMode +import io.github.sds100.keymapper.base.constraints.ConstraintState +import io.github.sds100.keymapper.base.floating.FloatingButtonEntityMapper +import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType +import io.github.sds100.keymapper.base.trigger.AssistantTriggerKey +import io.github.sds100.keymapper.base.trigger.AssistantTriggerType +import io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey +import io.github.sds100.keymapper.base.trigger.FloatingButtonKey +import io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey +import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource +import io.github.sds100.keymapper.base.trigger.Trigger +import io.github.sds100.keymapper.base.trigger.TriggerKey +import io.github.sds100.keymapper.base.trigger.TriggerKeyDevice +import io.github.sds100.keymapper.base.trigger.TriggerMode import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.common.utils.ifIsData -import io.github.sds100.keymapper.mapping.constraints.Constraint -import io.github.sds100.keymapper.mapping.constraints.ConstraintMode -import io.github.sds100.keymapper.mapping.constraints.ConstraintState +import io.github.sds100.keymapper.common.utils.moveElement import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository +import io.github.sds100.keymapper.data.repositories.KeyMapRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.floating.FloatingButtonEntityMapper import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.mapping.trigger.AssistantTriggerKey -import io.github.sds100.keymapper.mapping.trigger.AssistantTriggerType -import io.github.sds100.keymapper.mapping.trigger.FingerprintTriggerKey -import io.github.sds100.keymapper.mapping.trigger.FloatingButtonKey -import io.github.sds100.keymapper.mapping.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.mapping.trigger.Trigger -import io.github.sds100.keymapper.mapping.trigger.TriggerKey -import io.github.sds100.keymapper.mapping.trigger.TriggerKeyDevice -import io.github.sds100.keymapper.mapping.trigger.TriggerMode -import io.github.sds100.keymapper.base.system.accessibility.ServiceEvent -import io.github.sds100.keymapper.common.utils.firstBlocking -import io.github.sds100.keymapper.common.utils.moveElement -import io.github.sds100.keymapper.data.repositories.KeyMapRepository -import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow @@ -872,7 +873,7 @@ class ConfigKeyMapUseCaseController @Inject constructor( return floatingLayoutRepository.count() } - override suspend fun sendServiceEvent(event: io.github.sds100.keymapper.base.system.accessibility.ServiceEvent): Result<*> { + override suspend fun sendServiceEvent(event: AccessibilityServiceEvent): Result<*> { return serviceAdapter.send(event) } @@ -989,7 +990,7 @@ interface ConfigKeyMapUseCase : GetDefaultKeyMapOptionsUseCase { fun removeConstraint(id: String) fun setAndMode() fun setOrMode() - suspend fun sendServiceEvent(event: io.github.sds100.keymapper.base.system.accessibility.ServiceEvent): Result<*> + suspend fun sendServiceEvent(event: AccessibilityServiceEvent): Result<*> // trigger fun addKeyCodeTriggerKey( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt index c5bd2c02f6..bab0bf1eed 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt @@ -11,8 +11,8 @@ import androidx.lifecycle.Lifecycle import androidx.navigation.findNavController import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.compose.ComposeColors -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.ComposeColors +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.system.permissions.RequestPermissionDelegate import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.launchRepeatOnLifecycle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt index ef9c21367e..a21a322c20 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt @@ -39,7 +39,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.groups.GroupBreadcrumbRow import io.github.sds100.keymapper.base.groups.GroupListItemModel @@ -47,7 +47,7 @@ import io.github.sds100.keymapper.base.groups.GroupRow import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel import io.github.sds100.keymapper.base.trigger.TriggerError import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.CustomDialog diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt index 2f687a9867..8b31dae82d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt @@ -54,12 +54,12 @@ import androidx.compose.ui.unit.sp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel import io.github.sds100.keymapper.base.trigger.TriggerError import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.CompactChip import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt index 5d08303452..ce2f7a5600 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt @@ -42,7 +42,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.SliderMaximums import io.github.sds100.keymapper.base.utils.ui.SliderMinimums diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt index e1a4cccd95..30fd952690 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt @@ -25,9 +25,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt index 1f9f40d1d4..99c6d56601 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt @@ -15,7 +15,7 @@ import com.airbnb.epoxy.TypedEpoxyController import com.michaelflisar.dragselectrecyclerview.DragSelectTouchListener import com.michaelflisar.dragselectrecyclerview.DragSelectionProcessor import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding +import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.logEntry import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.base.utils.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt index a9f3f5ed60..f00271e269 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt @@ -10,9 +10,9 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.system.leanback.LeanbackUtils import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.base.utils.ui.ChooseAppStoreModel import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.showPopup diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt index c9340190a3..e6d76166dd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt @@ -13,7 +13,7 @@ import com.google.android.material.bottomappbar.BottomAppBar import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.url.UrlUtils import io.github.sds100.keymapper.base.utils.Inject -import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.base.utils.ui.showPopups abstract class BaseSettingsFragment : PreferenceFragmentCompat() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt index 1c8cdd2ed3..0f2ce52e20 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt @@ -25,8 +25,8 @@ import io.github.sds100.keymapper.base.system.notifications.NotificationControll import io.github.sds100.keymapper.system.notifications.NotificationUtils import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.str -import io.github.sds100.keymapper.base.utils.strArray +import io.github.sds100.keymapper.base.utils.ui.str +import io.github.sds100.keymapper.base.utils.ui.strArray import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import splitties.alertdialog.appcompat.alertDialog diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt index 55e0535520..bdb17a931e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt @@ -7,9 +7,9 @@ import androidx.preference.Preference import androidx.preference.isEmpty import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.combine diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt index 493365cf15..e175f72567 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt @@ -69,7 +69,7 @@ import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.ui.compose.DraggableItem import io.github.sds100.keymapper.base.utils.ui.compose.rememberDragDropState import kotlinx.coroutines.CoroutineScope diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt index 6a82550597..7f7df4d1c6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt @@ -5,9 +5,9 @@ import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding +import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.fixError -import io.github.sds100.keymapper.simple +import io.github.sds100.keymapper.base.simple import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.ListItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt index abb27603cc..8a6a1a1504 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt @@ -27,8 +27,8 @@ import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.common.utils.firstBlocking -import io.github.sds100.keymapper.mapping.actions.PerformActionsUseCase -import io.github.sds100.keymapper.mapping.constraints.DetectConstraintsUseCase +import io.github.sds100.keymapper.base.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt index 3467be6765..1942642f36 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt @@ -4,8 +4,8 @@ import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding -import io.github.sds100.keymapper.simple +import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBinding +import io.github.sds100.keymapper.base.simple import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt index 9696d292ce..5ed11ccf74 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt @@ -9,8 +9,8 @@ import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.databinding.FragmentChooseAppBinding -import io.github.sds100.keymapper.simple +import io.github.sds100.keymapper.base.databinding.FragmentChooseAppBinding +import io.github.sds100.keymapper.base.simple import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.RecyclerViewFragment diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt index 353bed8c47..31d5122b37 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt @@ -33,8 +33,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SearchAppBarActions import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt index e01f94161b..3c907f1393 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt @@ -10,8 +10,8 @@ import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding -import io.github.sds100.keymapper.simple +import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBinding +import io.github.sds100.keymapper.base.simple import io.github.sds100.keymapper.system.apps.AppShortcutInfo import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt index 977e711255..2f7a7482da 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt @@ -18,8 +18,8 @@ import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyController -import io.github.sds100.keymapper.databinding.FragmentConfigIntentBinding -import io.github.sds100.keymapper.databinding.ListItemIntentExtraBoolBinding +import io.github.sds100.keymapper.base.databinding.FragmentConfigIntentBinding +import io.github.sds100.keymapper.base.databinding.ListItemIntentExtraBoolBinding import io.github.sds100.keymapper.intentExtraBool import io.github.sds100.keymapper.intentExtraGeneric import io.github.sds100.keymapper.system.intents.BoolIntentExtraListItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt index a0b4bc32e8..f953e3a0b6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt @@ -14,7 +14,7 @@ import io.github.sds100.keymapper.UseCases import AccessibilityServiceState import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.base.utils.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.base.utils.ui.str import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.combine diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt index 8a4074fd09..09aabd1396 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerButtonRow.kt @@ -21,8 +21,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.canopas.lib.showcase.IntroShowcase import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.compose.LocalCustomColorsPalette +import io.github.sds100.keymapper.base.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperTapTarget import io.github.sds100.keymapper.base.utils.ui.compose.keyMapperShowcaseStyle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt index f0081d3613..b6b9987ea1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt @@ -1,13 +1,13 @@ package io.github.sds100.keymapper.base.trigger import android.view.KeyEvent -import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker +import io.github.sds100.keymapper.base.utils.ServiceEvent +import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyMotionEvent -import io.github.sds100.keymapper.base.utils.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow @@ -17,9 +17,9 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch +import javax.inject.Inject - -class RecordTriggerController( +class RecordTriggerController @Inject constructor( private val coroutineScope: CoroutineScope, private val serviceAdapter: AccessibilityServiceAdapter, ) : RecordTriggerUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt index db6dcd0d24..0cf05bfe3d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe import kotlinx.coroutines.launch diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt index a5c56b3be7..10b3a8a08e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt @@ -35,7 +35,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt index 1701af380a..1069cdc3d8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt @@ -39,7 +39,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt index f4c99b4910..1b7c9d38e4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt @@ -20,8 +20,8 @@ import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.errorOrNull import io.github.sds100.keymapper.common.utils.isSuccess import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.databinding.DialogEdittextNumberBinding -import io.github.sds100.keymapper.databinding.DialogEdittextStringBinding +import io.github.sds100.keymapper.base.databinding.DialogEdittextNumberBinding +import io.github.sds100.keymapper.base.databinding.DialogEdittextStringBinding import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.common.utils.resumeIfNotCompleted import kotlinx.coroutines.CancellableContinuation diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/EpoxyRecyclerViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/EpoxyRecyclerViewModelHelper.kt index dc84e23b82..06e227aec7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/EpoxyRecyclerViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/EpoxyRecyclerViewModelHelper.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.utils.ui import com.airbnb.epoxy.EpoxyController import io.github.sds100.keymapper.checkbox -import io.github.sds100.keymapper.databinding.ListItemCheckboxBinding +import io.github.sds100.keymapper.base.databinding.ListItemCheckboxBinding fun EpoxyController.configuredCheckBox( model: CheckBoxListItem, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt index 4be11b0dbf..549a79b01f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt @@ -10,7 +10,7 @@ import androidx.navigation.fragment.findNavController import io.github.sds100.keymapper.NavAppDirections import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.ChooseActionFragment -import io.github.sds100.keymapper.mapping.actions.keyevent.ChooseKeyCodeFragment +import io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment import io.github.sds100.keymapper.base.actions.keyevent.ConfigKeyEventActionFragment import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickCoordinateResult import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickDisplayCoordinateFragment @@ -254,7 +254,7 @@ fun NavigationViewModel.sendNavResultFromBundle( } NavDestination.ID_KEY_CODE -> { - val keyCode = bundle.getInt(io.github.sds100.keymapper.mapping.actions.keyevent.ChooseKeyCodeFragment.EXTRA_KEYCODE) + val keyCode = bundle.getInt(io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment.EXTRA_KEYCODE) onNavResult(NavResult(requestKey, keyCode)) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt index 10974e98c7..51efc8154d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt @@ -11,7 +11,7 @@ import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.OnLifecycleEvent import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.databinding.DialogChooseAppStoreBinding +import io.github.sds100.keymapper.base.databinding.DialogChooseAppStoreBinding import io.github.sds100.keymapper.system.url.UrlUtils import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt index 4b03e1dc0c..cb4250b003 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt @@ -6,7 +6,7 @@ import androidx.annotation.MenuRes import androidx.annotation.StringRes import com.google.android.material.bottomappbar.BottomAppBar import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.databinding.FragmentSimpleRecyclerviewBinding +import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBinding abstract class SimpleRecyclerViewFragment : RecyclerViewFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ListItemFixError.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ListItemFixError.kt index 255a902f80..727b39accd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ListItemFixError.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ListItemFixError.kt @@ -19,7 +19,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.ui.TextListItem @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItem.kt index 2d622620bd..91e4a622b5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SimpleListItem.kt @@ -32,8 +32,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.utils.drawable +import io.github.sds100.keymapper.base.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.utils.ui.drawable @Composable fun SimpleListItemHeader( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SliderOptionText.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SliderOptionText.kt index eebdc839f2..303b1299f0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SliderOptionText.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/SliderOptionText.kt @@ -36,7 +36,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.compose.KeyMapperTheme import kotlin.math.roundToInt @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/UriHandlerUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/UriHandlerUtils.kt index b0dfb22638..8ba4358c1b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/UriHandlerUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/UriHandlerUtils.kt @@ -4,7 +4,7 @@ import android.content.Context import android.widget.Toast import androidx.compose.ui.platform.UriHandler import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.str +import io.github.sds100.keymapper.base.utils.ui.str fun UriHandler.openUriSafe(ctx: Context, uri: String) { try { diff --git a/base/src/main/res/layout/fragment_choose_sound_file.xml b/base/src/main/res/layout/fragment_choose_sound_file.xml index 3da224818a..ce81707e9b 100644 --- a/base/src/main/res/layout/fragment_choose_sound_file.xml +++ b/base/src/main/res/layout/fragment_choose_sound_file.xml @@ -8,7 +8,7 @@ + type="io.github.sds100.keymapper.base.actions.sound.ChooseSoundFileViewModel" /> diff --git a/base/src/main/res/layout/fragment_config_key_event.xml b/base/src/main/res/layout/fragment_config_key_event.xml index 41011c8334..70b32c74a4 100644 --- a/base/src/main/res/layout/fragment_config_key_event.xml +++ b/base/src/main/res/layout/fragment_config_key_event.xml @@ -13,7 +13,7 @@ + type="io.github.sds100.keymapper.base.actions.keyevent.ConfigKeyEventActionViewModel" /> + type="io.github.sds100.keymapper.base.actions.tapscreen.PickDisplayCoordinateViewModel" /> - + type="io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickDisplayCoordinateViewModel" /> - + type="io.github.sds100.keymapper.base.actions.swipescreen.SwipePickDisplayCoordinateViewModel" /> - + type="io.github.sds100.keymapper.base.logging.LogEntryListItem" /> + android:name="io.github.sds100.keymapper.base.actions.uielement.InteractUiElementFragment"> Date: Wed, 21 May 2025 13:38:12 +0200 Subject: [PATCH 24/71] chore: set version to 3.2.0 --- app/version.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/version.properties b/app/version.properties index 9702277f1d..67a33d0fe4 100644 --- a/app/version.properties +++ b/app/version.properties @@ -1,3 +1,3 @@ -VERSION_NAME=3.1.2 +VERSION_NAME=3.2.0 VERSION_CODE=122 VERSION_NUM=0 \ No newline at end of file From ffd06b40a9871e73a666fbfea741c16659b60cc5 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 21 May 2025 14:09:28 +0200 Subject: [PATCH 25/71] #1711 refactor more files --- api/build.gradle.kts | 1 + .../sds100/keymapper/api/ApiHiltModule.kt | 11 +- .../api/LaunchKeyMapShortcutActivity.kt | 17 +- .../api/TriggerKeyMapsBroadcastReceiver.kt | 22 +- app/build.gradle.kts | 2 +- .../github/sds100/keymapper/AppHiltModule.kt | 12 +- .../sds100/keymapper/home/HomeFragment.kt | 19 +- .../sds100/keymapper/home/HomeScreen.kt | 30 ++ .../keymapper/keymaps/ConfigKeyMapFragment.kt | 54 +++ .../keymapper/keymaps/ConfigKeyMapScreen.kt | 86 +++++ .../AccessibilityServiceController.kt | 11 +- .../accessibility/MyAccessibilityService.kt | 159 ++++---- app/src/main/res/navigation/nav_app.xml | 28 ++ .../home/HomeFloatingLayoutsScreen.kt | 2 +- base/src/main/AndroidManifest.xml | 5 + .../sds100/keymapper/base/BaseMainActivity.kt | 2 +- .../keymapper/base/about/AboutFragment.kt | 3 +- .../keyevent/ConfigKeyEventActionFragment.kt | 5 +- .../keyevent/ConfigKeyEventActionViewModel.kt | 24 +- .../actions/sound/ChooseSoundFileFragment.kt | 3 +- .../uielement/InteractUiElementFragment.kt | 7 +- .../uielement/InteractUiElementScreen.kt | 12 +- .../uielement/InteractUiElementUseCase.kt | 14 +- .../uielement/InteractUiElementViewModel.kt | 42 +-- .../keymapper/base/backup/BackupManager.kt | 18 +- .../base/backup/RestoreKeyMapsActivity.kt | 21 +- .../constraints/ChooseConstraintFragment.kt | 7 +- .../constraints/ChooseConstraintScreen.kt | 3 +- .../constraints/ChooseConstraintViewModel.kt | 14 +- .../base/constraints/ConstraintUiHelper.kt | 8 +- .../base/constraints/ConstraintsScreen.kt | 31 +- .../constraints/TimeConstraintBottomSheet.kt | 2 +- .../base/floating/FloatingButtonData.kt | 6 +- .../keymapper/base/home/BaseHomeViewModel.kt | 3 +- .../base/home/HomeKeyMapListScreen.kt | 21 +- .../sds100/keymapper/base/home/HomeScreen.kt | 189 ---------- .../base/keymaps/BaseConfigKeyMapFragment.kt | 67 ++++ ...MapScreen.kt => BaseConfigKeyMapScreen.kt} | 102 +---- .../base/keymaps/ConfigKeyMapFragment.kt | 113 ------ .../base/keymaps/ConfigKeyMapViewModel.kt | 6 +- .../keymaps/CreateKeyMapShortcutActivity.kt | 54 ++- .../keymaps/CreateKeyMapShortcutScreen.kt | 36 +- .../keymaps/CreateKeyMapShortcutUseCase.kt | 25 +- .../base/keymaps/DisplayKeyMapUseCase.kt | 31 +- .../sds100/keymapper/base/keymaps/KeyMap.kt | 4 +- .../base/keymaps/KeyMapAppBarState.kt | 4 +- .../base/keymaps/KeyMapListItemCreator.kt | 11 +- .../base/keymaps/KeyMapListScreen.kt | 7 +- .../base/keymaps/KeyMapListViewModel.kt | 92 ++--- .../base/keymaps/ListKeyMapsUseCase.kt | 21 +- .../base/keymaps/PauseKeyMapsUseCase.kt | 5 +- .../detection/DpadMotionEventTracker.kt | 4 +- .../keymaps/detection/KeyMapController.kt | 203 ++++++---- .../base/logging/KeyMapperLoggingTree.kt | 22 +- .../keymapper/base/logging/LogFragment.kt | 16 +- .../RerouteKeyEventsUseCase.kt | 13 +- .../Android11BugWorkaroundSettingsFragment.kt | 14 +- .../AutomaticallyChangeImeSettings.kt | 5 +- .../base/settings/BaseSettingsFragment.kt | 13 +- .../base/settings/ConfigSettingsUseCase.kt | 18 +- .../base/settings/SettingsViewModel.kt | 16 +- .../base/sorting/SortKeyMapsUseCase.kt | 14 +- .../system/ChooseBluetoothDeviceFragment.kt | 11 +- .../AccessibilityServiceAdapterImpl.kt | 32 +- .../AccessibilityServiceUtils.kt | 271 -------------- .../accessibility/BaseAccessibilityService.kt | 354 +++++++++++++++--- .../BaseAccessibilityServiceController.kt | 41 +- .../accessibility/IAccessibilityService.kt | 2 +- .../system/apps/ChooseActivityFragment.kt | 11 +- .../system/apps/ChooseActivityViewModel.kt | 5 +- .../base/system/apps/ChooseAppFragment.kt | 11 +- .../base/system/apps/ChooseAppScreen.kt | 5 +- .../system/apps/ChooseAppShortcutFragment.kt | 21 +- .../system/intents/ConfigIntentFragment.kt | 17 +- .../AndroidNotificationAdapter.kt | 12 +- .../notifications/NotificationController.kt | 8 +- .../permissions/RequestPermissionDelegate.kt | 6 +- .../base/tiles/ToggleMappingsTile.kt | 22 +- .../trigger/BaseConfigTriggerViewModel.kt | 11 +- ...{TriggerScreen.kt => BaseTriggerScreen.kt} | 96 ++--- .../base/trigger/FingerprintTriggerKey.kt | 4 +- .../base/trigger/FloatingButtonKey.kt | 6 +- .../base/trigger/RecordTriggerUseCase.kt | 11 +- .../trigger/SetupGuiKeyboardBottomSheet.kt | 2 +- .../sds100/keymapper/base/trigger/Trigger.kt | 9 +- .../base/trigger/TriggerKeyListItem.kt | 38 +- .../trigger/TriggerKeyOptionsBottomSheet.kt | 20 +- .../sds100/keymapper/base/utils/ShareUtils.kt | 5 +- .../keymapper/base/utils/ui/DialogUtils.kt | 80 ---- .../utils/ui/EpoxyRecyclerViewModelHelper.kt | 2 +- .../base/utils/ui/NavigationViewModel.kt | 59 ++- .../keymapper/base/utils/ui/PopupViewModel.kt | 6 +- .../keymapper/base/utils/ui/ResourceExt.kt | 33 +- .../keymapper/base/utils/ui/SnackBarUtils.kt | 61 ++- .../base/utils/ui/UnsavedChangesDialog.kt | 36 ++ base/src/main/res/layout/activity_main.xml | 2 +- .../{nav_app.xml => nav_base_app.xml} | 67 ++-- common/build.gradle.kts | 1 + .../common/KeyMapperClassProvider.kt | 6 + .../data/utils/SharedPrefsDataStoreWrapper.kt | 3 +- system/src/main/AndroidManifest.xml | 1 - .../system/notifications/NotificationUtils.kt | 4 +- 102 files changed, 1532 insertions(+), 1670 deletions(-) create mode 100644 app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt create mode 100644 app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt create mode 100644 app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt create mode 100644 app/src/main/res/navigation/nav_app.xml delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapFragment.kt rename base/src/main/java/io/github/sds100/keymapper/base/keymaps/{ConfigKeyMapScreen.kt => BaseConfigKeyMapScreen.kt} (87%) delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt rename base/src/{free/java/io/github/sds100/keymapper => main/java/io/github/sds100/keymapper/base}/keymaps/detection/KeyMapController.kt (91%) rename base/src/main/java/io/github/sds100/keymapper/base/trigger/{TriggerScreen.kt => BaseTriggerScreen.kt} (91%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/utils/ui/UnsavedChangesDialog.kt rename base/src/main/res/navigation/{nav_app.xml => nav_base_app.xml} (89%) create mode 100644 common/src/main/java/io/github/sds100/keymapper/common/KeyMapperClassProvider.kt diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 33c440eaf7..046ff33114 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -3,6 +3,7 @@ plugins { alias(libs.plugins.kotlin.android) alias(libs.plugins.google.devtools.ksp) alias(libs.plugins.jlleitschuh.gradle.ktlint) + alias(libs.plugins.dagger.hilt.android) } android { diff --git a/api/src/main/java/io/github/sds100/keymapper/api/ApiHiltModule.kt b/api/src/main/java/io/github/sds100/keymapper/api/ApiHiltModule.kt index 85b27aa802..aaf5e6ce4b 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/ApiHiltModule.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/ApiHiltModule.kt @@ -2,14 +2,15 @@ package io.github.sds100.keymapper.api import dagger.Binds import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent import io.github.sds100.keymapper.system.apps.KeyMapShortcutActivityIntentBuilder @Module -class ApiHiltModule { +@InstallIn(SingletonComponent::class) +abstract class ApiHiltModule { @Binds - fun bindKeyMapShortcutActivityIntentBuilder( + abstract fun bindKeyMapShortcutActivityIntentBuilder( impl: KeyMapShortcutActivityIntentBuilderImpl, - ): KeyMapShortcutActivityIntentBuilder { - return impl - } + ): KeyMapShortcutActivityIntentBuilder } diff --git a/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt index ab37091543..978d9e9050 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt @@ -1,11 +1,9 @@ package io.github.sds100.keymapper.api -import android.app.Activity import android.content.Intent import android.os.Bundle import android.widget.Toast -import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.common.BuildConfigProvider +import androidx.activity.ComponentActivity import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import javax.inject.Inject @@ -15,25 +13,22 @@ import javax.inject.Inject * Use basic Activity, NOT AppCompatActivity so the NoDisplay theme works. Otherwise an * exception may be thrown because the theme doesn't extend AppCompat. */ -@AndroidEntryPoint -class LaunchKeyMapShortcutActivity : Activity() { - @Inject - lateinit var buildConfigProvider: BuildConfigProvider +// TODO test this still works. +class LaunchKeyMapShortcutActivity : ComponentActivity() { @Inject lateinit var accessibilityServiceAdapter: AccessibilityServiceAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val accessibilityServiceState = accessibilityServiceAdapter.state.value when (accessibilityServiceState) { AccessibilityServiceState.ENABLED -> if (intent.action == Api.ACTION_TRIGGER_KEYMAP_BY_UID) { Intent(Api.ACTION_TRIGGER_KEYMAP_BY_UID).apply { - setPackage(buildConfigProvider.packageName) + setPackage(packageName) val uuid = intent.getStringExtra(Api.EXTRA_KEYMAP_UID) putExtra(Api.EXTRA_KEYMAP_UID, uuid) @@ -46,13 +41,13 @@ class LaunchKeyMapShortcutActivity : Activity() { this, R.string.error_accessibility_service_crashed, Toast.LENGTH_SHORT, - ) + ).show() AccessibilityServiceState.DISABLED -> Toast.makeText( this, R.string.error_accessibility_service_disabled, Toast.LENGTH_SHORT, - ) + ).show() } finish() diff --git a/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt b/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt index 279530f681..828207bfd7 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt @@ -3,25 +3,33 @@ package io.github.sds100.keymapper.api import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.base.utils.ServiceEvent +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.base.keymaps.TriggerKeyMapEvent +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch +import javax.inject.Inject // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API +// TODO test this +@AndroidEntryPoint class TriggerKeyMapsBroadcastReceiver : BroadcastReceiver() { + @Inject + lateinit var serviceAdapter: AccessibilityServiceAdapter + + @Inject + lateinit var coroutineScope: CoroutineScope + override fun onReceive(context: Context?, intent: Intent?) { context ?: return intent ?: return - val serviceAdapter = ServiceLocator.accessibilityServiceAdapter(context) - val scope = ServiceLocator.appCoroutineScope(context) - when (intent.action) { Api.ACTION_TRIGGER_KEYMAP_BY_UID -> { intent.getStringExtra(Api.EXTRA_KEYMAP_UID)?.let { uid -> - scope.launch { - serviceAdapter.send(ServiceEvent.TriggerKeyMap(uid)) + coroutineScope.launch { + serviceAdapter.send(TriggerKeyMapEvent(uid)) } } } diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d9d55fdc60..0be87c2498 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -13,6 +13,7 @@ plugins { alias(libs.plugins.androidx.navigation.safeargs.kotlin) alias(libs.plugins.google.devtools.ksp) alias(libs.plugins.jlleitschuh.gradle.ktlint) + alias(libs.plugins.dagger.hilt.android) } android { @@ -157,7 +158,6 @@ android { output.outputFileName = "keymapper-${'$'}{variant.versionName}.apk" } } - } dependencies { diff --git a/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt index e5321d3510..9e6d0a904a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt +++ b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt @@ -5,10 +5,10 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import io.github.sds100.keymapper.BuildConfig +import io.github.sds100.keymapper.common.BuildConfigProvider +import io.github.sds100.keymapper.common.KeyMapperClassProvider import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider import io.github.sds100.keymapper.common.utils.DispatcherProvider -import io.github.sds100.keymapper.common.BuildConfigProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope import javax.inject.Singleton @@ -38,4 +38,12 @@ class AppHiltModule { override val versionCode: Int get() = BuildConfig.VERSION_CODE } + + @Singleton + @Provides + fun provideClassProvider(): KeyMapperClassProvider = object : KeyMapperClassProvider { + override fun getMainActivity(): Class<*> { + return MainActivity::class.java + } + } } diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt index 83772a50b7..695ebccf33 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt @@ -16,21 +16,17 @@ import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController -import io.github.sds100.keymapper.base.ActivityViewModel -import io.github.sds100.keymapper.base.BaseMainActivity +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.NavAppDirections import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.home.BaseHomeViewModel -import io.github.sds100.keymapper.base.home.HomeDestination -import io.github.sds100.keymapper.base.home.HomeScreen import io.github.sds100.keymapper.base.utils.ui.setupNavigation import io.github.sds100.keymapper.base.utils.ui.showPopups +@AndroidEntryPoint class HomeFragment : Fragment() { private val homeViewModel: HomeViewModel by activityViewModels() - private val activityViewModel: ActivityViewModel by activityViewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -44,16 +40,6 @@ class HomeFragment : Fragment() { container: ViewGroup?, savedInstanceState: Bundle?, ): View { - val startDestination = - if (!activityViewModel.handledActivityLaunchIntent && - requireActivity().intent?.action == BaseMainActivity.ACTION_USE_FLOATING_BUTTONS - ) { - activityViewModel.handledActivityLaunchIntent = true - HomeDestination.FloatingButtons - } else { - HomeDestination.KeyMaps - } - FragmentComposeBinding.inflate(inflater, container, false).apply { composeView.apply { // Dispose of the Composition when the view's LifecycleOwner @@ -75,7 +61,6 @@ class HomeFragment : Fragment() { findNavController().navigate(NavAppDirections.actionGlobalAboutFragment()) }, finishActivity = requireActivity()::finish, - startDestination = startDestination, ) } } diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt new file mode 100644 index 0000000000..4020b30b04 --- /dev/null +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt @@ -0,0 +1,30 @@ +package io.github.sds100.keymapper.home + +import androidx.compose.material3.SnackbarHostState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import io.github.sds100.keymapper.base.home.BaseHomeViewModel +import io.github.sds100.keymapper.base.home.HomeKeyMapListScreen + +@Composable +fun HomeScreen( + modifier: Modifier = Modifier, + viewModel: BaseHomeViewModel, + onSettingsClick: () -> Unit, + onAboutClick: () -> Unit, + finishActivity: () -> Unit, +) { + val snackbarState = remember { SnackbarHostState() } + + HomeKeyMapListScreen( + modifier = modifier, + viewModel = viewModel.keyMapListViewModel, + snackbarState = snackbarState, + onSettingsClick = onSettingsClick, + onAboutClick = onAboutClick, + finishActivity = finishActivity, + fabBottomPadding = 0.dp, + ) +} diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt new file mode 100644 index 0000000000..7d5d924ce4 --- /dev/null +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt @@ -0,0 +1,54 @@ +package io.github.sds100.keymapper.keymaps + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides +import androidx.compose.foundation.layout.add +import androidx.compose.foundation.layout.displayCutout +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.only +import androidx.compose.foundation.layout.systemBars +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.ViewCompositionStrategy +import androidx.navigation.findNavController +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.base.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding +import io.github.sds100.keymapper.base.keymaps.BaseConfigKeyMapFragment + +@AndroidEntryPoint +class ConfigKeyMapFragment : BaseConfigKeyMapFragment() { + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle?, + ): View { + FragmentComposeBinding.inflate(inflater, container, false).apply { + composeView.apply { + // Dispose of the Composition when the view's LifecycleOwner + // is destroyed + setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) + setContent { + KeyMapperTheme { + ConfigKeyMapScreen( + modifier = Modifier + .windowInsetsPadding( + WindowInsets.systemBars.only(sides = WindowInsetsSides.Horizontal) + .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), + ) + .fillMaxSize(), + viewModel = viewModel, + navigateBack = findNavController()::navigateUp, + ) + } + } + } + return this.root + } + } +} diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt new file mode 100644 index 0000000000..1c9317bfa7 --- /dev/null +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt @@ -0,0 +1,86 @@ +package io.github.sds100.keymapper.keymaps + +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.SnackbarHostState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import io.github.sds100.keymapper.base.actions.ActionsScreen +import io.github.sds100.keymapper.base.constraints.ConstraintsScreen +import io.github.sds100.keymapper.base.keymaps.BaseConfigKeyMapScreen +import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapViewModel +import io.github.sds100.keymapper.base.keymaps.KeyMapOptionsScreen +import io.github.sds100.keymapper.base.trigger.TriggerScreen +import io.github.sds100.keymapper.base.utils.ui.UnsavedChangesDialog + +@Composable +fun ConfigKeyMapScreen( + modifier: Modifier = Modifier, + viewModel: ConfigKeyMapViewModel, + navigateBack: () -> Unit, +) { + val isKeyMapEnabled by viewModel.isEnabled.collectAsStateWithLifecycle() + val showActionTapTarget by viewModel.showActionsTapTarget.collectAsStateWithLifecycle() + val showConstraintTapTarget by viewModel.showConstraintsTapTarget.collectAsStateWithLifecycle() + + val snackbarHostState = remember { SnackbarHostState() } + + var showBackDialog by rememberSaveable { mutableStateOf(false) } + + if (showBackDialog) { + UnsavedChangesDialog( + onDismiss = { showBackDialog = false }, + onDiscardClick = { + showBackDialog = false + navigateBack() + }, + ) + } + + BaseConfigKeyMapScreen( + modifier = modifier, + isKeyMapEnabled = isKeyMapEnabled, + onKeyMapEnabledChange = viewModel::onEnabledChanged, + triggerScreen = { + TriggerScreen(Modifier.fillMaxSize(), viewModel.configTriggerViewModel) + }, + actionScreen = { + ActionsScreen(Modifier.fillMaxSize(), viewModel.configActionsViewModel) + }, + constraintsScreen = { + ConstraintsScreen( + Modifier.fillMaxSize(), + viewModel.configConstraintsViewModel, + snackbarHostState, + ) + }, + optionsScreen = { + KeyMapOptionsScreen( + Modifier.fillMaxSize(), + viewModel.configTriggerViewModel.optionsViewModel, + ) + }, + onBackClick = { + if (viewModel.isKeyMapEdited) { + showBackDialog = true + } else { + navigateBack() + } + }, + onDoneClick = { + viewModel.save() + navigateBack() + }, + snackbarHostState = snackbarHostState, + showActionTapTarget = showActionTapTarget, + onActionTapTargetCompleted = viewModel::onActionTapTargetCompleted, + showConstraintTapTarget = showConstraintTapTarget, + onConstraintTapTargetCompleted = viewModel::onConstraintTapTargetCompleted, + onSkipTutorialClick = viewModel::onSkipTutorialClick, + ) +} diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt index 4aebb02df5..3ea5630681 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt @@ -2,17 +2,16 @@ package io.github.sds100.keymapper.system.accessibility import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase -import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository -import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityServiceController -import io.github.sds100.keymapper.reroutekeyevents.RerouteKeyEventsUseCase +import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository +import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.base.utils.ServiceEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow @@ -20,8 +19,8 @@ import kotlinx.coroutines.flow.SharedFlow class AccessibilityServiceController( coroutineScope: CoroutineScope, accessibilityService: MyAccessibilityService, - inputEvents: SharedFlow, - outputEvents: MutableSharedFlow, + inputEvents: SharedFlow, + outputEvents: MutableSharedFlow, detectConstraintsUseCase: DetectConstraintsUseCase, performActionsUseCase: PerformActionsUseCase, detectKeyMapsUseCase: DetectKeyMapsUseCase, diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt index 4fe66beb7a..2abe5a7bc4 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt @@ -1,24 +1,72 @@ package io.github.sds100.keymapper.system.accessibility -import android.app.ActivityManager import android.content.Intent -import android.content.res.Configuration -import android.os.Build -import android.view.KeyEvent -import android.view.accessibility.AccessibilityEvent -import androidx.core.content.getSystemService -import androidx.lifecycle.Lifecycle +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.base.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase +import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapterImpl import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityService -import io.github.sds100.keymapper.system.devices.InputDeviceUtils -import io.github.sds100.keymapper.system.inputevents.MyKeyEvent -import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource -import kotlinx.coroutines.flow.update +import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityServiceController +import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository +import io.github.sds100.keymapper.data.repositories.PreferenceRepository +import io.github.sds100.keymapper.system.devices.DevicesAdapter +import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter +import io.github.sds100.keymapper.system.root.SuAdapter +import kotlinx.coroutines.CoroutineScope import timber.log.Timber +import javax.inject.Inject - +@AndroidEntryPoint class MyAccessibilityService : BaseAccessibilityService() { - var controller: AccessibilityServiceController? = null + private var controller: AccessibilityServiceController? = null + + @Inject + lateinit var coroutineScope: CoroutineScope + + @Inject + lateinit var accessibilityServiceAdapter: AccessibilityServiceAdapterImpl + + @Inject + lateinit var detectConstraintsUseCase: DetectConstraintsUseCase + + @Inject + lateinit var performActionsUseCase: PerformActionsUseCase + + @Inject + lateinit var detectKeyMapsUseCase: DetectKeyMapsUseCase + + @Inject + lateinit var fingerprintGesturesSupportedUseCase: FingerprintGesturesSupportedUseCase + + @Inject + lateinit var rerouteKeyEventsUseCase: RerouteKeyEventsUseCase + + @Inject + lateinit var pauseKeyMapsUseCase: PauseKeyMapsUseCase + + @Inject + lateinit var devicesAdapter: DevicesAdapter + + @Inject + lateinit var suAdapter: SuAdapter + + @Inject + lateinit var inputMethodAdapter: InputMethodAdapter + + @Inject + lateinit var preferenceRepository: PreferenceRepository + + @Inject + lateinit var nodeRepository: AccessibilityNodeRepository + + override fun getController(): BaseAccessibilityServiceController? { + return controller + } override fun onServiceConnected() { super.onServiceConnected() @@ -28,7 +76,23 @@ class MyAccessibilityService : BaseAccessibilityService() { context would return null */ if (controller == null) { - controller = AccessibilityServiceController() + controller = AccessibilityServiceController( + coroutineScope = coroutineScope, + accessibilityService = this, + inputEvents = accessibilityServiceAdapter.eventReceiver, + outputEvents = accessibilityServiceAdapter.eventsToService, + detectConstraintsUseCase = detectConstraintsUseCase, + performActionsUseCase = performActionsUseCase, + detectKeyMapsUseCase = detectKeyMapsUseCase, + fingerprintGesturesSupportedUseCase = fingerprintGesturesSupportedUseCase, + rerouteKeyEventsUseCase = rerouteKeyEventsUseCase, + pauseKeyMapsUseCase = pauseKeyMapsUseCase, + devicesAdapter = devicesAdapter, + suAdapter = suAdapter, + inputMethodAdapter = inputMethodAdapter, + settingsRepository = preferenceRepository, + nodeRepository = nodeRepository, + ) } controller?.onServiceConnected() @@ -45,73 +109,6 @@ class MyAccessibilityService : BaseAccessibilityService() { controller?.onDestroy() controller = null - lifecycleRegistry.currentState = Lifecycle.State.DESTROYED - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - fingerprintGestureController - .unregisterFingerprintGestureCallback(fingerprintGestureCallback) - } - - keyEventRelayServiceWrapper.onDestroy() - - Timber.i("Accessibility service: onDestroy") - super.onDestroy() } - - override fun onConfigurationChanged(newConfig: Configuration) { - super.onConfigurationChanged(newConfig) - - controller?.onConfigurationChanged(newConfig) - } - - override fun onTrimMemory(level: Int) { - val memoryInfo = ActivityManager.MemoryInfo() - getSystemService()?.getMemoryInfo(memoryInfo) - - Timber.i("Accessibility service: onLowMemory, total: ${memoryInfo.totalMem}, available: ${memoryInfo.availMem}, is low memory: ${memoryInfo.lowMemory}, threshold: ${memoryInfo.threshold}") - - super.onTrimMemory(level) - } - - override fun onAccessibilityEvent(event: AccessibilityEvent?) { - event ?: return - - if (event.eventType == AccessibilityEvent.TYPE_WINDOWS_CHANGED) { - _activeWindowPackage.update { rootInActiveWindow?.packageName?.toString() } - } - - controller?.onAccessibilityEvent(event) - } - - override fun onKeyEvent(event: KeyEvent?): Boolean { - event ?: return super.onKeyEvent(event) - - val device = if (event.device == null) { - null - } else { - InputDeviceUtils.createInputDeviceInfo(event.device) - } - - if (controller != null) { - return controller!!.onKeyEvent( - MyKeyEvent( - keyCode = event.keyCode, - action = event.action, - metaState = event.metaState, - scanCode = event.scanCode, - device = device, - repeatCount = event.repeatCount, - source = event.source, - ), - KeyEventDetectionSource.ACCESSIBILITY_SERVICE, - ) - } - - return false - } - - override val lifecycle: Lifecycle - get() = lifecycleRegistry - } diff --git a/app/src/main/res/navigation/nav_app.xml b/app/src/main/res/navigation/nav_app.xml new file mode 100644 index 0000000000..e066ce792f --- /dev/null +++ b/app/src/main/res/navigation/nav_app.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/base/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt b/base/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt index aca43b669c..2d8ab8c193 100644 --- a/base/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt +++ b/base/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt @@ -5,7 +5,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.Dp import androidx.navigation.NavHostController -import io.github.sds100.keymapper.floating.ListFloatingLayoutsViewModel +import io.github.sds100.keymapper.base.floating.ListFloatingLayoutsViewModel @Composable fun HomeFloatingLayoutsScreen( diff --git a/base/src/main/AndroidManifest.xml b/base/src/main/AndroidManifest.xml index 0e9587cc98..97e12d4562 100644 --- a/base/src/main/AndroidManifest.xml +++ b/base/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingLeanbackLauncher"> + + + diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt index e8b81acdfb..667f07f70b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt @@ -200,7 +200,7 @@ abstract class BaseMainActivity : AppCompatActivity() { // This is checked here and not in KeyMapperApp's lifecycle observer because // the activities have not necessarily resumed at that point. permissionAdapter.onPermissionsChanged() - serviceAdapter.updateServiceState() + serviceAdapter.invalidateState() } override fun onDestroy() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt index 5e3bd07b0e..cabec8079b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/about/AboutFragment.kt @@ -11,10 +11,11 @@ import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.base.databinding.FragmentAboutBinding +import io.github.sds100.keymapper.common.BuildConfigProvider import javax.inject.Inject +@AndroidEntryPoint class AboutFragment : Fragment() { @Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt index 8ad4f680e6..ca0c03ed71 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt @@ -12,16 +12,17 @@ import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.setFragmentResult +import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.databinding.FragmentConfigKeyEventBinding -import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.base.utils.ui.configuredCheckBox import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.common.utils.putJsonSerializable import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json @@ -36,7 +37,7 @@ class ConfigKeyEventActionFragment : Fragment() { private val requestKey: String by lazy { args.requestKey } - private val viewModel: ConfigKeyEventActionViewModel () + private val viewModel: ConfigKeyEventActionViewModel by viewModels() /** * Scoped to the lifecycle of the fragment's view (between onCreateView and onDestroyView) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt index 552b0c166f..4113701005 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -7,24 +7,27 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionData +import io.github.sds100.keymapper.base.utils.InputEventStrings +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem +import io.github.sds100.keymapper.base.utils.ui.NavDestination +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.navigate import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.errorOrNull import io.github.sds100.keymapper.common.utils.handle +import io.github.sds100.keymapper.common.utils.hasFlag import io.github.sds100.keymapper.common.utils.isSuccess +import io.github.sds100.keymapper.common.utils.minusFlag import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.common.utils.valueOrNull +import io.github.sds100.keymapper.common.utils.withFlag import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.devices.InputDeviceUtils -import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem -import io.github.sds100.keymapper.base.utils.ui.NavDestination -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.navigate import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted @@ -34,9 +37,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -import io.github.sds100.keymapper.common.utils.hasFlag -import io.github.sds100.keymapper.common.utils.minusFlag -import io.github.sds100.keymapper.common.utils.withFlag import javax.inject.Inject @HiltViewModel @@ -190,7 +190,7 @@ class ConfigKeyEventActionViewModel @Inject constructor( onError = { "" }, ) - val modifierListItems = InputEventUtils.MODIFIER_LABELS.map { (modifier, label) -> + val modifierListItems = InputEventStrings.MODIFIER_LABELS.map { (modifier, label) -> CheckBoxListItem( id = modifier.toString(), label = getString(label), diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt index 15089e2178..c443fccc19 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt @@ -24,10 +24,9 @@ import androidx.navigation.fragment.navArgs import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.databinding.FragmentChooseSoundFileBinding import io.github.sds100.keymapper.base.simple -import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.update diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt index 4b94fdb4db..2503c669ba 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt @@ -22,9 +22,9 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.withStateAtLeast import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.showPopups import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope @@ -32,6 +32,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json +@AndroidEntryPoint class InteractUiElementFragment : Fragment() { companion object { @@ -40,9 +41,7 @@ class InteractUiElementFragment : Fragment() { private val args: InteractUiElementFragmentArgs by navArgs() - private val viewModel by viewModels { - Inject.interactUiElementViewModel(requireContext()) - } + private val viewModel: InteractUiElementViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt index f1f50d44fc..5e211b73c5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt @@ -73,8 +73,6 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.base.system.apps.ChooseAppScreen -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperDropdownMenu import io.github.sds100.keymapper.base.utils.ui.compose.OptionsHeaderRow @@ -82,7 +80,9 @@ import io.github.sds100.keymapper.base.utils.ui.compose.WindowSizeClassExt.compa import io.github.sds100.keymapper.base.utils.ui.compose.icons.AdGroup import io.github.sds100.keymapper.base.utils.ui.compose.icons.JumpToElement import io.github.sds100.keymapper.base.utils.ui.compose.icons.KeyMapperIcons +import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.common.utils.NodeInteractionType +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.update private const val DEST_LANDING = "landing" @@ -382,11 +382,11 @@ private fun RecordingSection( openSelectAppScreen: () -> Unit = {}, ) { Column(modifier = modifier) { - when (state) { + when (val state = state) { is State.Data -> { - val interactionCount: Int = when (state.data) { - is RecordUiElementState.CountingDown -> state.data.interactionCount - is RecordUiElementState.Recorded -> state.data.interactionCount + val interactionCount: Int = when (val data = state.data) { + is RecordUiElementState.CountingDown -> data.interactionCount + is RecordUiElementState.Recorded -> data.interactionCount RecordUiElementState.Empty -> 0 } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt index b693755c97..6a35c58c34 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt @@ -1,16 +1,16 @@ package io.github.sds100.keymapper.base.actions.uielement import android.graphics.drawable.Drawable +import io.github.sds100.keymapper.base.system.accessibility.RecordAccessibilityNodeEvent +import io.github.sds100.keymapper.base.system.accessibility.RecordAccessibilityNodeState import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.mapData import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository -import io.github.sds100.keymapper.base.system.accessibility.RecordAccessibilityNodeState import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter -import io.github.sds100.keymapper.base.utils.ServiceEvent -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.mapData import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow @@ -41,7 +41,7 @@ class InteractUiElementController( init { serviceAdapter.eventReceiver - .filterIsInstance() + .filterIsInstance() .onEach { event -> recordState.update { event.state } } .launchIn(coroutineScope) } @@ -64,11 +64,11 @@ class InteractUiElementController( override suspend fun startRecording(): Result<*> { nodeRepository.deleteAll() - return serviceAdapter.send(ServiceEvent.StartRecordingNodes) + return serviceAdapter.send(RecordAccessibilityNodeEvent.StartRecordingNodes) } override suspend fun stopRecording() { - serviceAdapter.send(ServiceEvent.StopRecordingNodes).onFailure { + serviceAdapter.send(RecordAccessibilityNodeEvent.StopRecordingNodes).onFailure { recordState.update { RecordAccessibilityNodeState.Idle } } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt index a9ac3d363c..d22553641a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt @@ -7,26 +7,25 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionData -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Success -import io.github.sds100.keymapper.common.utils.onFailure -import io.github.sds100.keymapper.common.utils.then -import io.github.sds100.keymapper.common.utils.valueOrNull -import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.base.system.accessibility.RecordAccessibilityNodeState -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.containsQuery -import io.github.sds100.keymapper.common.utils.dataOrNull -import io.github.sds100.keymapper.common.utils.ifIsData -import io.github.sds100.keymapper.common.utils.mapData -import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.NodeInteractionType +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.common.utils.ifIsData +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.then +import io.github.sds100.keymapper.common.utils.valueOrNull +import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow @@ -44,8 +43,8 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import javax.inject.Inject import java.util.Locale +import javax.inject.Inject @HiltViewModel class InteractUiElementViewModel @Inject constructor( @@ -412,25 +411,6 @@ class InteractUiElementViewModel @Inject constructor( NodeInteractionType.COLLAPSE -> getString(R.string.action_interact_ui_element_interaction_type_collapse) } } - - fun onElementSelected(elementId: String) { - viewModelScope.launch { - val dialog = PopupUi.Text( - hint = getString(R.string.hint_ui_element_description), - allowEmpty = false, - text = elementId, - ) - - val description = showPopup("ui_element_description", dialog) ?: return@launch - - _returnAction.emit( - ActionData.InteractUiElement( - elementId = elementId, - description = description, - ) - ) - } - } } data class SelectedUiElementState( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt index cd27dc8bc7..3dfe21a4f5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt @@ -15,9 +15,17 @@ import com.google.gson.JsonParser import com.google.gson.JsonSyntaxException import com.google.gson.stream.MalformedJsonException import io.github.sds100.keymapper.base.actions.sound.SoundsManager +import io.github.sds100.keymapper.common.BuildConfigProvider +import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.common.utils.DefaultUuidGenerator +import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.TreeNode +import io.github.sds100.keymapper.common.utils.UuidGenerator +import io.github.sds100.keymapper.common.utils.breadFirstTraversal import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.data.Keys @@ -46,18 +54,11 @@ import io.github.sds100.keymapper.data.migration.fingerprintmaps.FingerprintToKe import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository import io.github.sds100.keymapper.data.repositories.GroupRepository +import io.github.sds100.keymapper.data.repositories.KeyMapRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.data.repositories.RepositoryUtils -import io.github.sds100.keymapper.data.repositories.KeyMapRepository import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.system.files.IFile -import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider -import io.github.sds100.keymapper.base.utils.DefaultUuidGenerator -import io.github.sds100.keymapper.common.utils.DispatcherProvider -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.TreeNode -import io.github.sds100.keymapper.base.utils.UuidGenerator -import io.github.sds100.keymapper.base.utils.breadFirstTraversal import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow @@ -73,7 +74,6 @@ import java.io.IOException import java.io.InputStream import java.util.LinkedList import java.util.UUID -import io.github.sds100.keymapper.common.BuildConfigProvider class BackupManagerImpl( private val coroutineScope: CoroutineScope, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt index c01d319543..b576803e2d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt @@ -16,23 +16,20 @@ import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import io.github.sds100.keymapper.MainActivity +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.utils.ui.compose.CustomDialogContent +import io.github.sds100.keymapper.common.KeyMapperClassProvider +import javax.inject.Inject +@AndroidEntryPoint class RestoreKeyMapsActivity : ComponentActivity() { - private val viewModel by viewModels { - RestoreKeyMapsViewModel.Factory( - useCase = BackupRestoreMappingsUseCaseImpl( - fileAdapter = ServiceLocator.fileAdapter(this), - backupManager = ServiceLocator.backupManager(this), - ), - resourceProvider = ServiceLocator.resourceProvider(this), - ) - } + @Inject + lateinit var classProvider: KeyMapperClassProvider + + private val viewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -77,7 +74,7 @@ class RestoreKeyMapsActivity : ComponentActivity() { TextButton(onClick = { finish() - Intent(ctx, MainActivity::class.java).apply { + Intent(ctx, classProvider.getMainActivity()).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) startActivity(this) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt index 15f964576e..962bad05cd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt @@ -22,9 +22,9 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.withStateAtLeast import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.setupNavigation import io.github.sds100.keymapper.base.utils.ui.showPopups @@ -33,6 +33,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json +@AndroidEntryPoint class ChooseConstraintFragment : Fragment() { companion object { @@ -41,9 +42,7 @@ class ChooseConstraintFragment : Fragment() { private val navArgs by navArgs() - private val viewModel: ChooseConstraintViewModel by viewModels { - Inject.chooseConstraintListViewModel(requireContext()) - } + private val viewModel: ChooseConstraintViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt index 8269983aff..5e2ac4ff08 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt @@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.grid.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.rounded.ArrowBack import androidx.compose.material.icons.rounded.Android @@ -46,10 +47,10 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemFixedHeight import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.update @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt index d607fdb52b..035b29aa1d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt @@ -7,9 +7,6 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.common.utils.Orientation -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.containsQuery import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.NavDestination @@ -22,6 +19,9 @@ import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel import io.github.sds100.keymapper.base.utils.ui.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.common.utils.Orientation +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.system.camera.CameraLens import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -217,8 +217,12 @@ class ChooseConstraintViewModel( } private suspend fun chooseFlashlightLens(): CameraLens? { - val items = useCase.getFlashlightLenses().map { - it to getString(CameraLensUtils.getLabel(it)) + val items = useCase.getFlashlightLenses().map { lens -> + val label = when (lens) { + CameraLens.FRONT -> R.string.lens_front + CameraLens.BACK -> R.string.lens_back + } + lens to getString(label) } if (items.size == 1) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt index 0ba957a32e..e1db1b1f0e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintUiHelper.kt @@ -3,13 +3,13 @@ package io.github.sds100.keymapper.base.constraints import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Android import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.common.utils.Orientation +import io.github.sds100.keymapper.common.utils.TimeUtils import io.github.sds100.keymapper.common.utils.handle import io.github.sds100.keymapper.common.utils.valueIfFailure import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.common.utils.Orientation -import io.github.sds100.keymapper.base.utils.TimeUtils -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import java.time.format.FormatStyle class ConstraintUiHelper( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt index 656703e3ea..fa5e20ad28 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintsScreen.kt @@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.FlashlightOn @@ -40,11 +41,11 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow -import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText +import io.github.sds100.keymapper.base.utils.ui.drawable +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.system.camera.CameraLens @Composable fun ConstraintsScreen( @@ -110,11 +111,11 @@ private fun ConstraintsScreen( ) } - when (state) { + when (val state = state) { State.Loading -> Loading() is State.Data -> Surface(modifier = modifier) { Column { - when (state.data) { + when (val data = state.data) { is ConfigConstraintsState.Empty -> { Column( modifier = Modifier.weight(1f), @@ -129,7 +130,7 @@ private fun ConstraintsScreen( textAlign = TextAlign.Center, ) - if (state.data.shortcuts.isNotEmpty()) { + if (data.shortcuts.isNotEmpty()) { Text( text = stringResource(R.string.recently_used_constraints), style = MaterialTheme.typography.titleSmall, @@ -141,7 +142,7 @@ private fun ConstraintsScreen( modifier = Modifier .padding(horizontal = 32.dp) .fillMaxWidth(), - shortcuts = state.data.shortcuts, + shortcuts = data.shortcuts, onClick = onClickShortcut, ) } @@ -151,7 +152,7 @@ private fun ConstraintsScreen( is ConfigConstraintsState.Loaded -> { Spacer(Modifier.height(8.dp)) - if (state.data.constraintList.isNotEmpty()) { + if (data.constraintList.isNotEmpty()) { Spacer(Modifier.height(8.dp)) Text( @@ -165,8 +166,8 @@ private fun ConstraintsScreen( ConstraintList( modifier = Modifier.weight(1f), - constraintList = state.data.constraintList, - shortcuts = state.data.shortcuts, + constraintList = data.constraintList, + shortcuts = data.shortcuts, onRemoveClick = { constraintToDelete = it showDeleteDialog = true @@ -175,12 +176,12 @@ private fun ConstraintsScreen( onClickShortcut = onClickShortcut, ) - if (state.data.constraintList.size > 1) { + if (data.constraintList.size > 1) { ConstraintModeRow( modifier = Modifier .fillMaxWidth() .padding(horizontal = 8.dp), - mode = state.data.selectedMode, + mode = data.selectedMode, onSelectMode = onSelectMode, ) } @@ -245,7 +246,7 @@ private fun Loading(modifier: Modifier = Modifier) { @Composable private fun ConstraintList( modifier: Modifier = Modifier, - constraintList: List, + constraintList: List, shortcuts: Set>, onRemoveClick: (String) -> Unit, onFixErrorClick: (String) -> Unit, @@ -325,7 +326,7 @@ private fun LoadedPreview() { state = State.Data( ConfigConstraintsState.Loaded( constraintList = listOf( - io.github.sds100.keymapper.base.constraints.ConstraintListItemModel( + ConstraintListItemModel( id = "1", icon = ComposeIconInfo.Vector(Icons.Rounded.FlashlightOn), constraintModeLink = ConstraintMode.AND, @@ -333,7 +334,7 @@ private fun LoadedPreview() { error = "Flashlight not found", isErrorFixable = true, ), - io.github.sds100.keymapper.base.constraints.ConstraintListItemModel( + ConstraintListItemModel( id = "2", icon = ComposeIconInfo.Drawable(ctx.drawable(R.mipmap.ic_launcher_round)), constraintModeLink = null, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt index 5d04b60952..f99472093b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/TimeConstraintBottomSheet.kt @@ -43,8 +43,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.utils.TimeUtils import io.github.sds100.keymapper.base.utils.ui.compose.OptionsHeaderRow +import io.github.sds100.keymapper.common.utils.TimeUtils import kotlinx.coroutines.launch import java.time.format.FormatStyle diff --git a/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt index fcac028138..84a9c5535e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/floating/FloatingButtonData.kt @@ -1,11 +1,11 @@ package io.github.sds100.keymapper.base.floating -import io.github.sds100.keymapper.data.db.typeconverter.ConstantTypeConverters -import io.github.sds100.keymapper.data.entities.FloatingButtonEntity -import io.github.sds100.keymapper.floating.FloatingButtonData.Location +import io.github.sds100.keymapper.base.floating.FloatingButtonData.Location import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.common.utils.SizeKM import io.github.sds100.keymapper.common.utils.getKey +import io.github.sds100.keymapper.data.db.typeconverter.ConstantTypeConverters +import io.github.sds100.keymapper.data.entities.FloatingButtonEntity import kotlinx.serialization.Serializable import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt index 13bddc3339..ccd16b2b91 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt @@ -9,6 +9,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.backup.BackupRestoreMappingsUseCase +import io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel import io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase @@ -44,7 +45,7 @@ abstract class BaseHomeViewModel( NavigationViewModel by NavigationViewModelImpl() { val keyMapListViewModel by lazy { - io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel( + KeyMapListViewModel( viewModelScope, listKeyMaps, resourceProvider, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt index 869647fc48..91737410a5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt @@ -56,28 +56,27 @@ import com.canopas.lib.showcase.IntroShowcase import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.backup.ImportExportState import io.github.sds100.keymapper.base.backup.RestoreType -import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.groups.GroupListItemModel import io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState import io.github.sds100.keymapper.base.keymaps.KeyMapList -import io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget -import io.github.sds100.keymapper.sorting.SortBottomSheet -import io.github.sds100.keymapper.system.files.FileUtils +import io.github.sds100.keymapper.base.sorting.SortBottomSheet import io.github.sds100.keymapper.base.trigger.DpadTriggerSetupBottomSheet import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel import io.github.sds100.keymapper.base.trigger.TriggerError import io.github.sds100.keymapper.base.utils.ShareUtils -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.CollapsableFloatingActionButton import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperTapTarget import io.github.sds100.keymapper.base.utils.ui.compose.keyMapperShowcaseStyle import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe +import io.github.sds100.keymapper.base.utils.ui.drawable +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.system.files.FileUtils @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -306,7 +305,7 @@ fun HandleImportExportState( setIdleState: () -> Unit, onConfirmImport: (RestoreType) -> Unit, ) { - when (state) { + when (val state = state) { is ImportExportState.Error -> { val text = stringResource(R.string.home_export_error_snackbar, state.error) LaunchedEffect(state) { @@ -332,7 +331,13 @@ fun HandleImportExportState( is ImportExportState.FinishedExport -> { snackbarState.currentSnackbarData?.dismiss() - LocalActivity.current?.let { ShareUtils.shareFile(it, state.uri.toUri()) } + LocalActivity.current?.let { + ShareUtils.shareFile( + it, + state.uri.toUri(), + packageName = LocalContext.current.packageName, + ) + } setIdleState() } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt deleted file mode 100644 index f588cb2b68..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeScreen.kt +++ /dev/null @@ -1,189 +0,0 @@ -package io.github.sds100.keymapper.base.home - -import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.EnterTransition -import androidx.compose.animation.ExitTransition -import androidx.compose.animation.slideInVertically -import androidx.compose.animation.slideOutVertically -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Badge -import androidx.compose.material3.BadgedBox -import androidx.compose.material3.Icon -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.NavigationBar -import androidx.compose.material3.NavigationBarItem -import androidx.compose.material3.SnackbarHostState -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.unit.dp -import androidx.lifecycle.compose.collectAsStateWithLifecycle -import androidx.navigation.NavDestination.Companion.hierarchy -import androidx.navigation.NavGraph.Companion.findStartDestination -import androidx.navigation.NavHostController -import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable -import androidx.navigation.compose.currentBackStackEntryAsState -import androidx.navigation.compose.rememberNavController -import io.github.sds100.keymapper.base.utils.ui.SelectionState - -@Composable -fun HomeScreen( - modifier: Modifier = Modifier, - viewModel: BaseHomeViewModel, - onSettingsClick: () -> Unit, - onAboutClick: () -> Unit, - finishActivity: () -> Unit, - startDestination: HomeDestination = HomeDestination.KeyMaps, -) { - val navController = rememberNavController() - val navBarItems by viewModel.navBarItems.collectAsStateWithLifecycle() - - val snackbarState = remember { SnackbarHostState() } - val selectionState by viewModel.keyMapListViewModel.multiSelectProvider.state.collectAsStateWithLifecycle() - - HomeScreen( - modifier = modifier, - isSelectingKeyMaps = selectionState is SelectionState.Selecting, - startDestination = startDestination, - navController = navController, - navBarItems = navBarItems, - keyMapsContent = { - HomeKeyMapListScreen( - viewModel = viewModel.keyMapListViewModel, - snackbarState = snackbarState, - onSettingsClick = onSettingsClick, - onAboutClick = onAboutClick, - finishActivity = finishActivity, - fabBottomPadding = if (navBarItems.size == 1) { - 0.dp - } else { - 80.dp - }, - ) - }, - floatingButtonsContent = { - HomeFloatingLayoutsScreen( - viewModel = viewModel.listFloatingLayoutsViewModel, - navController = navController, - snackbarState = snackbarState, - fabBottomPadding = if (navBarItems.size == 1) { - 0.dp - } else { - 80.dp - }, - ) - }, - ) -} - -@Composable -private fun HomeScreen( - modifier: Modifier = Modifier, - isSelectingKeyMaps: Boolean, - startDestination: HomeDestination = HomeDestination.KeyMaps, - navController: NavHostController, - navBarItems: List, - keyMapsContent: @Composable () -> Unit, - floatingButtonsContent: @Composable () -> Unit, -) { - val navBackStackEntry by navController.currentBackStackEntryAsState() - val currentDestination = navBackStackEntry?.destination - - Column(modifier) { - Box(contentAlignment = Alignment.BottomCenter) { - NavHost( - modifier = Modifier.fillMaxSize(), - contentAlignment = Alignment.TopCenter, - navController = navController, - startDestination = startDestination.route, - // use no animations because otherwise the transition freezes - // when quickly navigating to another page while the transition is still happening. - enterTransition = { EnterTransition.None }, - exitTransition = { ExitTransition.None }, - ) { - composable(HomeDestination.KeyMaps.route) { - keyMapsContent() - } - composable(HomeDestination.FloatingButtons.route) { - floatingButtonsContent() - } - } - - this@Column.AnimatedVisibility( - visible = !isSelectingKeyMaps && navBarItems.size > 1, - enter = slideInVertically { it }, - exit = slideOutVertically { it }, - ) { - NavigationBar { - navBarItems.forEach { item -> - NavigationBarItem( - icon = { - if (item.badge == null) { - Icon(item.icon, contentDescription = null) - } else { - BadgedBox( - badge = { - Badge( - modifier = Modifier - .height(22.dp) - .padding(start = 10.dp), - containerColor = MaterialTheme.colorScheme.primary, - contentColor = MaterialTheme.colorScheme.onPrimary, - ) { - Text( - modifier = Modifier.padding(horizontal = 2.dp), - text = item.badge, - style = MaterialTheme.typography.labelLarge, - ) - } - }, - ) { - Icon(item.icon, contentDescription = null) - } - } - }, - label = { - Text( - item.label, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - ) - }, - selected = currentDestination?.hierarchy?.any { it.route == item.destination.route } == true, - onClick = { - // don't do anything if clicking on the current - // destination because this results in some ugly animations. - if (currentDestination?.route == item.destination.route) { - return@NavigationBarItem - } - - navController.navigate(item.destination.route) { - // Pop up to the start destination of the graph to - // avoid building up a large stack of destinations - // on the back stack as users select items - popUpTo(navController.graph.findStartDestination().id) { - saveState = true - } - // Avoid multiple copies of the same destination when - // reselecting the same item - launchSingleTop = true - // Restore state when re-selecting a previously selected item - restoreState = true - } - }, - ) - } - } - } - } - } -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapFragment.kt new file mode 100644 index 0000000000..d981e60868 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapFragment.kt @@ -0,0 +1,67 @@ +package io.github.sds100.keymapper.base.keymaps + +import android.os.Bundle +import android.view.View +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.navArgs +import androidx.navigation.navGraphViewModels +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.keymaps.ConfigKeyMapFragmentArgs + +abstract class BaseConfigKeyMapFragment : Fragment() { + + private val args by navArgs() + + val viewModel: ConfigKeyMapViewModel by navGraphViewModels(R.id.nav_config_keymap) + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + // only load the keymap if opening this fragment for the first time + if (savedInstanceState == null) { + args.keyMapUid.also { keyMapUid -> + if (keyMapUid == null) { + viewModel.loadNewKeymap( + args.newFloatingButtonTriggerKey, + groupUid = args.groupUid, + ) + } else { + viewModel.loadKeyMap(keyMapUid) + } + } + + if (args.showAdvancedTriggers) { + viewModel.configTriggerViewModel.showAdvancedTriggersBottomSheet = true + } + } + + viewModel.configTriggerViewModel.setupNavigation(this) + viewModel.configActionsViewModel.setupNavigation(this) + viewModel.configConstraintsViewModel.setupNavigation(this) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + viewModel.configTriggerViewModel.showPopups(this, view) + viewModel.configTriggerViewModel.optionsViewModel.showPopups(this, view) + viewModel.configActionsViewModel.showPopups(this, view) + viewModel.configConstraintsViewModel.showPopups(this, view) + } + + override fun onSaveInstanceState(outState: Bundle) { + viewModel.saveState(outState) + + super.onSaveInstanceState(outState) + } + + override fun onViewStateRestored(savedInstanceState: Bundle?) { + super.onViewStateRestored(savedInstanceState) + + savedInstanceState ?: return + + viewModel.restoreState(savedInstanceState) + } +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapScreen.kt similarity index 87% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapScreen.kt index 1fc37b669d..06517591d7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapScreen.kt @@ -19,7 +19,6 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.rounded.ArrowBack import androidx.compose.material.icons.automirrored.rounded.HelpOutline import androidx.compose.material.icons.rounded.Check -import androidx.compose.material3.AlertDialog import androidx.compose.material3.BottomAppBar import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExtendedFloatingActionButton @@ -36,13 +35,11 @@ import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Switch import androidx.compose.material3.Tab import androidx.compose.material3.Text -import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -53,89 +50,18 @@ import androidx.compose.ui.tooling.preview.Devices import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.canopas.lib.showcase.IntroShowcase import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.actions.ActionsScreen import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.constraints.ConstraintsScreen import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget -import io.github.sds100.keymapper.base.trigger.TriggerScreen import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperTapTarget import io.github.sds100.keymapper.base.utils.ui.compose.keyMapperShowcaseStyle import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe import kotlinx.coroutines.launch -@Composable -fun ConfigKeyMapScreen( - modifier: Modifier = Modifier, - viewModel: ConfigKeyMapViewModel, - navigateBack: () -> Unit, -) { - val isKeyMapEnabled by viewModel.isEnabled.collectAsStateWithLifecycle() - val showActionTapTarget by viewModel.showActionsTapTarget.collectAsStateWithLifecycle() - val showConstraintTapTarget by viewModel.showConstraintsTapTarget.collectAsStateWithLifecycle() - - val snackbarHostState = remember { SnackbarHostState() } - - var showBackDialog by rememberSaveable { mutableStateOf(false) } - - if (showBackDialog) { - BackDialog( - onDismiss = { showBackDialog = false }, - onDiscardClick = { - showBackDialog = false - navigateBack() - }, - ) - } - - ConfigKeyMapScreen( - modifier = modifier, - isKeyMapEnabled = isKeyMapEnabled, - onKeyMapEnabledChange = viewModel::onEnabledChanged, - triggerScreen = { - TriggerScreen(Modifier.fillMaxSize(), viewModel.configTriggerViewModel) - }, - actionScreen = { - ActionsScreen(Modifier.fillMaxSize(), viewModel.configActionsViewModel) - }, - constraintsScreen = { - ConstraintsScreen( - Modifier.fillMaxSize(), - viewModel.configConstraintsViewModel, - snackbarHostState, - ) - }, - optionsScreen = { - KeyMapOptionsScreen( - Modifier.fillMaxSize(), - viewModel.configTriggerViewModel.optionsViewModel, - ) - }, - onBackClick = { - if (viewModel.isKeyMapEdited) { - showBackDialog = true - } else { - navigateBack() - } - }, - onDoneClick = { - viewModel.save() - navigateBack() - }, - snackbarHostState = snackbarHostState, - showActionTapTarget = showActionTapTarget, - onActionTapTargetCompleted = viewModel::onActionTapTargetCompleted, - showConstraintTapTarget = showConstraintTapTarget, - onConstraintTapTargetCompleted = viewModel::onConstraintTapTargetCompleted, - onSkipTutorialClick = viewModel::onSkipTutorialClick, - ) -} - @OptIn(ExperimentalMaterial3Api::class) @Composable -private fun ConfigKeyMapScreen( +fun BaseConfigKeyMapScreen( modifier: Modifier = Modifier, isKeyMapEnabled: Boolean, onKeyMapEnabledChange: (Boolean) -> Unit = {}, @@ -581,24 +507,6 @@ private fun ScreenCard( } } -@Composable -private fun BackDialog( - onDismiss: () -> Unit, - onDiscardClick: () -> Unit, -) { - AlertDialog( - onDismissRequest = onDismiss, - title = { Text(stringResource(R.string.dialog_title_unsaved_changes)) }, - text = { Text(stringResource(R.string.dialog_message_unsaved_changes)) }, - confirmButton = { - TextButton(onClick = onDiscardClick) { Text(stringResource(R.string.pos_discard_changes)) } - }, - dismissButton = { - TextButton(onClick = onDismiss) { Text(stringResource(R.string.neg_keep_editing)) } - }, - ) -} - private fun determineTabs(maxWidth: Dp, maxHeight: Dp): List { return when { maxWidth >= 800.dp && maxHeight >= 800.dp -> listOf(ConfigKeyMapTab.ALL) @@ -645,7 +553,7 @@ private enum class ConfigKeyMapTab { @Composable private fun SmallScreenPreview() { KeyMapperTheme { - ConfigKeyMapScreen( + BaseConfigKeyMapScreen( modifier = Modifier.fillMaxSize(), isKeyMapEnabled = false, triggerScreen = {}, @@ -660,7 +568,7 @@ private fun SmallScreenPreview() { @Composable private fun MediumScreenPreview() { KeyMapperTheme { - ConfigKeyMapScreen( + BaseConfigKeyMapScreen( modifier = Modifier.fillMaxSize(), isKeyMapEnabled = true, triggerScreen = {}, @@ -675,7 +583,7 @@ private fun MediumScreenPreview() { @Composable private fun MediumScreenLandscapePreview() { KeyMapperTheme { - ConfigKeyMapScreen( + BaseConfigKeyMapScreen( modifier = Modifier.fillMaxSize(), isKeyMapEnabled = true, triggerScreen = {}, @@ -690,7 +598,7 @@ private fun MediumScreenLandscapePreview() { @Composable private fun LargeScreenPreview() { KeyMapperTheme { - ConfigKeyMapScreen( + BaseConfigKeyMapScreen( modifier = Modifier.fillMaxSize(), isKeyMapEnabled = true, triggerScreen = {}, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt deleted file mode 100644 index 148579b5aa..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapFragment.kt +++ /dev/null @@ -1,113 +0,0 @@ -package io.github.sds100.keymapper.base.keymaps - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.WindowInsetsSides -import androidx.compose.foundation.layout.add -import androidx.compose.foundation.layout.displayCutout -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.only -import androidx.compose.foundation.layout.systemBars -import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.ViewCompositionStrategy -import androidx.fragment.app.Fragment -import androidx.navigation.findNavController -import androidx.navigation.fragment.navArgs -import androidx.navigation.navGraphViewModels -import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.utils.Inject -import io.github.sds100.keymapper.base.utils.ui.setupNavigation -import io.github.sds100.keymapper.base.utils.ui.showPopups - -class ConfigKeyMapFragment : Fragment() { - - private val args by navArgs() - - private val viewModel: ConfigKeyMapViewModel by navGraphViewModels(R.id.nav_config_keymap) { - Inject.configKeyMapViewModel(requireContext()) - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - // only load the keymap if opening this fragment for the first time - if (savedInstanceState == null) { - args.keyMapUid.also { keyMapUid -> - if (keyMapUid == null) { - viewModel.loadNewKeymap( - args.newFloatingButtonTriggerKey, - groupUid = args.groupUid, - ) - } else { - viewModel.loadKeyMap(keyMapUid) - } - } - - if (args.showAdvancedTriggers) { - viewModel.configTriggerViewModel.showAdvancedTriggersBottomSheet = true - } - } - - viewModel.configTriggerViewModel.setupNavigation(this) - viewModel.configActionsViewModel.setupNavigation(this) - viewModel.configConstraintsViewModel.setupNavigation(this) - } - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle?, - ): View { - FragmentComposeBinding.inflate(inflater, container, false).apply { - composeView.apply { - // Dispose of the Composition when the view's LifecycleOwner - // is destroyed - setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) - setContent { - KeyMapperTheme { - ConfigKeyMapScreen( - modifier = Modifier - .windowInsetsPadding( - WindowInsets.systemBars.only(sides = WindowInsetsSides.Horizontal) - .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), - ) - .fillMaxSize(), - viewModel = viewModel, - navigateBack = findNavController()::navigateUp, - ) - } - } - } - return this.root - } - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - viewModel.configTriggerViewModel.showPopups(this, view) - viewModel.configTriggerViewModel.optionsViewModel.showPopups(this, view) - viewModel.configActionsViewModel.showPopups(this, view) - viewModel.configConstraintsViewModel.showPopups(this, view) - } - - override fun onSaveInstanceState(outState: Bundle) { - viewModel.saveState(outState) - - super.onSaveInstanceState(outState) - } - - override fun onViewStateRestored(savedInstanceState: Bundle?) { - super.onViewStateRestored(savedInstanceState) - - savedInstanceState ?: return - - viewModel.restoreState(savedInstanceState) - } -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt index 99b546ecee..6ec4b4a4b4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt @@ -24,9 +24,9 @@ import javax.inject.Inject @HiltViewModel class ConfigKeyMapViewModel @Inject constructor( - private val configActionsViewModel: ConfigActionsViewModel, - private val configTriggerViewModel: BaseConfigTriggerViewModel, - private val configConstraintsViewModel: ConfigConstraintsViewModel, + val configActionsViewModel: ConfigActionsViewModel, + val configTriggerViewModel: BaseConfigTriggerViewModel, + val configConstraintsViewModel: ConfigConstraintsViewModel, private val config: ConfigKeyMapUseCase, private val onboarding: OnboardingUseCase, ) : ViewModel() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt index bab0bf1eed..66b9d37eed 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutActivity.kt @@ -9,23 +9,54 @@ import androidx.appcompat.app.AppCompatActivity import androidx.compose.ui.graphics.toArgb import androidx.lifecycle.Lifecycle import androidx.navigation.findNavController +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.ServiceLocator import io.github.sds100.keymapper.base.compose.ComposeColors import io.github.sds100.keymapper.base.compose.KeyMapperTheme +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapterImpl import io.github.sds100.keymapper.base.system.permissions.RequestPermissionDelegate -import io.github.sds100.keymapper.base.utils.Inject -import io.github.sds100.keymapper.base.utils.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.trigger.RecordTriggerController +import io.github.sds100.keymapper.base.utils.ui.ResourceProviderImpl +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.BuildConfigProvider +import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapterImpl +import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter import kotlinx.coroutines.flow.collectLatest +import javax.inject.Inject +@AndroidEntryPoint class CreateKeyMapShortcutActivity : AppCompatActivity() { - private val viewModel by viewModels { - Inject.createActionShortcutViewModel(this) - } + @Inject + lateinit var permissionAdapter: AndroidPermissionAdapter + + @Inject + lateinit var serviceAdapter: AccessibilityServiceAdapterImpl + + @Inject + lateinit var resourceProvider: ResourceProviderImpl + + @Inject + lateinit var onboardingUseCase: OnboardingUseCase + + @Inject + lateinit var recordTriggerController: RecordTriggerController + + @Inject + lateinit var notificationReceiverAdapter: NotificationReceiverAdapterImpl + + @Inject + lateinit var shizukuAdapter: ShizukuAdapter + + @Inject + lateinit var buildConfigProvider: BuildConfigProvider private lateinit var requestPermissionDelegate: RequestPermissionDelegate + private val viewModel by viewModels() + override fun onCreate(savedInstanceState: Bundle?) { enableEdgeToEdge( statusBarStyle = SystemBarStyle.auto( @@ -48,10 +79,17 @@ class CreateKeyMapShortcutActivity : AppCompatActivity() { } } - requestPermissionDelegate = RequestPermissionDelegate(this, showDialogs = true) + requestPermissionDelegate = RequestPermissionDelegate( + this, + showDialogs = true, + permissionAdapter, + notificationReceiverAdapter = notificationReceiverAdapter, + buildConfigProvider = buildConfigProvider, + shizukuAdapter = shizukuAdapter, + ) launchRepeatOnLifecycle(Lifecycle.State.STARTED) { - ServiceLocator.permissionAdapter(this@CreateKeyMapShortcutActivity).request + permissionAdapter.request .collectLatest { permission -> requestPermissionDelegate.requestPermission( permission, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt index a21a322c20..312ce38e5e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt @@ -11,7 +11,6 @@ import androidx.compose.material.icons.automirrored.rounded.ArrowBack import androidx.compose.material.icons.outlined.Add import androidx.compose.material.icons.outlined.FlashlightOn import androidx.compose.material.icons.outlined.Lock -import androidx.compose.material3.AlertDialog import androidx.compose.material3.CenterAlignedTopAppBar import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -38,7 +37,6 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.groups.GroupBreadcrumbRow @@ -46,11 +44,13 @@ import io.github.sds100.keymapper.base.groups.GroupListItemModel import io.github.sds100.keymapper.base.groups.GroupRow import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel import io.github.sds100.keymapper.base.trigger.TriggerError -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.ui.drawable +import io.github.sds100.keymapper.base.utils.ui.UnsavedChangesDialog import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.CustomDialog +import io.github.sds100.keymapper.base.utils.ui.drawable +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.State @Composable fun CreateKeyMapShortcutScreen( @@ -92,7 +92,7 @@ private fun CreateKeyMapShortcutScreen( var showBackDialog by rememberSaveable { mutableStateOf(false) } if (showBackDialog) { - BackDialog( + UnsavedChangesDialog( onDismiss = { showBackDialog = false }, onDiscardClick = finishActivity, ) @@ -203,24 +203,6 @@ private fun CreateKeyMapShortcutScreen( } } -@Composable -private fun BackDialog( - onDismiss: () -> Unit, - onDiscardClick: () -> Unit, -) { - AlertDialog( - onDismissRequest = onDismiss, - title = { Text(stringResource(R.string.dialog_title_unsaved_changes)) }, - text = { Text(stringResource(R.string.dialog_message_unsaved_changes)) }, - confirmButton = { - TextButton(onClick = onDiscardClick) { Text(stringResource(R.string.pos_discard_changes)) } - }, - dismissButton = { - TextButton(onClick = onDismiss) { Text(stringResource(R.string.neg_keep_editing)) } - }, - ) -} - @Composable private fun ShortcutNameDialog( onSaveClick: (name: String) -> Unit = { }, @@ -439,14 +421,6 @@ private fun PreviewEmpty() { } } -@Preview -@Composable -private fun BackDialogPreview() { - KeyMapperTheme { - BackDialog(onDismiss = {}, onDiscardClick = {}) - } -} - @Preview @Composable private fun ShortcutNameDialogPreview() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt index a71df793ee..6cd3a6de42 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt @@ -4,10 +4,9 @@ import android.content.Intent import android.graphics.drawable.Drawable import androidx.core.os.bundleOf import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.api.Api +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.system.apps.AppShortcutAdapter -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import javax.inject.Inject import javax.inject.Singleton @@ -17,6 +16,12 @@ class CreateKeyMapShortcutUseCaseImpl @Inject constructor( private val resourceProvider: ResourceProvider ) : CreateKeyMapShortcutUseCase { + companion object { + private const val ACTION_TRIGGER_KEYMAP_BY_UID = + "io.github.sds100.keymapper.ACTION_TRIGGER_KEYMAP_BY_UID" + private const val EXTRA_KEYMAP_UID = "io.github.sds100.keymapper.EXTRA_KEYMAP_UID" + } + override val isSupported: Boolean get() = appShortcutAdapter.areLauncherShortcutsSupported @@ -29,15 +34,15 @@ class CreateKeyMapShortcutUseCaseImpl @Inject constructor( appShortcutAdapter.createLauncherShortcut( iconResId = R.mipmap.ic_launcher_round, label = shortcutLabel, - intentAction = Api.ACTION_TRIGGER_KEYMAP_BY_UID, - bundleOf(Api.EXTRA_KEYMAP_UID to keyMapUid), + intentAction = ACTION_TRIGGER_KEYMAP_BY_UID, + bundleOf(EXTRA_KEYMAP_UID to keyMapUid), ) } else { appShortcutAdapter.createLauncherShortcut( icon = icon, label = shortcutLabel, - intentAction = Api.ACTION_TRIGGER_KEYMAP_BY_UID, - bundleOf(Api.EXTRA_KEYMAP_UID to keyMapUid), + intentAction = ACTION_TRIGGER_KEYMAP_BY_UID, + bundleOf(EXTRA_KEYMAP_UID to keyMapUid), ) } return appShortcutAdapter.pinShortcut(shortcut) @@ -52,15 +57,15 @@ class CreateKeyMapShortcutUseCaseImpl @Inject constructor( appShortcutAdapter.createLauncherShortcut( iconResId = R.mipmap.ic_launcher_round, label = shortcutLabel, - intentAction = Api.ACTION_TRIGGER_KEYMAP_BY_UID, - bundleOf(Api.EXTRA_KEYMAP_UID to keyMapUid), + intentAction = ACTION_TRIGGER_KEYMAP_BY_UID, + bundleOf(EXTRA_KEYMAP_UID to keyMapUid), ) } else { appShortcutAdapter.createLauncherShortcut( icon = icon, label = shortcutLabel, - intentAction = Api.ACTION_TRIGGER_KEYMAP_BY_UID, - bundleOf(Api.EXTRA_KEYMAP_UID to keyMapUid), + intentAction = ACTION_TRIGGER_KEYMAP_BY_UID, + bundleOf(EXTRA_KEYMAP_UID to keyMapUid), ) } return appShortcutAdapter.createShortcutResultIntent(shortcut) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index 452e610e69..f8bd124c3b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -3,34 +3,33 @@ package io.github.sds100.keymapper.base.keymaps import android.graphics.drawable.Drawable import io.github.sds100.keymapper.base.actions.DisplayActionUseCase import io.github.sds100.keymapper.base.actions.GetActionErrorUseCase +import io.github.sds100.keymapper.base.constraints.DisplayConstraintUseCase +import io.github.sds100.keymapper.base.constraints.GetConstraintErrorUseCase +import io.github.sds100.keymapper.base.purchasing.ProductId +import io.github.sds100.keymapper.base.purchasing.PurchasingError +import io.github.sds100.keymapper.base.purchasing.PurchasingManager +import io.github.sds100.keymapper.base.trigger.TriggerError +import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.common.utils.otherwise import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.common.utils.valueIfFailure -import io.github.sds100.keymapper.base.constraints.DisplayConstraintUseCase -import io.github.sds100.keymapper.base.constraints.GetConstraintErrorUseCase import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.base.purchasing.ProductId -import io.github.sds100.keymapper.base.purchasing.PurchasingError -import io.github.sds100.keymapper.base.purchasing.PurchasingManager -import io.github.sds100.keymapper.system.shizuku.ShizukuUtils +import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.SystemError +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter -import io.github.sds100.keymapper.system.ringtone.RingtoneAdapter -import io.github.sds100.keymapper.base.trigger.TriggerError -import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.dataOrNull -import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuUtils import kotlinx.coroutines.TimeoutCancellationException import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.callbackFlow @@ -116,7 +115,7 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( } override val showDeviceDescriptors: Flow = - settingsRepository2.get(Keys.showDeviceDescriptors).map { it == true } + settingsRepository.get(Keys.showDeviceDescriptors).map { it == true } override fun neverShowTriggerKeyboardIconExplanation() { settingsRepository.set(Keys.neverShowTriggerKeyboardIconExplanation, true) @@ -198,7 +197,7 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( override fun restartAccessibilityService(): Boolean = accessibilityServiceAdapter.restart() override fun neverShowDndTriggerError() { - settingsRepository2.set(Keys.neverShowDndAccessError, true) + settingsRepository.set(Keys.neverShowDndAccessError, true) } override fun getRingtoneLabel(uri: String): Result { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt index f57fe873e1..c0e05384aa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMap.kt @@ -8,12 +8,12 @@ import io.github.sds100.keymapper.base.actions.canBeHeldDown import io.github.sds100.keymapper.base.constraints.ConstraintEntityMapper import io.github.sds100.keymapper.base.constraints.ConstraintModeEntityMapper import io.github.sds100.keymapper.base.constraints.ConstraintState -import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout -import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.base.keymaps.detection.KeyMapController import io.github.sds100.keymapper.base.trigger.Trigger import io.github.sds100.keymapper.base.trigger.TriggerEntityMapper import io.github.sds100.keymapper.base.trigger.TriggerKey +import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout +import io.github.sds100.keymapper.data.entities.KeyMapEntity import kotlinx.serialization.Serializable import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt index 9a28a6c99b..d2b56debf0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapAppBarState.kt @@ -2,8 +2,8 @@ package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.groups.GroupListItemModel -import io.github.sds100.keymapper.home.HomeWarningListItem -import io.github.sds100.keymapper.home.SelectedKeyMapsEnabled +import io.github.sds100.keymapper.base.home.HomeWarningListItem +import io.github.sds100.keymapper.base.home.SelectedKeyMapsEnabled import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel sealed class KeyMapAppBarState { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt index 58b6b7a8e6..29e32530ae 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt @@ -6,12 +6,10 @@ import androidx.compose.material.icons.outlined.Add import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionErrorSnapshot import io.github.sds100.keymapper.base.actions.ActionUiHelper -import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.base.constraints.ConstraintErrorSnapshot import io.github.sds100.keymapper.base.constraints.ConstraintState import io.github.sds100.keymapper.base.constraints.ConstraintUiHelper -import io.github.sds100.keymapper.system.devices.InputDeviceUtils -import io.github.sds100.keymapper.system.inputevents.InputEventUtils +import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType import io.github.sds100.keymapper.base.trigger.AssistantTriggerKey import io.github.sds100.keymapper.base.trigger.AssistantTriggerType import io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey @@ -22,10 +20,13 @@ import io.github.sds100.keymapper.base.trigger.Trigger import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.base.trigger.TriggerKeyDevice import io.github.sds100.keymapper.base.trigger.TriggerMode +import io.github.sds100.keymapper.base.utils.InputEventStrings +import io.github.sds100.keymapper.base.utils.isFixable import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.system.devices.InputDeviceUtils class KeyMapListItemCreator( private val displayMapping: DisplayKeyMapUseCase, @@ -250,7 +251,7 @@ class KeyMapListItemCreator( else -> Unit } - append(InputEventUtils.keyCodeToString(key.keyCode)) + append(InputEventStrings.keyCodeToString(key.keyCode)) val deviceName = when (key.device) { is TriggerKeyDevice.Internal -> null diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt index 8b31dae82d..6fc9754cf9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt @@ -16,6 +16,7 @@ import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.text.InlineTextContent import androidx.compose.foundation.text.appendInlineContent @@ -53,17 +54,17 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel import io.github.sds100.keymapper.base.trigger.TriggerError -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.CompactChip import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.ErrorCompactChip +import io.github.sds100.keymapper.base.utils.ui.drawable +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.State @Composable fun KeyMapList( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index 079025ffc2..013a882172 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -8,38 +8,25 @@ import io.github.sds100.keymapper.base.actions.ActionErrorSnapshot import io.github.sds100.keymapper.base.backup.BackupRestoreMappingsUseCase import io.github.sds100.keymapper.base.backup.ImportExportState import io.github.sds100.keymapper.base.backup.RestoreType -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result -import io.github.sds100.keymapper.common.utils.Success -import io.github.sds100.keymapper.common.utils.onFailure -import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.base.constraints.ConstraintErrorSnapshot import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.constraints.ConstraintUiHelper import io.github.sds100.keymapper.base.groups.Group import io.github.sds100.keymapper.base.groups.GroupFamily import io.github.sds100.keymapper.base.groups.GroupListItemModel -import io.github.sds100.keymapper.home.HomeWarningListItem -import io.github.sds100.keymapper.home.SelectedKeyMapsEnabled -import io.github.sds100.keymapper.home.ShowHomeScreenAlertsUseCase +import io.github.sds100.keymapper.base.home.HomeWarningListItem +import io.github.sds100.keymapper.base.home.SelectedKeyMapsEnabled +import io.github.sds100.keymapper.base.home.ShowHomeScreenAlertsUseCase import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase -import io.github.sds100.keymapper.sorting.SortKeyMapsUseCase -import io.github.sds100.keymapper.sorting.SortViewModel -import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState -import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase -import io.github.sds100.keymapper.system.permissions.Permission +import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase +import io.github.sds100.keymapper.base.sorting.SortViewModel import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardState import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.trigger.TriggerError import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.common.utils.ifIsData -import io.github.sds100.keymapper.common.utils.mapData import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider import io.github.sds100.keymapper.base.utils.ui.NavDestination @@ -55,6 +42,19 @@ import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.common.utils.ifIsData +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.system.SystemError +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState +import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase +import io.github.sds100.keymapper.system.permissions.Permission import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -78,12 +78,12 @@ import kotlinx.coroutines.launch @OptIn(ExperimentalCoroutinesApi::class) class KeyMapListViewModel( private val coroutineScope: CoroutineScope, - private val listKeyMaps: io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCase, + private val listKeyMaps: ListKeyMapsUseCase, resourceProvider: ResourceProvider, private val setupGuiKeyboard: SetupGuiKeyboardUseCase, private val sortKeyMaps: SortKeyMapsUseCase, private val showAlertsUseCase: ShowHomeScreenAlertsUseCase, - private val pauseKeyMaps: io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase, + private val pauseKeyMaps: PauseKeyMapsUseCase, private val backupRestore: BackupRestoreMappingsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val onboarding: OnboardingUseCase, @@ -105,15 +105,15 @@ class KeyMapListViewModel( val multiSelectProvider: MultiSelectProvider = MultiSelectProvider() private val listItemCreator = - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListItemCreator( + KeyMapListItemCreator( listKeyMaps, resourceProvider ) private val constraintUiHelper = ConstraintUiHelper(listKeyMaps, resourceProvider) private val initialState = - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListState( - appBarState = _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.RootGroup( + KeyMapListState( + appBarState = KeyMapAppBarState.RootGroup( subGroups = emptyList(), warnings = emptyList(), isPaused = false, @@ -121,7 +121,7 @@ class KeyMapListViewModel( listItems = State.Loading, showCreateKeyMapTapTarget = false, ) - private val _state: MutableStateFlow = MutableStateFlow(initialState) + private val _state: MutableStateFlow = MutableStateFlow(initialState) val state = _state.asStateFlow() var showFabText: Boolean by mutableStateOf(true) @@ -143,7 +143,7 @@ class KeyMapListViewModel( private val keyMapGroupStateFlow = listKeyMaps.keyMapGroup.stateIn( coroutineScope, SharingStarted.Eagerly, - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapGroup( + KeyMapGroup( group = null, subGroups = emptyList(), keyMaps = State.Loading, @@ -172,7 +172,7 @@ class KeyMapListViewModel( AccessibilityServiceState.CRASHED -> add( HomeWarningListItem( - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM, + ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM, getString(R.string.home_error_accessibility_service_is_crashed), ), ) @@ -180,7 +180,7 @@ class KeyMapListViewModel( AccessibilityServiceState.DISABLED -> add( HomeWarningListItem( - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM, + ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM, getString(R.string.home_error_accessibility_service_is_disabled), ), ) @@ -191,7 +191,7 @@ class KeyMapListViewModel( if (isBatteryOptimised) { add( HomeWarningListItem( - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_BATTERY_OPTIMISATION_LIST_ITEM, + ID_BATTERY_OPTIMISATION_LIST_ITEM, getString(R.string.home_error_is_battery_optimised), ), ) @@ -200,7 +200,7 @@ class KeyMapListViewModel( if (showNotificationPermissionAlert) { add( HomeWarningListItem( - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_NOTIFICATION_PERMISSION_DENIED_LIST_ITEM, + ID_NOTIFICATION_PERMISSION_DENIED_LIST_ITEM, getString(R.string.home_error_notification_permission), ), ) @@ -209,7 +209,7 @@ class KeyMapListViewModel( if (isLoggingEnabled) { add( HomeWarningListItem( - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_LOGGING_ENABLED_LIST_ITEM, + ID_LOGGING_ENABLED_LIST_ITEM, getString(R.string.home_error_logging_enabled), ), ) @@ -317,7 +317,7 @@ class KeyMapListViewModel( ) @OptIn(ExperimentalCoroutinesApi::class) - val appBarStateFlow: Flow = + val appBarStateFlow: Flow = multiSelectProvider.state.flatMapLatest { selectionState -> when (selectionState) { is SelectionState.Selecting -> selectionAppBarState @@ -348,7 +348,7 @@ class KeyMapListViewModel( } _state.value = - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListState( + KeyMapListState( appBarState, listState, showCreateKeyMapTapTarget @@ -364,12 +364,12 @@ class KeyMapListViewModel( } private fun buildSelectingAppBarState( - keyMapGroup: io.github.sds100.keymapper.base.keymaps.KeyMapGroup, + keyMapGroup: KeyMapGroup, selectionState: SelectionState.Selecting, groupListItems: List, breadcrumbListItems: List, showThisGroup: Boolean, - ): io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.Selecting { + ): KeyMapAppBarState.Selecting { var selectedKeyMapsEnabled: SelectedKeyMapsEnabled? = null val keyMaps = keyMapGroup.keyMaps.dataOrNull() ?: emptyList() @@ -392,7 +392,7 @@ class KeyMapListViewModel( } } - return _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.Selecting( + return KeyMapAppBarState.Selecting( selectionCount = selectionState.selectedIds.size, selectedKeyMapsEnabled = selectedKeyMapsEnabled ?: SelectedKeyMapsEnabled.NONE, isAllSelected = selectionState.selectedIds.size == keyMaps.size, @@ -403,12 +403,12 @@ class KeyMapListViewModel( } private fun buildGroupAppBarState( - keyMapGroup: _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapGroup, + keyMapGroup: KeyMapGroup, warnings: List, isPaused: Boolean, constraintErrorSnapshot: ConstraintErrorSnapshot, isEditingGroupName: Boolean, - ): _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState { + ): KeyMapAppBarState { val subGroupListItems = keyMapGroup.subGroups.map { group -> buildGroupListItem(group) } @@ -422,13 +422,13 @@ class KeyMapListViewModel( } if (keyMapGroup.group == null) { - return _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.RootGroup( + return KeyMapAppBarState.RootGroup( subGroups = subGroupListItems, warnings = warnings, isPaused = isPaused, ) } else { - return _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.ChildGroup( + return KeyMapAppBarState.ChildGroup( groupName = keyMapGroup.group.name, constraints = listItemCreator.buildConstraintChipList( keyMapGroup.group.constraintState, @@ -589,7 +589,7 @@ class KeyMapListViewModel( fun onSelectAllClick() { state.value.also { state -> - if (state.appBarState is _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.Selecting) { + if (state.appBarState is KeyMapAppBarState.Selecting) { if (state.appBarState.isAllSelected) { multiSelectProvider.stopSelecting() } else { @@ -676,7 +676,7 @@ class KeyMapListViewModel( fun onFixWarningClick(id: String) { coroutineScope.launch { when (id) { - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM -> { + ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM -> { val explanationResponse = ViewModelHelper.showAccessibilityServiceExplanationDialog( resourceProvider = this@KeyMapListViewModel, @@ -695,7 +695,7 @@ class KeyMapListViewModel( } } - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM -> + ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM -> ViewModelHelper.handleKeyMapperCrashedDialog( resourceProvider = this@KeyMapListViewModel, popupViewModel = this@KeyMapListViewModel, @@ -703,9 +703,9 @@ class KeyMapListViewModel( ignoreCrashed = showAlertsUseCase::acknowledgeCrashed, ) - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_BATTERY_OPTIMISATION_LIST_ITEM -> showAlertsUseCase.disableBatteryOptimisation() - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_LOGGING_ENABLED_LIST_ITEM -> showAlertsUseCase.disableLogging() - _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel.Companion.ID_NOTIFICATION_PERMISSION_DENIED_LIST_ITEM -> showNotificationPermissionAlertDialog() + ID_BATTERY_OPTIMISATION_LIST_ITEM -> showAlertsUseCase.disableBatteryOptimisation() + ID_LOGGING_ENABLED_LIST_ITEM -> showAlertsUseCase.disableLogging() + ID_NOTIFICATION_PERMISSION_DENIED_LIST_ITEM -> showNotificationPermissionAlertDialog() } } } @@ -795,7 +795,7 @@ class KeyMapListViewModel( return true } - state.value.appBarState is _root_ide_package_.io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState.ChildGroup -> { + state.value.appBarState is KeyMapAppBarState.ChildGroup -> { if (!isEditingGroupName.value) { coroutineScope.launch { listKeyMaps.popGroup() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt index 2c6a85be63..6cba2d33b4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt @@ -5,24 +5,24 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.backup.BackupManager import io.github.sds100.keymapper.base.backup.BackupManagerImpl import io.github.sds100.keymapper.base.backup.BackupUtils -import io.github.sds100.keymapper.common.utils.Result -import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.base.constraints.Constraint import io.github.sds100.keymapper.base.constraints.ConstraintEntityMapper import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.constraints.ConstraintModeEntityMapper -import io.github.sds100.keymapper.data.entities.GroupEntity -import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository -import io.github.sds100.keymapper.data.repositories.GroupRepository -import io.github.sds100.keymapper.data.repositories.RepositoryUtils import io.github.sds100.keymapper.base.groups.Group import io.github.sds100.keymapper.base.groups.GroupEntityMapper import io.github.sds100.keymapper.base.groups.GroupFamily -import io.github.sds100.keymapper.system.files.FileAdapter +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.dataOrNull -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.data.entities.GroupEntity +import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository +import io.github.sds100.keymapper.data.repositories.GroupRepository import io.github.sds100.keymapper.data.repositories.KeyMapRepository +import io.github.sds100.keymapper.data.repositories.RepositoryUtils +import io.github.sds100.keymapper.system.files.FileAdapter import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow @@ -229,13 +229,14 @@ class ListKeyMapsUseCaseImpl( override suspend fun popGroup() { val currentGroupUid = keyMapListGroupUid.value ?: return val currentGroup = groupRepository.getGroup(currentGroupUid) + val parentUid = currentGroup?.parentUid // If stuck in a non existent group, or the parent is null then pop to the root. - if (currentGroup?.parentUid == null) { + if (parentUid == null) { setCurrentGroup(null) } else { // Check if the group exists. - val group = groupRepository.getGroup(currentGroup.parentUid) ?: return + val group = groupRepository.getGroup(parentUid) ?: return setCurrentGroup(group.uid) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt index 2bb81cf600..598007c90e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt @@ -3,13 +3,12 @@ package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.media.MediaAdapter -import io.github.sds100.keymapper.system.ringtone.RingtoneAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter -import javax.inject.Inject -import javax.inject.Singleton import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import timber.log.Timber +import javax.inject.Inject +import javax.inject.Singleton @Singleton class PauseKeyMapsUseCaseImpl @Inject constructor( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt index df0b59f33d..0da1229d11 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DpadMotionEventTracker.kt @@ -33,7 +33,7 @@ class DpadMotionEventTracker { * @return whether to consume the key event. */ fun onKeyEvent(event: MyKeyEvent): Boolean { - event.device ?: return false + val device = event.device ?: return false if (!InputEventUtils.isDpadKeyCode(event.keyCode)) { return false @@ -47,7 +47,7 @@ class DpadMotionEventTracker { else -> return false } - val dpadState = dpadState[event.device.descriptor] ?: return false + val dpadState = dpadState[device.descriptor] ?: return false if (dpadState == 0) { return false diff --git a/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt similarity index 91% rename from base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt index 0282d6605e..1688a88f59 100644 --- a/base/src/free/java/io/github/sds100/keymapper/keymaps/detection/KeyMapController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps.detection +package io.github.sds100.keymapper.base.keymaps.detection import android.view.KeyEvent import androidx.collection.SparseArrayCompat @@ -11,23 +11,28 @@ import io.github.sds100.keymapper.base.constraints.ConstraintSnapshot import io.github.sds100.keymapper.base.constraints.ConstraintState import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.constraints.isSatisfied -import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.base.keymaps.ClickType -import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType -import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.system.inputevents.MyKeyEvent -import io.github.sds100.keymapper.system.inputevents.MyMotionEvent +import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType +import io.github.sds100.keymapper.base.trigger.AssistantTriggerKey +import io.github.sds100.keymapper.base.trigger.AssistantTriggerType import io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey +import io.github.sds100.keymapper.base.trigger.FloatingButtonKey import io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.base.trigger.Trigger import io.github.sds100.keymapper.base.trigger.TriggerKey import io.github.sds100.keymapper.base.trigger.TriggerKeyDevice import io.github.sds100.keymapper.base.trigger.TriggerMode -import io.github.sds100.keymapper.base.utils.Error +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.InputEventType -import io.github.sds100.keymapper.base.utils.Result +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.minusFlag +import io.github.sds100.keymapper.common.utils.withFlag +import io.github.sds100.keymapper.data.PreferenceDefaults +import io.github.sds100.keymapper.data.entities.ActionEntity +import io.github.sds100.keymapper.system.inputevents.InputEventUtils +import io.github.sds100.keymapper.system.inputevents.MyKeyEvent +import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay @@ -36,8 +41,6 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -import splitties.bitflags.minusFlag -import splitties.bitflags.withFlag class KeyMapController( private val coroutineScope: CoroutineScope, @@ -65,9 +68,6 @@ class KeyMapController( trigger.mode is TriggerMode.Parallel } - /** - * A cached copy of the keymaps in the database - */ private fun loadKeyMaps(value: List) { actionMap.clear() @@ -115,47 +115,45 @@ class KeyMapController( for ((triggerIndex, model) in validKeyMaps.withIndex()) { val keyMap = model.keyMap // TRIGGER STUFF - keyMap.trigger.keys - .filter { it is KeyCodeTriggerKey || it is FingerprintTriggerKey } - .forEachIndexed { keyIndex, key -> - if (key is KeyCodeTriggerKey && key.detectionSource == KeyEventDetectionSource.INPUT_METHOD && key.consumeEvent) { - triggerKeysThatSendRepeatedKeyEvents.add(key) - } - - if (keyMap.trigger.mode == TriggerMode.Sequence && - key.clickType == ClickType.LONG_PRESS && - key is KeyCodeTriggerKey - ) { - if (keyMap.trigger.keys.size > 1) { - longPressSequenceTriggerKeys.add(key) - } - } + keyMap.trigger.keys.forEachIndexed { keyIndex, key -> + if (key is KeyCodeTriggerKey && key.detectionSource == KeyEventDetectionSource.INPUT_METHOD && key.consumeEvent) { + triggerKeysThatSendRepeatedKeyEvents.add(key) + } - if (keyMap.trigger.mode !is TriggerMode.Parallel && - key.clickType == ClickType.DOUBLE_PRESS - ) { - doublePressKeys.add(TriggerKeyLocation(triggerIndex, keyIndex)) + if (keyMap.trigger.mode == TriggerMode.Sequence && + key.clickType == ClickType.LONG_PRESS && + key is KeyCodeTriggerKey + ) { + if (keyMap.trigger.keys.size > 1) { + longPressSequenceTriggerKeys.add(key) } + } - when (key) { - is KeyCodeTriggerKey -> when (key.device) { - TriggerKeyDevice.Internal -> { - detectInternalEvents = true - } + if (keyMap.trigger.mode !is TriggerMode.Parallel && + key.clickType == ClickType.DOUBLE_PRESS + ) { + doublePressKeys.add(TriggerKeyLocation(triggerIndex, keyIndex)) + } - TriggerKeyDevice.Any -> { - detectInternalEvents = true - detectExternalEvents = true - } + when (key) { + is KeyCodeTriggerKey -> when (key.device) { + TriggerKeyDevice.Internal -> { + detectInternalEvents = true + } - is TriggerKeyDevice.External -> { - detectExternalEvents = true - } + TriggerKeyDevice.Any -> { + detectInternalEvents = true + detectExternalEvents = true } - else -> {} + is TriggerKeyDevice.External -> { + detectExternalEvents = true + } } + + else -> {} } + } val encodedActionList = encodeActionList(keyMap.actionList) @@ -644,6 +642,7 @@ class KeyMapController( deviceId = device.id, scanCode = keyEvent.scanCode, repeatCount = keyEvent.repeatCount, + source = keyEvent.source, ) } else { KeyCodeEvent( @@ -653,6 +652,7 @@ class KeyMapController( deviceId = device?.id ?: 0, scanCode = keyEvent.scanCode, repeatCount = keyEvent.repeatCount, + source = keyEvent.source, ) } @@ -722,11 +722,21 @@ class KeyMapController( // consume the event if the trigger contains this keycode. for (key in triggerKeys) { when { + key is AssistantTriggerKey && event is AssistantEvent -> + if (key.consumeEvent) { + consumeEvent = true + } + key is FingerprintTriggerKey && event is FingerprintGestureEvent -> if (key.consumeEvent) { consumeEvent = true } + key is FloatingButtonKey && event is FloatingButtonEvent -> + if (key.consumeEvent) { + consumeEvent = true + } + key is KeyCodeTriggerKey && event is KeyCodeEvent -> if (key.keyCode == event.keyCode && key.consumeEvent) { consumeEvent = true @@ -938,15 +948,21 @@ class KeyMapController( keyCodesToImitateUpAction.add(event.keyCode) useCase.imitateButtonPress( - event.keyCode, - metaStateFromKeyEvent.withFlag(metaStateFromActions), - event.deviceId, - InputEventType.DOWN, - event.scanCode, + keyCode = event.keyCode, + metaState = metaStateFromKeyEvent.withFlag(metaStateFromActions), + deviceId = event.deviceId, + inputEventType = InputEventType.DOWN, + scanCode = event.scanCode, + source = event.source, ) coroutineScope.launch { - repeatImitatingKey(event.keyCode, event.deviceId, event.scanCode) + repeatImitatingKey( + keyCode = event.keyCode, + deviceId = event.deviceId, + scanCode = event.scanCode, + source = event.source, + ) } } @@ -1092,9 +1108,9 @@ class KeyMapController( triggers[eventLocation.triggerIndex].keys[eventLocation.keyIndex] val triggerIndex = eventLocation.triggerIndex - val constraintStates = triggerConstraints[triggerIndex] + val constraintState = triggerConstraints[triggerIndex] - if (!constraintSnapshot.isSatisfied(*constraintStates)) continue + if (!constraintSnapshot.isSatisfied(*constraintState)) continue if (lastMatchedEventIndices[triggerIndex] != eventLocation.keyIndex - 1) continue @@ -1142,10 +1158,10 @@ class KeyMapController( triggerLoop@ for (triggerIndex in sequenceTriggers) { val trigger = triggers[triggerIndex] - val constraintStates = triggerConstraints[triggerIndex] + val constraintState = triggerConstraints[triggerIndex] val lastMatchedEventIndex = lastMatchedEventIndices[triggerIndex] - if (!constraintSnapshot.isSatisfied(*constraintStates)) continue + if (!constraintSnapshot.isSatisfied(*constraintState)) continue // the index of the next event to match in the trigger val nextIndex = lastMatchedEventIndex + 1 @@ -1424,6 +1440,7 @@ class KeyMapController( event.keyCode, inputEventType = InputEventType.DOWN_UP, scanCode = event.scanCode, + source = event.source, ) } } @@ -1443,11 +1460,12 @@ class KeyMapController( } useCase.imitateButtonPress( - event.keyCode, - metaStateFromKeyEvent.withFlag(metaStateFromActions), - event.deviceId, - keyEventAction, - event.scanCode, + keyCode = event.keyCode, + metaState = metaStateFromKeyEvent.withFlag(metaStateFromActions), + deviceId = event.deviceId, + inputEventType = keyEventAction, + scanCode = event.scanCode, + source = event.source, ) keyCodesToImitateUpAction.remove(event.keyCode) @@ -1456,12 +1474,28 @@ class KeyMapController( return consumeEvent } + fun onAssistantEvent(type: AssistantTriggerType) { + val event = AssistantEvent(type, clickType = null) + onKeyDown(event) + onKeyUp(event) + } + fun onFingerprintGesture(type: FingerprintGestureType) { val event = FingerprintGestureEvent(type, clickType = null) onKeyDown(event) onKeyUp(event) } + fun onFloatingButtonDown(buttonUid: String) { + val event = FloatingButtonEvent(buttonUid, clickType = null) + onKeyDown(event) + } + + fun onFloatingButtonUp(buttonUid: String) { + val event = FloatingButtonEvent(buttonUid, clickType = null) + onKeyUp(event) + } + fun reset() { lastMatchedEventIndices = IntArray(triggers.size) { -1 } @@ -1519,10 +1553,6 @@ class KeyMapController( performActionsOnFailedDoublePress.clear() - if (showToast) { - useCase.showTriggeredToast() - } - detectedTriggerIndexes.forEach { triggerIndex -> parallelTriggerActionPerformers[triggerIndex]?.onTriggered( calledOnTriggerRelease = true, @@ -1562,16 +1592,22 @@ class KeyMapController( throw Exception("Action $action not in the action map!") } - private suspend fun repeatImitatingKey(keyCode: Int, deviceId: Int, scanCode: Int) { + private suspend fun repeatImitatingKey( + keyCode: Int, + deviceId: Int, + scanCode: Int, + source: Int, + ) { delay(400) while (keyCodesToImitateUpAction.contains(keyCode)) { useCase.imitateButtonPress( - keyCode, - metaStateFromKeyEvent.withFlag(metaStateFromActions), - deviceId, - InputEventType.DOWN, - scanCode, + keyCode = keyCode, + metaState = metaStateFromKeyEvent.withFlag(metaStateFromActions), + deviceId = deviceId, + inputEventType = InputEventType.DOWN, + scanCode = scanCode, + source = source, ) // use down action because this is what Android does delay(50) @@ -1656,8 +1692,16 @@ class KeyMapController( event.descriptor == null && this.clickType == event.clickType } + } else if (this is AssistantTriggerKey && event is AssistantEvent) { + return if (this.type == AssistantTriggerType.ANY || event.type == AssistantTriggerType.ANY) { + this.clickType == event.clickType + } else { + this.type == event.type && this.clickType == event.clickType + } } else if (this is FingerprintTriggerKey && event is FingerprintGestureEvent) { return this.type == event.type && this.clickType == event.clickType + } else if (this is FloatingButtonKey && event is FloatingButtonEvent) { + return this.buttonUid == event.buttonUid && this.clickType == event.clickType } else { return false } @@ -1680,6 +1724,10 @@ class KeyMapController( otherKey.device == TriggerKeyDevice.Internal && this.clickType == otherKey.clickType } + } else if (this is AssistantTriggerKey && otherKey is AssistantTriggerKey) { + return this.type == otherKey.type && this.clickType == otherKey.clickType + } else if (this is FloatingButtonKey && otherKey is FloatingButtonKey) { + return this.buttonUid == otherKey.buttonUid && this.clickType == otherKey.clickType } else if (this is FingerprintTriggerKey && otherKey is FingerprintTriggerKey) { return this.type == otherKey.type && this.clickType == otherKey.clickType } else { @@ -1743,6 +1791,8 @@ class KeyMapController( fun setClickType(clickType: ClickType?): Event = when (this) { is KeyCodeEvent -> this.copy(clickType = clickType) + is AssistantEvent -> this.copy(clickType = clickType) + is FloatingButtonEvent -> this.copy(clickType = clickType) is FingerprintGestureEvent -> this.copy(clickType = clickType) } } @@ -1757,6 +1807,12 @@ class KeyMapController( val deviceId: Int, val scanCode: Int, val repeatCount: Int, + val source: Int, + ) : Event() + + private data class AssistantEvent( + val type: AssistantTriggerType, + override val clickType: ClickType?, ) : Event() private data class FingerprintGestureEvent( @@ -1764,5 +1820,10 @@ class KeyMapController( override val clickType: ClickType?, ) : Event() + private data class FloatingButtonEvent( + val buttonUid: String, + override val clickType: ClickType?, + ) : Event() + private data class TriggerKeyLocation(val triggerIndex: Int, val keyIndex: Int) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt index 76e95e9be9..861b6522df 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/KeyMapperLoggingTree.kt @@ -1,7 +1,10 @@ package io.github.sds100.keymapper.base.logging import android.util.Log +import io.github.sds100.keymapper.data.Keys +import io.github.sds100.keymapper.data.entities.LogEntryEntity import io.github.sds100.keymapper.data.repositories.LogRepository +import io.github.sds100.keymapper.data.repositories.PreferenceRepository import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.channels.BufferOverflow @@ -17,17 +20,16 @@ import timber.log.Timber import java.util.Calendar import javax.inject.Inject -@Inject -class KeyMapperLoggingTree constructor( +class KeyMapperLoggingTree @Inject constructor( private val coroutineScope: CoroutineScope, - preferenceRepository: io.github.sds100.keymapper.data.repositories.PreferenceRepository, + preferenceRepository: PreferenceRepository, private val logRepository: LogRepository, ) : Timber.Tree() { - private val logEverything: StateFlow = preferenceRepository.get(io.github.sds100.keymapper.data.Keys.log) + private val logEverything: StateFlow = preferenceRepository.get(Keys.log) .map { it ?: false } .stateIn(coroutineScope, SharingStarted.Eagerly, false) - private val messagesToLog = MutableSharedFlow( + private val messagesToLog = MutableSharedFlow( extraBufferCapacity = 1000, onBufferOverflow = BufferOverflow.SUSPEND, ) @@ -48,14 +50,14 @@ class KeyMapperLoggingTree constructor( } val severity = when (priority) { - Log.ERROR -> io.github.sds100.keymapper.data.entities.LogEntryEntity.SEVERITY_ERROR - Log.DEBUG -> io.github.sds100.keymapper.data.entities.LogEntryEntity.SEVERITY_DEBUG - Log.INFO -> io.github.sds100.keymapper.data.entities.LogEntryEntity.SEVERITY_INFO - else -> io.github.sds100.keymapper.data.entities.LogEntryEntity.SEVERITY_DEBUG + Log.ERROR -> LogEntryEntity.SEVERITY_ERROR + Log.DEBUG -> LogEntryEntity.SEVERITY_DEBUG + Log.INFO -> LogEntryEntity.SEVERITY_INFO + else -> LogEntryEntity.SEVERITY_DEBUG } messagesToLog.tryEmit( - io.github.sds100.keymapper.data.entities.LogEntryEntity( + LogEntryEntity( id = 0, time = Calendar.getInstance().timeInMillis, severity = severity, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt index 99c6d56601..636761883e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt @@ -14,24 +14,22 @@ import com.airbnb.epoxy.EpoxyRecyclerView import com.airbnb.epoxy.TypedEpoxyController import com.michaelflisar.dragselectrecyclerview.DragSelectTouchListener import com.michaelflisar.dragselectrecyclerview.DragSelectionProcessor +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBinding -import io.github.sds100.keymapper.logEntry -import io.github.sds100.keymapper.system.files.FileUtils -import io.github.sds100.keymapper.base.utils.Inject -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.logEntry import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest - +@AndroidEntryPoint class LogFragment : SimpleRecyclerViewFragment() { - private val viewModel by viewModels { - Inject.logViewModel(requireContext()) - } + private val viewModel: LogViewModel by viewModels() override val listItems: Flow>> get() = viewModel.listItems diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt index 1a7a66d1ff..82ed755bc1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -1,13 +1,14 @@ package io.github.sds100.keymapper.base.reroutekeyevents import android.os.Build +import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector +import io.github.sds100.keymapper.common.BuildConfigProvider +import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper -import io.github.sds100.keymapper.common.utils.firstBlocking import kotlinx.coroutines.flow.map import kotlinx.coroutines.runBlocking import javax.inject.Inject @@ -23,6 +24,7 @@ class RerouteKeyEventsUseCaseImpl @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, private val keyMapperImeMessenger: ImeInputEventInjector, private val preferenceRepository: PreferenceRepository, + private val buildConfigProvider: BuildConfigProvider, ) : RerouteKeyEventsUseCase { private val rerouteKeyEvents = @@ -31,7 +33,12 @@ class RerouteKeyEventsUseCaseImpl @Inject constructor( private val devicesToRerouteKeyEvents = preferenceRepository.get(Keys.devicesToRerouteKeyEvents).map { it ?: emptyList() } - private val imeHelper by lazy { KeyMapperImeHelper(inputMethodAdapter) } + private val imeHelper by lazy { + KeyMapperImeHelper( + inputMethodAdapter, + buildConfigProvider.packageName, + ) + } override fun shouldRerouteKeyEvent(descriptor: String?): Boolean { if (Build.VERSION.SDK_INT != Build.VERSION_CODES.R) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt index f00271e269..d2dbb7e411 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt @@ -6,19 +6,21 @@ import androidx.lifecycle.Lifecycle import androidx.preference.Preference import androidx.preference.SwitchPreference import androidx.preference.isEmpty +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.system.leanback.LeanbackUtils -import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.base.utils.ui.drawable -import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.base.utils.ui.ChooseAppStoreModel import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.drawable +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope +import io.github.sds100.keymapper.data.Keys +import io.github.sds100.keymapper.system.leanback.LeanbackUtils +import io.github.sds100.keymapper.system.url.UrlUtils import kotlinx.coroutines.flow.collectLatest +@AndroidEntryPoint class Android11BugWorkaroundSettingsFragment : BaseSettingsFragment() { companion object { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt index 8cdbe429cf..a52487e9f3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/AutomaticallyChangeImeSettings.kt @@ -8,11 +8,11 @@ import androidx.preference.Preference import androidx.preference.SwitchPreferenceCompat import androidx.preference.isEmpty import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.system.notifications.NotificationController +import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.base.system.notifications.NotificationController import io.github.sds100.keymapper.system.notifications.NotificationUtils -import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope class AutomaticallyChangeImeSettings : BaseSettingsFragment() { @@ -130,7 +130,6 @@ class AutomaticallyChangeImeSettings : BaseSettingsFragment() { NotificationUtils.openChannelSettings( ctx = requireContext(), - packageName = requireContext().packageName!!, channelId = NotificationController.CHANNEL_TOGGLE_KEYBOARD, ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt index e6d76166dd..0282b8d81d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt @@ -6,21 +6,20 @@ import androidx.activity.addCallback import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding -import androidx.fragment.app.activityViewModels +import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import androidx.preference.PreferenceFragmentCompat import com.google.android.material.bottomappbar.BottomAppBar +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.system.url.UrlUtils -import io.github.sds100.keymapper.base.utils.Inject -import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.str +import io.github.sds100.keymapper.system.url.UrlUtils +@AndroidEntryPoint abstract class BaseSettingsFragment : PreferenceFragmentCompat() { - val viewModel by activityViewModels { - Inject.settingsViewModel(requireContext()) - } + protected val viewModel: SettingsViewModel by viewModels() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt index 124f5de5d6..545fd8ec11 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt @@ -3,12 +3,12 @@ package io.github.sds100.keymapper.base.settings import androidx.datastore.preferences.core.Preferences import io.github.sds100.keymapper.base.actions.sound.SoundFileInfo import io.github.sds100.keymapper.base.actions.sound.SoundsManager +import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter -import io.github.sds100.keymapper.system.shizuku.ShizukuUtils import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo @@ -18,14 +18,16 @@ import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuUtils import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.map +import javax.inject.Inject -class ConfigSettingsUseCaseImpl( +class ConfigSettingsUseCaseImpl @Inject constructor( private val preferences: PreferenceRepository, private val permissionAdapter: PermissionAdapter, private val inputMethodAdapter: InputMethodAdapter, @@ -34,9 +36,15 @@ class ConfigSettingsUseCaseImpl( private val packageManagerAdapter: PackageManagerAdapter, private val shizukuAdapter: ShizukuAdapter, private val devicesAdapter: DevicesAdapter, + private val buildConfigProvider: BuildConfigProvider, ) : ConfigSettingsUseCase { - private val imeHelper by lazy { KeyMapperImeHelper(inputMethodAdapter) } + private val imeHelper by lazy { + KeyMapperImeHelper( + inputMethodAdapter, + buildConfigProvider.packageName, + ) + } override val isRootGranted: Flow = suAdapter.isGranted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt index d63a96b9af..7434fe2fce 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt @@ -3,12 +3,8 @@ package io.github.sds100.keymapper.base.settings import androidx.datastore.preferences.core.Preferences import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.onFailure -import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.common.utils.otherwise -import io.github.sds100.keymapper.base.utils.SharedPrefsDataStoreWrapper -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem @@ -17,23 +13,27 @@ import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.common.utils.otherwise +import io.github.sds100.keymapper.data.utils.SharedPrefsDataStoreWrapper import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject @HiltViewModel class SettingsViewModel @Inject constructor( private val useCase: ConfigSettingsUseCase, - private val resourceProvider: ResourceProvider + private val resourceProvider: ResourceProvider, + val sharedPrefsDataStoreWrapper: SharedPrefsDataStoreWrapper, ) : ViewModel(), PopupViewModel by PopupViewModelImpl(), ResourceProvider by resourceProvider { - val sharedPrefsDataStoreWrapper = SharedPrefsDataStoreWrapper(useCase) val automaticBackupLocation = useCase.automaticBackupLocation diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt index 1806f0380a..04472c50c2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt @@ -1,14 +1,14 @@ package io.github.sds100.keymapper.base.sorting -import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap -import io.github.sds100.keymapper.sorting.comparators.KeyMapActionsComparator -import io.github.sds100.keymapper.sorting.comparators.KeyMapConstraintsComparator -import io.github.sds100.keymapper.sorting.comparators.KeyMapOptionsComparator -import io.github.sds100.keymapper.sorting.comparators.KeyMapTriggerComparator -import io.github.sds100.keymapper.base.utils.SettingsRepository +import io.github.sds100.keymapper.base.sorting.comparators.KeyMapActionsComparator +import io.github.sds100.keymapper.base.sorting.comparators.KeyMapConstraintsComparator +import io.github.sds100.keymapper.base.sorting.comparators.KeyMapOptionsComparator +import io.github.sds100.keymapper.base.sorting.comparators.KeyMapTriggerComparator +import io.github.sds100.keymapper.data.Keys +import io.github.sds100.keymapper.data.repositories.PreferenceRepository +import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlinx.serialization.json.Json import javax.inject.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt index 7f7df4d1c6..5305a5816e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt @@ -4,17 +4,16 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBinding -import io.github.sds100.keymapper.fixError +import io.github.sds100.keymapper.base.fixError import io.github.sds100.keymapper.base.simple -import io.github.sds100.keymapper.base.utils.Inject -import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.ListItem import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment import io.github.sds100.keymapper.base.utils.ui.TextListItem +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest @@ -27,9 +26,7 @@ class ChooseBluetoothDeviceFragment : SimpleRecyclerViewFragment() { private val args: ChooseBluetoothDeviceFragmentArgs by navArgs() - private val viewModel: ChooseBluetoothDeviceViewModel by viewModels { - Inject.chooseBluetoothDeviceViewModel(requireContext()) - } + private val viewModel: ChooseBluetoothDeviceViewModel by viewModels() override val listItems: Flow>> get() = viewModel.listItems diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapterImpl.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapterImpl.kt index c7efe6d173..c8f6afbac8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapterImpl.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapterImpl.kt @@ -11,6 +11,7 @@ import android.os.Looper import android.provider.Settings import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.common.BuildConfigProvider +import io.github.sds100.keymapper.common.KeyMapperClassProvider import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success @@ -19,10 +20,10 @@ import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.JobSchedulerHelper import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter -import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState +import io.github.sds100.keymapper.system.permissions.Permission +import io.github.sds100.keymapper.system.permissions.PermissionAdapter import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableSharedFlow @@ -42,7 +43,8 @@ class AccessibilityServiceAdapterImpl @Inject constructor( @ApplicationContext context: Context, private val coroutineScope: CoroutineScope, private val permissionAdapter: PermissionAdapter, - private val buildConfigProvider: BuildConfigProvider + private val buildConfigProvider: BuildConfigProvider, + private val classProvider: KeyMapperClassProvider, ) : AccessibilityServiceAdapter { private val ctx = context.applicationContext @@ -51,7 +53,7 @@ class AccessibilityServiceAdapterImpl @Inject constructor( val eventsToService = MutableSharedFlow() override val state = MutableStateFlow(AccessibilityServiceState.DISABLED) - + init { // use job scheduler because there is there is a much shorter delay when the app is in the background if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { @@ -125,11 +127,11 @@ class AccessibilityServiceAdapterImpl @Inject constructor( delay(100) Timber.d("Ping service to check if crashed") - eventsToService.emit(E.Ping(key)) + eventsToService.emit(AccessibilityServiceEvent.Ping(key)) } - val pong: E.Pong? = withTimeoutOrNull(2000L) { - eventReceiver.first { it == E.Pong(key) } as E.Pong? + val pong: AccessibilityServiceEvent.Pong? = withTimeoutOrNull(2000L) { + eventReceiver.first { it == AccessibilityServiceEvent.Pong(key) } as AccessibilityServiceEvent.Pong? } if (pong == null) { @@ -197,7 +199,7 @@ class AccessibilityServiceAdapterImpl @Inject constructor( private suspend fun disableServiceSuspend() { // disableSelf method only exists in 7.0.0+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - send(E.DisableService).onSuccess { + send(AccessibilityServiceEvent.DisableService).onSuccess { Timber.i("Disabling service by calling disableSelf()") return @@ -216,7 +218,7 @@ class AccessibilityServiceAdapterImpl @Inject constructor( enabledServices ?: return - val className = io.github.sds100.keymapper.system.accessibility.MyAccessibilityService::class.java.name + val className = classProvider.getAccessibilityService().name val keyMapperEntry = "${buildConfigProvider.packageName}/$className" @@ -247,13 +249,13 @@ class AccessibilityServiceAdapterImpl @Inject constructor( val pingJob = coroutineScope.launch { repeat(20) { - eventsToService.emit(E.Ping(key)) + eventsToService.emit(AccessibilityServiceEvent.Ping(key)) delay(100) } } - val pong: E.Pong? = withTimeoutOrNull(2000L) { - eventReceiver.first { it == E.Pong(key) } as E.Pong? + val pong: AccessibilityServiceEvent.Pong? = withTimeoutOrNull(2000L) { + eventReceiver.first { it == AccessibilityServiceEvent.Pong(key) } as AccessibilityServiceEvent.Pong? } pingJob.cancel() @@ -275,7 +277,7 @@ class AccessibilityServiceAdapterImpl @Inject constructor( } } - fun updateServiceState() { + override fun invalidateState() { coroutineScope.launch { state.value = getState() } @@ -290,9 +292,9 @@ class AccessibilityServiceAdapterImpl @Inject constructor( Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, ) - val className = io.github.sds100.keymapper.system.accessibility.MyAccessibilityService::class.java.name + val className = classProvider.getAccessibilityService().name - val keyMapperEntry = "${Constants.PACKAGE_NAME}/$className" + val keyMapperEntry = "${buildConfigProvider.packageName}/$className" val newEnabledServices = when { enabledServices.isNullOrBlank() -> keyMapperEntry diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceUtils.kt index 8377bc7aaa..900f46c2bf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceUtils.kt @@ -1,278 +1,7 @@ package io.github.sds100.keymapper.base.system.accessibility -import android.accessibilityservice.AccessibilityService -import android.accessibilityservice.AccessibilityService.SHOW_MODE_AUTO -import android.accessibilityservice.AccessibilityService.SHOW_MODE_HIDDEN -import android.accessibilityservice.GestureDescription -import android.accessibilityservice.GestureDescription.StrokeDescription -import android.annotation.SuppressLint -import android.graphics.Path -import android.graphics.Point import android.os.Build import android.view.accessibility.AccessibilityNodeInfo -import androidx.core.os.bundleOf -import io.github.sds100.keymapper.common.utils.InputEventType -import io.github.sds100.keymapper.common.utils.MathUtils -import io.github.sds100.keymapper.common.utils.PinchScreenType -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result -import io.github.sds100.keymapper.common.utils.Success - -fun AccessibilityService.performActionOnNode( - findNode: (node: AccessibilityNodeModel) -> Boolean, - performAction: (node: AccessibilityNodeModel) -> AccessibilityNodeAction?, -): Result<*> { - val node = rootInActiveWindow.findNodeRecursively { - findNode(it.toModel()) - } - - if (node == null) { - return Error.FailedToFindAccessibilityNode - } - - val (action, extras) = performAction(node.toModel()) ?: return Success(Unit) - - node.performAction(action, bundleOf(*extras.toList().toTypedArray())) - node.recycle() - - return Success(Unit) -} - -fun AccessibilityService.hideKeyboard() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - softKeyboardController.showMode = SHOW_MODE_HIDDEN - } -} - -fun AccessibilityService.showKeyboard() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - softKeyboardController.showMode = SHOW_MODE_AUTO - } -} - -fun AccessibilityService.switchIme(imeId: String) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - softKeyboardController.switchToInputMethod(imeId) - } -} - -fun AccessibilityService.doGlobalAction(action: Int): Result<*> { - val success = performGlobalAction(action) - - if (success) { - return Success(Unit) - } else { - return Error.FailedToPerformAccessibilityGlobalAction(action) - } -} - -fun AccessibilityService.findFocussedNode(focus: Int): AccessibilityNodeModel? = findFocus(focus)?.toModel() - -fun AccessibilityService.setInputMethodEnabled(imeId: String, enabled: Boolean) { - @SuppressLint("CheckResult") - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - softKeyboardController.setInputMethodEnabled(imeId, enabled) - } -} - -fun AccessibilityService.pinchScreen( - x: Int, - y: Int, - distance: Int, - pinchType: PinchScreenType, - fingerCount: Int, - duration: Int, -): Result<*> { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - if (fingerCount >= GestureDescription.getMaxStrokeCount()) { - return Error.GestureStrokeCountTooHigh - } - if (duration >= GestureDescription.getMaxGestureDuration()) { - return Error.GestureDurationTooHigh - } - - val gestureBuilder = GestureDescription.Builder() - val distributedPoints: List = - MathUtils.distributePointsOnCircle(Point(x, y), distance.toFloat() / 2, fingerCount) - - for (index in distributedPoints.indices) { - val p = Path() - if (pinchType == PinchScreenType.PINCH_IN) { - p.moveTo(x.toFloat(), y.toFloat()) - p.lineTo( - distributedPoints[index].x.toFloat(), - distributedPoints[index].y.toFloat(), - ) - } else { - p.moveTo( - distributedPoints[index].x.toFloat(), - distributedPoints[index].y.toFloat(), - ) - p.lineTo(x.toFloat(), y.toFloat()) - } - - gestureBuilder.addStroke(StrokeDescription(p, 0, duration.toLong())) - } - - val success = dispatchGesture(gestureBuilder.build(), null, null) - - return if (success) { - Success(Unit) - } else { - Error.FailedToDispatchGesture - } - } - - return Error.SdkVersionTooLow(Build.VERSION_CODES.N) -} - -fun AccessibilityService.tapScreen(x: Int, y: Int, inputEventType: InputEventType): Result<*> { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - val duration = 1L // ms - - val path = Path().apply { - moveTo(x.toFloat(), y.toFloat()) - } - - val strokeDescription = - when { - inputEventType == InputEventType.DOWN && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> - StrokeDescription( - path, - 0, - duration, - true, - ) - - inputEventType == InputEventType.UP && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> - StrokeDescription( - path, - 59999, - duration, - false, - ) - - else -> StrokeDescription(path, 0, duration) - } - - strokeDescription.let { - val gestureDescription = GestureDescription.Builder().apply { - addStroke(it) - }.build() - - val success = dispatchGesture(gestureDescription, null, null) - - return if (success) { - Success(Unit) - } else { - Error.FailedToDispatchGesture - } - } - } - - return Error.SdkVersionTooLow(Build.VERSION_CODES.N) -} - -fun AccessibilityService.swipeScreen( - xStart: Int, - yStart: Int, - xEnd: Int, - yEnd: Int, - fingerCount: Int, - duration: Int, -): Result<*> { - // virtual distance between fingers on multitouch gestures - val fingerGestureDistance = 10L - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - if (fingerCount >= GestureDescription.getMaxStrokeCount()) { - return Error.GestureStrokeCountTooHigh - } - if (duration >= GestureDescription.getMaxGestureDuration()) { - return Error.GestureDurationTooHigh - } - - val pStart = Point(xStart, yStart) - val pEnd = Point(xEnd, yEnd) - - val gestureBuilder = GestureDescription.Builder() - - if (fingerCount == 1) { - val p = Path() - p.moveTo(pStart.x.toFloat(), pStart.y.toFloat()) - p.lineTo(pEnd.x.toFloat(), pEnd.y.toFloat()) - gestureBuilder.addStroke(StrokeDescription(p, 0, duration.toLong())) - } else { - // segments between fingers - val segmentCount = fingerCount - 1 - // the line of the perpendicular line which will be created to place the virtual fingers on it - val perpendicularLineLength = (fingerGestureDistance * fingerCount).toInt() - - // the length of each segment between fingers - val segmentLength = perpendicularLineLength / segmentCount - // perpendicular line of the start swipe point - val perpendicularLineStart = MathUtils.getPerpendicularOfLine( - pStart, - pEnd, - perpendicularLineLength, - ) - // perpendicular line of the end swipe point - val perpendicularLineEnd = MathUtils.getPerpendicularOfLine( - pEnd, - pStart, - perpendicularLineLength, - true, - ) - - // this is the angle between start and end point to rotate all virtual fingers on the perpendicular lines in the same direction - val angle = - MathUtils.angleBetweenPoints(Point(xStart, yStart), Point(xEnd, yEnd)) - 90 - - // create the virtual fingers - for (index in 0..segmentCount) { - // offset of each finger - val fingerOffsetLength = index * segmentLength * 2 - // move the coordinates of the current virtual finger on the perpendicular line for the start coordinates - val startFingerCoordinateWithOffset = - MathUtils.movePointByDistanceAndAngle( - perpendicularLineStart.start, - fingerOffsetLength, - angle, - ) - // move the coordinates of the current virtual finger on the perpendicular line for the end coordinates - val endFingerCoordinateWithOffset = - MathUtils.movePointByDistanceAndAngle( - perpendicularLineEnd.start, - fingerOffsetLength, - angle, - ) - - // create a path for each finger, move the the coordinates on the perpendicular line and draw it to the end coordinates of the perpendicular line of the end swipe point - val p = Path() - p.moveTo( - startFingerCoordinateWithOffset.x.toFloat(), - startFingerCoordinateWithOffset.y.toFloat(), - ) - p.lineTo( - endFingerCoordinateWithOffset.x.toFloat(), - endFingerCoordinateWithOffset.y.toFloat(), - ) - - gestureBuilder.addStroke(StrokeDescription(p, 0, duration.toLong())) - } - } - - val success = dispatchGesture(gestureBuilder.build(), null, null) - - return if (success) { - Success(Unit) - } else { - Error.FailedToDispatchGesture - } - } - - return Error.SdkVersionTooLow(Build.VERSION_CODES.N) -} /** * @return The node to find. Returns null if the node doesn't match the predicate diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt index f820e6fe40..bc1c82f669 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt @@ -2,42 +2,54 @@ package io.github.sds100.keymapper.base.system.accessibility import android.accessibilityservice.AccessibilityService import android.accessibilityservice.FingerprintGestureController +import android.accessibilityservice.GestureDescription +import android.accessibilityservice.GestureDescription.StrokeDescription import android.app.ActivityManager import android.content.Intent import android.content.res.Configuration +import android.graphics.Path +import android.graphics.Point import android.os.Build import android.view.KeyEvent import android.view.MotionEvent import android.view.accessibility.AccessibilityEvent import androidx.core.content.getSystemService +import androidx.core.os.bundleOf import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry import androidx.savedstate.SavedStateRegistry import androidx.savedstate.SavedStateRegistryController import androidx.savedstate.SavedStateRegistryOwner -import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback -import io.github.sds100.keymapper.api.KeyEventRelayService -import io.github.sds100.keymapper.api.KeyEventRelayServiceWrapperImpl +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.InputEventType +import io.github.sds100.keymapper.common.utils.MathUtils +import io.github.sds100.keymapper.common.utils.PinchScreenType +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent -import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.base.utils.Inject +import io.github.sds100.keymapper.system.inputmethod.KeyEventRelayServiceWrapperImpl import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update import timber.log.Timber - - -class BaseAccessibilityService : +abstract class BaseAccessibilityService : AccessibilityService(), LifecycleOwner, IAccessibilityService, SavedStateRegistryOwner { + companion object { + + private const val CALLBACK_ID_ACCESSIBILITY_SERVICE = "accessibility_service" + } + private var lifecycleRegistry: LifecycleRegistry = LifecycleRegistry(this) private var savedStateRegistryController: SavedStateRegistryController? = SavedStateRegistryController.create(this) @@ -73,6 +85,12 @@ class BaseAccessibilityService : override val isKeyboardHidden: Flow get() = _isKeyboardHidden + override fun switchIme(imeId: String) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + softKeyboardController.switchToInputMethod(imeId) + } + } + override var serviceFlags: Int? get() = serviceInfo?.flags set(value) { @@ -120,8 +138,8 @@ class BaseAccessibilityService : val device = event.device?.let { InputDeviceUtils.createInputDeviceInfo(it) } - if (controller != null) { - return controller!!.onKeyEventFromIme( + return getController() + ?.onKeyEventFromIme( MyKeyEvent( keyCode = event.keyCode, action = event.action, @@ -131,32 +149,31 @@ class BaseAccessibilityService : repeatCount = event.repeatCount, source = event.source, ), - ) - } - - return false + ) ?: false } override fun onMotionEvent(event: MotionEvent?): Boolean { event ?: return false - if (controller != null) { - return controller!!.onMotionEventFromIme(MyMotionEvent.fromMotionEvent(event)) - } - - return false + return getController() + ?.onMotionEventFromIme(MyMotionEvent.fromMotionEvent(event)) + ?: return false } } private val keyEventRelayServiceWrapper: KeyEventRelayServiceWrapperImpl by lazy { KeyEventRelayServiceWrapperImpl( ctx = this, - id = KeyEventRelayService.CALLBACK_ID_ACCESSIBILITY_SERVICE, + id = CALLBACK_ID_ACCESSIBILITY_SERVICE, + servicePackageName = packageName, callback = relayServiceCallback, ) } - var controller: AccessibilityServiceController? = null + override val lifecycle: Lifecycle + get() = lifecycleRegistry + + abstract fun getController(): BaseAccessibilityServiceController? override fun onCreate() { super.onCreate() @@ -188,13 +205,6 @@ class BaseAccessibilityService : setTheme(R.style.AppTheme) _activeWindowPackage.update { rootInActiveWindow?.packageName?.toString() } - /* - I would put this in onCreate but for some reason on some devices getting the application - context would return null - */ - if (controller == null) { - controller = Inject.accessibilityServiceController(this, keyEventRelayServiceWrapper) - } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { fingerprintGestureCallback = @@ -217,7 +227,7 @@ class BaseAccessibilityService : else -> return } - controller?.onFingerprintGesture(id) + getController()?.onFingerprintGesture(id) } } @@ -225,8 +235,6 @@ class BaseAccessibilityService : fingerprintGestureController.registerFingerprintGestureCallback(it, null) } } - - controller?.onServiceConnected() } override fun onUnbind(intent: Intent?): Boolean { @@ -237,9 +245,6 @@ class BaseAccessibilityService : override fun onInterrupt() {} override fun onDestroy() { - controller?.onDestroy() - controller = null - lifecycleRegistry.currentState = Lifecycle.State.DESTROYED if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { @@ -257,7 +262,7 @@ class BaseAccessibilityService : override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) - controller?.onConfigurationChanged(newConfig) + getController()?.onConfigurationChanged(newConfig) } override fun onTrimMemory(level: Int) { @@ -276,7 +281,7 @@ class BaseAccessibilityService : _activeWindowPackage.update { rootInActiveWindow?.packageName?.toString() } } - controller?.onAccessibilityEvent(event) + getController()?.onAccessibilityEvent(event) } override fun onKeyEvent(event: KeyEvent?): Boolean { @@ -288,25 +293,270 @@ class BaseAccessibilityService : InputDeviceUtils.createInputDeviceInfo(event.device) } - if (controller != null) { - return controller!!.onKeyEvent( - MyKeyEvent( - keyCode = event.keyCode, - action = event.action, - metaState = event.metaState, - scanCode = event.scanCode, - device = device, - repeatCount = event.repeatCount, - source = event.source, - ), - KeyEventDetectionSource.ACCESSIBILITY_SERVICE, - ) + return getController()?.onKeyEvent( + MyKeyEvent( + keyCode = event.keyCode, + action = event.action, + metaState = event.metaState, + scanCode = event.scanCode, + device = device, + repeatCount = event.repeatCount, + source = event.source, + ), + KeyEventDetectionSource.ACCESSIBILITY_SERVICE, + ) ?: false + } + + override fun findFocussedNode(focus: Int): AccessibilityNodeModel? { + return findFocus(focus)?.toModel() + } + + override fun setInputMethodEnabled(imeId: String, enabled: Boolean) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + softKeyboardController.setInputMethodEnabled(imeId, enabled) + } + } + + override fun hideKeyboard() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + softKeyboardController.showMode = SHOW_MODE_HIDDEN } + } - return false + override fun showKeyboard() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + softKeyboardController.showMode = SHOW_MODE_AUTO + } } - override val lifecycle: Lifecycle - get() = lifecycleRegistry + override fun doGlobalAction(action: Int): Result<*> { + val success = performGlobalAction(action) + + if (success) { + return Success(Unit) + } else { + return Error.FailedToPerformAccessibilityGlobalAction(action) + } + } + + override fun tapScreen(x: Int, y: Int, inputEventType: InputEventType): Result<*> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + val duration = 1L // ms + + val path = Path().apply { + moveTo(x.toFloat(), y.toFloat()) + } + + val strokeDescription = + when { + inputEventType == InputEventType.DOWN && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> + StrokeDescription( + path, + 0, + duration, + true, + ) + + inputEventType == InputEventType.UP && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> + StrokeDescription( + path, + 59999, + duration, + false, + ) + + else -> StrokeDescription(path, 0, duration) + } + + strokeDescription.let { + val gestureDescription = GestureDescription.Builder().apply { + addStroke(it) + }.build() + val success = dispatchGesture(gestureDescription, null, null) + + return if (success) { + Success(Unit) + } else { + Error.FailedToDispatchGesture + } + } + } + + return Error.SdkVersionTooLow(Build.VERSION_CODES.N) + } + + override fun swipeScreen( + xStart: Int, + yStart: Int, + xEnd: Int, + yEnd: Int, + fingerCount: Int, + duration: Int, + inputEventType: InputEventType, + ): Result<*> { + // virtual distance between fingers on multitouch gestures + val fingerGestureDistance = 10L + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + if (fingerCount >= GestureDescription.getMaxStrokeCount()) { + return Error.GestureStrokeCountTooHigh + } + if (duration >= GestureDescription.getMaxGestureDuration()) { + return Error.GestureDurationTooHigh + } + + val pStart = Point(xStart, yStart) + val pEnd = Point(xEnd, yEnd) + + val gestureBuilder = GestureDescription.Builder() + + if (fingerCount == 1) { + val p = Path() + p.moveTo(pStart.x.toFloat(), pStart.y.toFloat()) + p.lineTo(pEnd.x.toFloat(), pEnd.y.toFloat()) + gestureBuilder.addStroke(StrokeDescription(p, 0, duration.toLong())) + } else { + // segments between fingers + val segmentCount = fingerCount - 1 + // the line of the perpendicular line which will be created to place the virtual fingers on it + val perpendicularLineLength = (fingerGestureDistance * fingerCount).toInt() + + // the length of each segment between fingers + val segmentLength = perpendicularLineLength / segmentCount + // perpendicular line of the start swipe point + val perpendicularLineStart = MathUtils.getPerpendicularOfLine( + pStart, + pEnd, + perpendicularLineLength, + ) + // perpendicular line of the end swipe point + val perpendicularLineEnd = MathUtils.getPerpendicularOfLine( + pEnd, + pStart, + perpendicularLineLength, + true, + ) + + // this is the angle between start and end point to rotate all virtual fingers on the perpendicular lines in the same direction + val angle = + MathUtils.angleBetweenPoints(Point(xStart, yStart), Point(xEnd, yEnd)) - 90 + + // create the virtual fingers + for (index in 0..segmentCount) { + // offset of each finger + val fingerOffsetLength = index * segmentLength * 2 + // move the coordinates of the current virtual finger on the perpendicular line for the start coordinates + val startFingerCoordinateWithOffset = + MathUtils.movePointByDistanceAndAngle( + perpendicularLineStart.start, + fingerOffsetLength, + angle, + ) + // move the coordinates of the current virtual finger on the perpendicular line for the end coordinates + val endFingerCoordinateWithOffset = + MathUtils.movePointByDistanceAndAngle( + perpendicularLineEnd.start, + fingerOffsetLength, + angle, + ) + + // create a path for each finger, move the the coordinates on the perpendicular line and draw it to the end coordinates of the perpendicular line of the end swipe point + val p = Path() + p.moveTo( + startFingerCoordinateWithOffset.x.toFloat(), + startFingerCoordinateWithOffset.y.toFloat(), + ) + p.lineTo( + endFingerCoordinateWithOffset.x.toFloat(), + endFingerCoordinateWithOffset.y.toFloat(), + ) + + gestureBuilder.addStroke(StrokeDescription(p, 0, duration.toLong())) + } + } + + val success = dispatchGesture(gestureBuilder.build(), null, null) + + return if (success) { + Success(Unit) + } else { + Error.FailedToDispatchGesture + } + } + + return Error.SdkVersionTooLow(Build.VERSION_CODES.N) + } + + override fun pinchScreen( + x: Int, + y: Int, + distance: Int, + pinchType: PinchScreenType, + fingerCount: Int, + duration: Int, + inputEventType: InputEventType, + ): Result<*> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + if (fingerCount >= GestureDescription.getMaxStrokeCount()) { + return Error.GestureStrokeCountTooHigh + } + if (duration >= GestureDescription.getMaxGestureDuration()) { + return Error.GestureDurationTooHigh + } + + val gestureBuilder = GestureDescription.Builder() + val distributedPoints: List = + MathUtils.distributePointsOnCircle(Point(x, y), distance.toFloat() / 2, fingerCount) + + for (index in distributedPoints.indices) { + val p = Path() + if (pinchType == PinchScreenType.PINCH_IN) { + p.moveTo(x.toFloat(), y.toFloat()) + p.lineTo( + distributedPoints[index].x.toFloat(), + distributedPoints[index].y.toFloat(), + ) + } else { + p.moveTo( + distributedPoints[index].x.toFloat(), + distributedPoints[index].y.toFloat(), + ) + p.lineTo(x.toFloat(), y.toFloat()) + } + + gestureBuilder.addStroke(StrokeDescription(p, 0, duration.toLong())) + } + + val success = dispatchGesture(gestureBuilder.build(), null, null) + + return if (success) { + Success(Unit) + } else { + Error.FailedToDispatchGesture + } + } + + return Error.SdkVersionTooLow(Build.VERSION_CODES.N) + } + + override fun performActionOnNode( + findNode: (node: AccessibilityNodeModel) -> Boolean, + performAction: (node: AccessibilityNodeModel) -> AccessibilityNodeAction?, + ): Result<*> { + val node = rootInActiveWindow.findNodeRecursively { + findNode(it.toModel()) + } + + if (node == null) { + return Error.FailedToFindAccessibilityNode + } + + val (action, extras) = performAction(node.toModel()) ?: return Success(Unit) + + node.performAction(action, bundleOf(*extras.toList().toTypedArray())) + node.recycle() + + return Success(Unit) + } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt index 8a6a1a1504..c984b53755 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.system.accessibility -import android.accessibilityservice.AccessibilityService import android.accessibilityservice.AccessibilityServiceInfo import android.content.res.Configuration import android.os.Build @@ -8,30 +7,36 @@ import android.view.KeyEvent import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityNodeInfo import io.github.sds100.keymapper.base.actions.ActionData -import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository -import io.github.sds100.keymapper.data.repositories.PreferenceRepository +import io.github.sds100.keymapper.base.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.actions.TestActionEvent +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase +import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.TriggerKeyMapEvent +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectScreenOffKeyEventsController import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker import io.github.sds100.keymapper.base.keymaps.detection.KeyMapController import io.github.sds100.keymapper.base.keymaps.detection.TriggerKeyMapFromOtherAppsController +import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsController import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase +import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.base.trigger.RecordTriggerEvent -import io.github.sds100.keymapper.base.Reroutekeyevents.RerouteKeyEventsController +import io.github.sds100.keymapper.common.utils.firstBlocking +import io.github.sds100.keymapper.common.utils.hasFlag +import io.github.sds100.keymapper.common.utils.minusFlag +import io.github.sds100.keymapper.common.utils.withFlag +import io.github.sds100.keymapper.data.Keys +import io.github.sds100.keymapper.data.PreferenceDefaults +import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository +import io.github.sds100.keymapper.data.repositories.PreferenceRepository +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.common.utils.firstBlocking -import io.github.sds100.keymapper.base.actions.PerformActionsUseCase -import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase -import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase -import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -54,15 +59,11 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import io.github.sds100.keymapper.common.utils.hasFlag -import io.github.sds100.keymapper.common.utils.minusFlag -import io.github.sds100.keymapper.common.utils.withFlag -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent import timber.log.Timber abstract class BaseAccessibilityServiceController( private val coroutineScope: CoroutineScope, - private val service: AccessibilityService, + private val service: BaseAccessibilityService, private val inputEvents: SharedFlow, private val outputEvents: MutableSharedFlow, private val detectConstraintsUseCase: DetectConstraintsUseCase, @@ -553,7 +554,7 @@ abstract class BaseAccessibilityServiceController( } } - is AccessibilityServiceEvent.TestAction -> coroutineScope.launch { + is TestActionEvent -> coroutineScope.launch { performActionsUseCase.perform( event.action, ) @@ -570,7 +571,7 @@ abstract class BaseAccessibilityServiceController( service.disableSelf() } - is AccessibilityServiceEvent.TriggerKeyMapEvent -> triggerKeyMapFromIntent(event.uid) + is TriggerKeyMapEvent -> triggerKeyMapFromIntent(event.uid) is AccessibilityServiceEvent.EnableInputMethod -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { service.setInputMethodEnabled(event.imeId, true) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt index bb7f7f53a0..1028157fd3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt @@ -2,9 +2,9 @@ package io.github.sds100.keymapper.base.system.accessibility import android.os.Build import androidx.annotation.RequiresApi -import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.common.utils.PinchScreenType +import io.github.sds100.keymapper.common.utils.Result import kotlinx.coroutines.flow.Flow interface IAccessibilityService { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt index 1942642f36..abafafef52 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityFragment.kt @@ -1,17 +1,18 @@ package io.github.sds100.keymapper.base.system.apps -import androidx.fragment.app.activityViewModels +import androidx.fragment.app.viewModels import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView -import io.github.sds100.keymapper.common.utils.State +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.base.simple -import io.github.sds100.keymapper.base.utils.Inject import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.serialization.json.Json +@AndroidEntryPoint class ChooseActivityFragment : SimpleRecyclerViewFragment() { companion object { @@ -23,9 +24,7 @@ class ChooseActivityFragment : SimpleRecyclerViewFragment() private val args: ChooseActivityFragmentArgs by navArgs() - private val viewModel: ChooseActivityViewModel by activityViewModels { - Inject.chooseActivityViewModel(requireContext()) - } + private val viewModel: ChooseActivityViewModel by viewModels() override val listItems: Flow>> get() = viewModel.listItems diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt index 53a52f69a3..3ac8be78a4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt @@ -3,10 +3,11 @@ package io.github.sds100.keymapper.base.system.apps import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.common.utils.valueOrNull -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.filterByQuery import io.github.sds100.keymapper.base.utils.ui.IconInfo +import io.github.sds100.keymapper.base.utils.ui.TintType +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.valueOrNull import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt index 5ed11ccf74..77d05cc577 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt @@ -8,18 +8,19 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView -import io.github.sds100.keymapper.common.utils.State +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.databinding.FragmentChooseAppBinding import io.github.sds100.keymapper.base.simple -import io.github.sds100.keymapper.base.utils.Inject -import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.RecyclerViewFragment import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.map +@AndroidEntryPoint class ChooseAppFragment : RecyclerViewFragment() { companion object { @@ -31,9 +32,7 @@ class ChooseAppFragment : RecyclerViewFragment>> get() = viewModel.state.map { it.listItems } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt index 31d5122b37..15b7c0a923 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppScreen.kt @@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.material3.BottomAppBar import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.MaterialTheme @@ -32,13 +33,13 @@ import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SearchAppBarActions import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItem import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.base.utils.ui.drawable +import io.github.sds100.keymapper.common.utils.State @Composable fun ChooseAppScreen( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt index 3c907f1393..a498255ec3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt @@ -3,26 +3,27 @@ package io.github.sds100.keymapper.base.system.apps import android.app.Activity import android.appwidget.AppWidgetManager import android.content.Intent +import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBinding import io.github.sds100.keymapper.base.simple -import io.github.sds100.keymapper.system.apps.AppShortcutInfo -import io.github.sds100.keymapper.base.utils.Inject -import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.system.apps.AppShortcutInfo import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json -import splitties.toast.toast +@AndroidEntryPoint class ChooseAppShortcutFragment : SimpleRecyclerViewFragment() { companion object { @@ -34,9 +35,7 @@ class ChooseAppShortcutFragment : SimpleRecyclerViewFragment>> get() = viewModel.state @@ -98,7 +97,11 @@ class ChooseAppShortcutFragment : SimpleRecyclerViewFragment { - val mainActivityComponent = ComponentName( - buildConfigProvider.packageName, - "io.github.sds100.keymapper.MainActivity", - ) - val intent = Intent().apply { - setComponent(mainActivityComponent) + val intent = Intent(ctx, classProvider.getMainActivity()).apply { action = intentType.customIntentAction ?: Intent.ACTION_MAIN } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt index 3f4fb10614..44e5bfab45 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt @@ -7,16 +7,14 @@ import io.github.sds100.keymapper.base.BaseMainActivity import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.system.accessibility.ControlAccessibilityServiceUseCase +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.common.ui.ResourceProvider import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider import io.github.sds100.keymapper.common.utils.DispatcherProvider -import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.base.system.accessibility.ControlAccessibilityServiceUseCase -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import io.github.sds100.keymapper.system.inputmethod.ShowHideInputMethodUseCase import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/permissions/RequestPermissionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/permissions/RequestPermissionDelegate.kt index 04d28a118e..4b3c3d8dbd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/permissions/RequestPermissionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/permissions/RequestPermissionDelegate.kt @@ -14,7 +14,7 @@ import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.navigation.NavController -import io.github.sds100.keymapper.base.NavAppDirections +import io.github.sds100.keymapper.base.NavBaseAppDirections import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.common.BuildConfigProvider @@ -198,7 +198,7 @@ class RequestPermissionDelegate( setIcon(R.drawable.ic_baseline_warning_24) okButton { - navController.navigate(NavAppDirections.toSettingsFragment()) + navController.navigate(NavBaseAppDirections.toSettingsFragment()) } negativeButton(R.string.neg_cancel) { it.cancel() } @@ -206,7 +206,7 @@ class RequestPermissionDelegate( show() } } else { - navController.navigate(NavAppDirections.toSettingsFragment()) + navController.navigate(NavBaseAppDirections.toSettingsFragment()) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt index f953e3a0b6..7de0a99014 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleMappingsTile.kt @@ -8,25 +8,29 @@ import androidx.annotation.RequiresApi import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.UseCases -import AccessibilityServiceState -import io.github.sds100.keymapper.common.utils.firstBlocking -import io.github.sds100.keymapper.base.utils.launchRepeatOnLifecycle +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.str +import io.github.sds100.keymapper.common.utils.firstBlocking +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.combine - - +import javax.inject.Inject @RequiresApi(Build.VERSION_CODES.N) +@AndroidEntryPoint class ToggleMappingsTile : TileService(), LifecycleOwner { - private val serviceAdapter by lazy { ServiceLocator.accessibilityServiceAdapter(this) } - private val useCase by lazy { UseCases.pauseKeyMaps(this) } + @Inject + lateinit var serviceAdapter: AccessibilityServiceAdapter + + @Inject + lateinit var useCase: PauseKeyMapsUseCase private lateinit var lifecycleRegistry: LifecycleRegistry diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index 171b0d477d..29e20bf41d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -158,8 +158,10 @@ abstract class BaseConfigTriggerViewModel( isEnabled, isChosen, ) - }.stateIn(coroutineScope, SharingStarted.Lazily, - SetupGuiKeyboardState.DEFAULT + }.stateIn( + coroutineScope, + SharingStarted.Lazily, + SetupGuiKeyboardState.DEFAULT, ) val triggerKeyOptionsUid = MutableStateFlow(null) @@ -570,7 +572,7 @@ abstract class BaseConfigTriggerViewModel( TriggerKeyDevice.External( device.descriptor, - device.name + device.name, ) } } @@ -798,6 +800,9 @@ abstract class BaseConfigTriggerViewModel( fun onAdvancedTriggersTapTargetCompleted() { onboarding.completedTapTarget(OnboardingTapTarget.ADVANCED_TRIGGERS) } + + abstract fun onEditFloatingButtonClick() + abstract fun onEditFloatingLayoutClick() } sealed class ConfigTriggerState { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseTriggerScreen.kt similarity index 91% rename from base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt rename to base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseTriggerScreen.kt index 1069cdc3d8..3c44f2d64a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseTriggerScreen.kt @@ -43,32 +43,33 @@ import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.LinkType import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.DraggableItem import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText import io.github.sds100.keymapper.base.utils.ui.compose.rememberDragDropState +import io.github.sds100.keymapper.common.utils.State @OptIn(ExperimentalMaterial3Api::class) @Composable -fun TriggerScreen(modifier: Modifier = Modifier, viewModel: ConfigTriggerViewModel) { +fun BaseTriggerScreen(modifier: Modifier = Modifier, viewModel: BaseConfigTriggerViewModel) { val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) val setupGuiKeyboardState by viewModel.setupGuiKeyboardState.collectAsStateWithLifecycle() val recordTriggerState by viewModel.recordTriggerState.collectAsStateWithLifecycle() - HandleAssistantTriggerSetupBottomSheet(viewModel = viewModel) - - if (viewModel.showAdvancedTriggersBottomSheet) { - AdvancedTriggersBottomSheet( - modifier = Modifier.systemBarsPadding(), - viewModel = viewModel, - onDismissRequest = { - viewModel.showAdvancedTriggersBottomSheet = false - }, - sheetState = sheetState, - ) - } + // TODO +// HandleAssistantTriggerSetupBottomSheet(viewModel = viewModel) +// +// if (viewModel.showAdvancedTriggersBottomSheet) { +// AdvancedTriggersBottomSheet( +// modifier = Modifier.systemBarsPadding(), +// viewModel = viewModel, +// onDismissRequest = { +// viewModel.showAdvancedTriggersBottomSheet = false +// }, +// sheetState = sheetState, +// ) +// } if (viewModel.showDpadTriggerSetupBottomSheet) { DpadTriggerSetupBottomSheet( @@ -185,7 +186,7 @@ private fun Loading(modifier: Modifier = Modifier) { @Composable private fun TriggerScreenVertical( modifier: Modifier = Modifier, - configState: _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState, + configState: ConfigTriggerState, recordTriggerState: RecordTriggerState, onRemoveClick: (String) -> Unit = {}, onEditClick: (String) -> Unit = {}, @@ -204,7 +205,7 @@ private fun TriggerScreenVertical( Surface(modifier = modifier) { Column { when (configState) { - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty -> { + is ConfigTriggerState.Empty -> { Column( modifier = Modifier .weight(1f) @@ -238,7 +239,7 @@ private fun TriggerScreenVertical( } } - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Loaded -> { + is ConfigTriggerState.Loaded -> { val isCompact = isVerticalCompactLayout() Spacer(Modifier.height(8.dp)) @@ -292,7 +293,7 @@ private fun TriggerScreenVertical( onRecordTriggerClick = onRecordTriggerClick, recordTriggerState = recordTriggerState, onAdvancedTriggersClick = onAdvancedTriggersClick, - showRecordTriggerTapTarget = (configState as? _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty)?.showRecordTriggerTapTarget + showRecordTriggerTapTarget = (configState as? ConfigTriggerState.Empty)?.showRecordTriggerTapTarget ?: false, onRecordTriggerTapTargetCompleted = onRecordTriggerTapTargetCompleted, onSkipTapTarget = onSkipTapTarget, @@ -306,7 +307,7 @@ private fun TriggerScreenVertical( @Composable private fun TriggerScreenHorizontal( modifier: Modifier = Modifier, - configState: _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState, + configState: ConfigTriggerState, recordTriggerState: RecordTriggerState, onRemoveClick: (String) -> Unit = {}, onEditClick: (String) -> Unit = {}, @@ -324,7 +325,7 @@ private fun TriggerScreenHorizontal( ) { Surface(modifier = modifier) { when (configState) { - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty -> Row { + is ConfigTriggerState.Empty -> Row { Text( modifier = Modifier .widthIn(max = 400.dp) @@ -364,7 +365,7 @@ private fun TriggerScreenHorizontal( onRecordTriggerClick = onRecordTriggerClick, recordTriggerState = recordTriggerState, onAdvancedTriggersClick = onAdvancedTriggersClick, - showRecordTriggerTapTarget = (configState as? _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty)?.showRecordTriggerTapTarget + showRecordTriggerTapTarget = (configState as? ConfigTriggerState.Empty)?.showRecordTriggerTapTarget ?: false, onRecordTriggerTapTargetCompleted = onRecordTriggerTapTargetCompleted, onSkipTapTarget = onSkipTapTarget, @@ -373,7 +374,7 @@ private fun TriggerScreenHorizontal( } } - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Loaded -> Row { + is ConfigTriggerState.Loaded -> Row { TriggerList( modifier = Modifier .fillMaxHeight() @@ -445,7 +446,7 @@ private fun TriggerScreenHorizontal( @Composable private fun TriggerList( modifier: Modifier = Modifier, - triggerList: List<_root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel>, + triggerList: List, shortcuts: Set>, isReorderingEnabled: Boolean, onRemoveClick: (String) -> Unit, @@ -593,7 +594,7 @@ private fun TriggerModeRadioGroup( } private val sampleList = listOf( - _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.KeyCode( + TriggerKeyListItemModel.KeyCode( id = "id1", keyName = "Volume Up", clickType = ClickType.SHORT_PRESS, @@ -601,7 +602,7 @@ private val sampleList = listOf( linkType = LinkType.ARROW, error = null, ), - _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButton( + TriggerKeyListItemModel.FloatingButton( id = "id2", buttonName = "😎", layoutName = "Gaming", @@ -609,7 +610,7 @@ private val sampleList = listOf( linkType = LinkType.ARROW, error = null, ), - _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.Assistant( + TriggerKeyListItemModel.Assistant( id = "id3", assistantType = AssistantTriggerType.DEVICE, clickType = ClickType.DOUBLE_PRESS, @@ -618,26 +619,27 @@ private val sampleList = listOf( ), ) -private val previewState = _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Loaded( - triggerKeys = sampleList, - isReorderingEnabled = true, - clickTypeButtons = setOf( - ClickType.SHORT_PRESS, - ClickType.LONG_PRESS, - ClickType.DOUBLE_PRESS, - ), - checkedClickType = ClickType.LONG_PRESS, - checkedTriggerMode = TriggerMode.Sequence, - triggerModeButtonsEnabled = true, - triggerModeButtonsVisible = true, - shortcuts = setOf( - ShortcutModel( - icon = ComposeIconInfo.Vector(Icons.Rounded.Fingerprint), - text = "Fingerprint gesture", - data = TriggerKeyShortcut.FINGERPRINT_GESTURE, +private val previewState = + ConfigTriggerState.Loaded( + triggerKeys = sampleList, + isReorderingEnabled = true, + clickTypeButtons = setOf( + ClickType.SHORT_PRESS, + ClickType.LONG_PRESS, + ClickType.DOUBLE_PRESS, ), - ), -) + checkedClickType = ClickType.LONG_PRESS, + checkedTriggerMode = TriggerMode.Sequence, + triggerModeButtonsEnabled = true, + triggerModeButtonsVisible = true, + shortcuts = setOf( + ShortcutModel( + icon = ComposeIconInfo.Vector(Icons.Rounded.Fingerprint), + text = "Fingerprint gesture", + data = TriggerKeyShortcut.FINGERPRINT_GESTURE, + ), + ), + ) @Preview(device = Devices.PIXEL) @Composable @@ -666,7 +668,7 @@ private fun VerticalPreviewTiny() { private fun VerticalEmptyPreview() { KeyMapperTheme { TriggerScreenVertical( - configState = _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty( + configState = ConfigTriggerState.Empty( shortcuts = setOf( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.Fingerprint), @@ -696,7 +698,7 @@ private fun HorizontalPreview() { private fun HorizontalEmptyPreview() { KeyMapperTheme { TriggerScreenHorizontal( - configState = _root_ide_package_.io.github.sds100.keymapper.base.trigger.ConfigTriggerState.Empty( + configState = ConfigTriggerState.Empty( shortcuts = setOf( ShortcutModel( icon = ComposeIconInfo.Vector(Icons.Rounded.Fingerprint), diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt index a6c7c70de8..820d11df43 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FingerprintTriggerKey.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.trigger +import io.github.sds100.keymapper.base.keymaps.ClickType +import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType import io.github.sds100.keymapper.data.entities.FingerprintTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity -import io.github.sds100.keymapper.base.keymaps.ClickType -import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt index 6cba7f44c5..65b51d395e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/FloatingButtonKey.kt @@ -1,11 +1,11 @@ package io.github.sds100.keymapper.base.trigger +import io.github.sds100.keymapper.base.floating.FloatingButtonData +import io.github.sds100.keymapper.base.floating.FloatingButtonEntityMapper +import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout import io.github.sds100.keymapper.data.entities.FloatingButtonKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity -import io.github.sds100.keymapper.floating.FloatingButtonData -import io.github.sds100.keymapper.floating.FloatingButtonEntityMapper -import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.Serializable import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt index b6b9987ea1..7da809e542 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt @@ -2,7 +2,6 @@ package io.github.sds100.keymapper.base.trigger import android.view.KeyEvent import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker -import io.github.sds100.keymapper.base.utils.ServiceEvent import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo @@ -32,11 +31,11 @@ class RecordTriggerController @Inject constructor( init { serviceAdapter.eventReceiver.onEach { event -> when (event) { - is ServiceEvent.OnStoppedRecordingTrigger -> + is RecordTriggerEvent.OnStoppedRecordingTrigger -> state.value = RecordTriggerState.Completed(recordedKeys) - is ServiceEvent.OnIncrementRecordTriggerTimer -> + is RecordTriggerEvent.OnIncrementRecordTriggerTimer -> state.value = RecordTriggerState.CountingDown(event.timeLeft) @@ -46,7 +45,7 @@ class RecordTriggerController @Inject constructor( serviceAdapter.eventReceiver .mapNotNull { - if (it is ServiceEvent.RecordedTriggerKey) { + if (it is RecordTriggerEvent.RecordedTriggerKey) { it } else { null @@ -63,11 +62,11 @@ class RecordTriggerController @Inject constructor( override suspend fun startRecording(): Result<*> { recordedKeys.clear() dpadMotionEventTracker.reset() - return serviceAdapter.send(ServiceEvent.StartRecordingTrigger) + return serviceAdapter.send(RecordTriggerEvent.StartRecordingTrigger) } override suspend fun stopRecording(): Result<*> { - return serviceAdapter.send(ServiceEvent.StopRecordingTrigger) + return serviceAdapter.send(RecordTriggerEvent.StopRecordingTrigger) } /** diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt index 0cf05bfe3d..e08ea1e899 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardBottomSheet.kt @@ -68,7 +68,7 @@ fun DpadTriggerSetupBottomSheet( fun NoKeysRecordedBottomSheet( modifier: Modifier = Modifier, onDismissRequest: () -> Unit, - viewModel: ConfigTriggerViewModel, + viewModel: BaseConfigTriggerViewModel, sheetState: SheetState, ) { val state by viewModel.setupGuiKeyboardState.collectAsStateWithLifecycle() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt index ff6cb5db87..1c462c02e9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt @@ -1,6 +1,10 @@ package io.github.sds100.keymapper.base.trigger +import io.github.sds100.keymapper.base.floating.FloatingButtonEntityMapper +import io.github.sds100.keymapper.base.keymaps.ClickType +import io.github.sds100.keymapper.common.utils.hasFlag import io.github.sds100.keymapper.common.utils.valueOrNull +import io.github.sds100.keymapper.common.utils.withFlag import io.github.sds100.keymapper.data.entities.AssistantTriggerKeyEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.FingerprintTriggerKeyEntity @@ -9,13 +13,8 @@ import io.github.sds100.keymapper.data.entities.FloatingButtonKeyEntity import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerEntity import io.github.sds100.keymapper.data.entities.getData -import io.github.sds100.keymapper.floating.FloatingButtonEntityMapper -import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.system.inputevents.InputEventUtils import kotlinx.serialization.Serializable -import io.github.sds100.keymapper.common.utils.hasFlag -import io.github.sds100.keymapper.common.utils.withFlag - @Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt index d00554b316..4e38181428 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyListItem.kt @@ -43,14 +43,14 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.keymaps.ClickType -import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType +import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType import io.github.sds100.keymapper.base.utils.ui.LinkType import io.github.sds100.keymapper.base.utils.ui.compose.DragDropState @Composable fun TriggerKeyListItem( modifier: Modifier = Modifier, - model: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel, + model: TriggerKeyListItemModel, index: Int, isDraggingEnabled: Boolean = false, isDragging: Boolean, @@ -109,9 +109,9 @@ fun TriggerKeyListItem( // To save space only show the icon if there is no error. if (model.error == null) { val icon = when (model) { - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.Assistant -> Icons.Outlined.Assistant - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButton -> Icons.Outlined.BubbleChart - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FingerprintGesture -> Icons.Outlined.Fingerprint + is TriggerKeyListItemModel.Assistant -> Icons.Outlined.Assistant + is TriggerKeyListItemModel.FloatingButton -> Icons.Outlined.BubbleChart + is TriggerKeyListItemModel.FingerprintGesture -> Icons.Outlined.Fingerprint else -> null } @@ -126,22 +126,22 @@ fun TriggerKeyListItem( } val primaryText = when (model) { - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.Assistant -> when (model.assistantType) { + is TriggerKeyListItemModel.Assistant -> when (model.assistantType) { AssistantTriggerType.ANY -> stringResource(R.string.assistant_any_trigger_name) AssistantTriggerType.VOICE -> stringResource(R.string.assistant_voice_trigger_name) AssistantTriggerType.DEVICE -> stringResource(R.string.assistant_device_trigger_name) } - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButton -> stringResource( + is TriggerKeyListItemModel.FloatingButton -> stringResource( R.string.trigger_key_floating_button_description, model.buttonName, ) - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.KeyCode -> model.keyName + is TriggerKeyListItemModel.KeyCode -> model.keyName - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButtonDeleted -> stringResource(R.string.trigger_error_floating_button_deleted_title) + is TriggerKeyListItemModel.FloatingButtonDeleted -> stringResource(R.string.trigger_error_floating_button_deleted_title) - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FingerprintGesture -> when (model.gestureType) { + is TriggerKeyListItemModel.FingerprintGesture -> when (model.gestureType) { FingerprintGestureType.SWIPE_UP -> stringResource(R.string.trigger_key_fingerprint_gesture_up) FingerprintGestureType.SWIPE_DOWN -> stringResource(R.string.trigger_key_fingerprint_gesture_down) FingerprintGestureType.SWIPE_LEFT -> stringResource(R.string.trigger_key_fingerprint_gesture_left) @@ -159,8 +159,8 @@ fun TriggerKeyListItem( } val tertiaryText = when (model) { - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.KeyCode -> model.extraInfo - is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButton -> model.layoutName + is TriggerKeyListItemModel.KeyCode -> model.extraInfo + is TriggerKeyListItemModel.FloatingButton -> model.layoutName else -> null } @@ -201,7 +201,7 @@ fun TriggerKeyListItem( } } - if (model !is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButtonDeleted) { + if (model !is TriggerKeyListItemModel.FloatingButtonDeleted) { IconButton(onClick = onEditClick) { Icon( imageVector = Icons.Outlined.Settings, @@ -324,7 +324,7 @@ private fun ErrorTextColumn( @Composable private fun KeyCodePreview() { TriggerKeyListItem( - model = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.KeyCode( + model = TriggerKeyListItemModel.KeyCode( id = "id", keyName = "Volume Up", clickType = ClickType.SHORT_PRESS, @@ -342,7 +342,7 @@ private fun KeyCodePreview() { @Composable private fun NoDragPreview() { TriggerKeyListItem( - model = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.KeyCode( + model = TriggerKeyListItemModel.KeyCode( id = "id", keyName = "Volume Up", clickType = ClickType.LONG_PRESS, @@ -360,7 +360,7 @@ private fun NoDragPreview() { @Composable private fun AssistantPreview() { TriggerKeyListItem( - model = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.Assistant( + model = TriggerKeyListItemModel.Assistant( id = "id", assistantType = AssistantTriggerType.DEVICE, clickType = ClickType.SHORT_PRESS, @@ -377,7 +377,7 @@ private fun AssistantPreview() { @Composable private fun AssistantErrorPreview() { TriggerKeyListItem( - model = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.Assistant( + model = TriggerKeyListItemModel.Assistant( id = "id", assistantType = AssistantTriggerType.DEVICE, clickType = ClickType.DOUBLE_PRESS, @@ -394,7 +394,7 @@ private fun AssistantErrorPreview() { @Composable private fun FloatingButtonPreview() { TriggerKeyListItem( - model = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButton( + model = TriggerKeyListItemModel.FloatingButton( id = "id", buttonName = "😎", layoutName = "Gaming", @@ -412,7 +412,7 @@ private fun FloatingButtonPreview() { @Composable private fun FloatingButtonErrorPreview() { TriggerKeyListItem( - model = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyListItemModel.FloatingButtonDeleted( + model = TriggerKeyListItemModel.FloatingButtonDeleted( id = "id", clickType = ClickType.DOUBLE_PRESS, linkType = LinkType.ARROW, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt index 10b3a8a08e..e104ecf8c9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyOptionsBottomSheet.kt @@ -37,7 +37,7 @@ import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ClickType -import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType +import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem import io.github.sds100.keymapper.base.utils.ui.compose.CheckBoxText import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText @@ -49,7 +49,7 @@ import kotlinx.coroutines.launch fun TriggerKeyOptionsBottomSheet( modifier: Modifier = Modifier, sheetState: SheetState, - state: _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState, + state: TriggerKeyOptionsState, onDismissRequest: () -> Unit = {}, onCheckDoNotRemap: (Boolean) -> Unit = {}, onSelectClickType: (ClickType) -> Unit = {}, @@ -96,7 +96,7 @@ fun TriggerKeyOptionsBottomSheet( Spacer(modifier = Modifier.height(8.dp)) - if (state is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.KeyCode) { + if (state is TriggerKeyOptionsState.KeyCode) { CheckBoxText( modifier = Modifier.padding(8.dp), text = stringResource(R.string.flag_dont_override_default_action), @@ -146,7 +146,7 @@ fun TriggerKeyOptionsBottomSheet( } } - if (state is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.KeyCode) { + if (state is TriggerKeyOptionsState.KeyCode) { Text( modifier = Modifier.padding(horizontal = 16.dp), text = stringResource(R.string.trigger_key_device_header), @@ -161,7 +161,7 @@ fun TriggerKeyOptionsBottomSheet( onSelected = { onSelectDevice(device.id) }, ) } - } else if (state is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.Assistant) { + } else if (state is TriggerKeyOptionsState.Assistant) { Text( modifier = Modifier.padding(horizontal = 16.dp), text = stringResource(R.string.trigger_key_assistant_type_header), @@ -188,7 +188,7 @@ fun TriggerKeyOptionsBottomSheet( isSelected = state.assistantType == AssistantTriggerType.VOICE, onSelected = { onSelectAssistantType(AssistantTriggerType.VOICE) }, ) - } else if (state is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.FingerprintGesture) { + } else if (state is TriggerKeyOptionsState.FingerprintGesture) { Text( modifier = Modifier.padding(horizontal = 16.dp), text = stringResource(R.string.trigger_key_fingerprint_gesture_type_header), @@ -226,7 +226,7 @@ fun TriggerKeyOptionsBottomSheet( Spacer(Modifier.height(8.dp)) - if (state is _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.FloatingButton && state.isPurchased) { + if (state is TriggerKeyOptionsState.FloatingButton && state.isPurchased) { Row( modifier = Modifier .fillMaxWidth() @@ -296,7 +296,7 @@ private fun Preview() { TriggerKeyOptionsBottomSheet( sheetState = sheetState, - state = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.KeyCode( + state = TriggerKeyOptionsState.KeyCode( doNotRemapChecked = true, clickType = ClickType.DOUBLE_PRESS, showClickTypes = true, @@ -330,7 +330,7 @@ private fun AssistantPreview() { TriggerKeyOptionsBottomSheet( sheetState = sheetState, - state = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.Assistant( + state = TriggerKeyOptionsState.Assistant( assistantType = AssistantTriggerType.VOICE, clickType = ClickType.DOUBLE_PRESS, ), @@ -351,7 +351,7 @@ private fun FloatingButtonPreview() { TriggerKeyOptionsBottomSheet( sheetState = sheetState, - state = _root_ide_package_.io.github.sds100.keymapper.base.trigger.TriggerKeyOptionsState.FloatingButton( + state = TriggerKeyOptionsState.FloatingButton( clickType = ClickType.SHORT_PRESS, showClickTypes = true, isPurchased = true, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ShareUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ShareUtils.kt index 200fb747e3..5b999c61bb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ShareUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ShareUtils.kt @@ -12,7 +12,6 @@ import androidx.core.app.ShareCompat import androidx.core.net.toUri import io.github.sds100.keymapper.base.BaseMainActivity import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.BuildConfigProvider object ShareUtils { fun sendMail(ctx: Context, email: String, subject: String, body: String) { @@ -28,7 +27,7 @@ object ShareUtils { } } - fun shareFile(ctx: Context, file: Uri, buildConfigProvider: BuildConfigProvider) { + fun shareFile(ctx: Context, file: Uri, packageName: String) { try { val type = ctx.contentResolver.getType(file) @@ -39,7 +38,7 @@ object ShareUtils { .also { intent -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { val broadcast = Intent(BaseMainActivity.ACTION_SAVE_FILE).apply { - setPackage(buildConfigProvider.packageName) + setPackage(packageName) putExtra(BaseMainActivity.EXTRA_FILE_URI, file) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt index 1b7c9d38e4..8dfb449a3f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt @@ -13,21 +13,11 @@ import androidx.lifecycle.OnLifecycleEvent import androidx.lifecycle.lifecycleScope import com.google.android.material.textfield.TextInputLayout import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.ServiceLocator -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result -import io.github.sds100.keymapper.common.utils.Success -import io.github.sds100.keymapper.common.utils.errorOrNull -import io.github.sds100.keymapper.common.utils.isSuccess -import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.base.databinding.DialogEdittextNumberBinding import io.github.sds100.keymapper.base.databinding.DialogEdittextStringBinding -import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.common.utils.resumeIfNotCompleted import kotlinx.coroutines.CancellableContinuation import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.flow.map import kotlinx.coroutines.suspendCancellableCoroutine import splitties.alertdialog.appcompat.message import splitties.alertdialog.appcompat.negativeButton @@ -235,76 +225,6 @@ suspend fun Context.editTextStringAlertDialog( } } -suspend fun Context.editTextNumberAlertDialog( - lifecycleOwner: LifecycleOwner, - hint: String, - min: Int? = null, - max: Int? = null, -) = suspendCancellableCoroutine { continuation -> - - fun isValid(text: String?): Result { - if (text.isNullOrBlank()) { - return Error.InvalidNumber - } - - return try { - val num = text.toInt() - - min?.let { - if (num < min) { - return Error.NumberTooSmall(min) - } - } - - max?.let { - if (num > max) { - return Error.NumberTooBig(max) - } - } - - Success(num) - } catch (e: NumberFormatException) { - Error.InvalidNumber - } - } - - val resourceProvider = ServiceLocator.resourceProvider(this) - val text = MutableStateFlow("") - - val inflater = LayoutInflater.from(this@editTextNumberAlertDialog) - val binding = DialogEdittextNumberBinding.inflate(inflater).apply { - setHint(hint) - setText(text) - } - - val alertDialog = materialAlertDialog { - okButton { - isValid(text.value).onSuccess { num -> - continuation.resume(num) - } - } - - negativeButton(R.string.neg_cancel) { it.cancel() } - - setView(binding.root) - } - - alertDialog.show() - alertDialog.resumeNullOnDismiss(continuation) - alertDialog.dismissOnDestroy(lifecycleOwner) - - lifecycleOwner.launchRepeatOnLifecycle(Lifecycle.State.RESUMED) { - text.map { isValid(it) } - .collectLatest { isValid -> - alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = - isValid.isSuccess - - binding.textInputLayout.error = - isValid.errorOrNull()?.getFullMessage(resourceProvider) - } - } -} - suspend fun Context.okDialog( lifecycleOwner: LifecycleOwner, message: String, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/EpoxyRecyclerViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/EpoxyRecyclerViewModelHelper.kt index 06e227aec7..e41a0ec9b4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/EpoxyRecyclerViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/EpoxyRecyclerViewModelHelper.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.utils.ui import com.airbnb.epoxy.EpoxyController -import io.github.sds100.keymapper.checkbox +import io.github.sds100.keymapper.base.checkbox import io.github.sds100.keymapper.base.databinding.ListItemCheckboxBinding fun EpoxyController.configuredCheckBox( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt index 549a79b01f..b785226622 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt @@ -7,10 +7,9 @@ import androidx.fragment.app.clearFragmentResultListener import androidx.fragment.app.setFragmentResultListener import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController -import io.github.sds100.keymapper.NavAppDirections +import io.github.sds100.keymapper.base.NavBaseAppDirections import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.ChooseActionFragment -import io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment import io.github.sds100.keymapper.base.actions.keyevent.ConfigKeyEventActionFragment import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickCoordinateResult import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickDisplayCoordinateFragment @@ -22,16 +21,16 @@ import io.github.sds100.keymapper.base.actions.tapscreen.PickDisplayCoordinateFr import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementFragment import io.github.sds100.keymapper.base.constraints.ChooseConstraintFragment import io.github.sds100.keymapper.base.constraints.Constraint -import io.github.sds100.keymapper.system.apps.ActivityInfo +import io.github.sds100.keymapper.base.system.ChooseBluetoothDeviceFragment import io.github.sds100.keymapper.base.system.apps.ChooseActivityFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutResult -import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.base.system.ChooseBluetoothDeviceFragment import io.github.sds100.keymapper.base.system.intents.ConfigIntentFragment import io.github.sds100.keymapper.base.system.intents.ConfigIntentResult import io.github.sds100.keymapper.common.utils.getJsonSerializable +import io.github.sds100.keymapper.system.apps.ActivityInfo +import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow @@ -44,8 +43,6 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.runBlocking import kotlinx.serialization.json.Json - - class NavigationViewModelImpl : NavigationViewModel { private val _onNavResult by lazy { MutableSharedFlow() } override val onNavResult by lazy { _onNavResult.asSharedFlow() } @@ -142,19 +139,19 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { } val direction = when (destination) { - is NavDestination.ChooseApp -> NavAppDirections.chooseApp( + is NavDestination.ChooseApp -> NavBaseAppDirections.chooseApp( destination.allowHiddenApps, requestKey, ) - NavDestination.ChooseAppShortcut -> NavAppDirections.chooseAppShortcut(requestKey) - NavDestination.ChooseKeyCode -> NavAppDirections.chooseKeyCode(requestKey) + NavDestination.ChooseAppShortcut -> NavBaseAppDirections.chooseAppShortcut(requestKey) + NavDestination.ChooseKeyCode -> NavBaseAppDirections.chooseKeyCode(requestKey) is NavDestination.ConfigKeyEventAction -> { val json = destination.action?.let { Json.encodeToString(it) } - NavAppDirections.configKeyEvent(requestKey, json) + NavBaseAppDirections.configKeyEvent(requestKey, json) } is NavDestination.PickCoordinate -> { @@ -162,7 +159,7 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { Json.encodeToString(it) } - NavAppDirections.pickDisplayCoordinate(requestKey, json) + NavBaseAppDirections.pickDisplayCoordinate(requestKey, json) } is NavDestination.PickSwipeCoordinate -> { @@ -170,7 +167,7 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { Json.encodeToString(it) } - NavAppDirections.swipePickDisplayCoordinate(requestKey, json) + NavBaseAppDirections.swipePickDisplayCoordinate(requestKey, json) } is NavDestination.PickPinchCoordinate -> { @@ -178,7 +175,7 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { Json.encodeToString(it) } - NavAppDirections.pinchPickDisplayCoordinate(requestKey, json) + NavBaseAppDirections.pinchPickDisplayCoordinate(requestKey, json) } is NavDestination.ConfigIntent -> { @@ -186,44 +183,43 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { Json.encodeToString(it) } - NavAppDirections.configIntent(requestKey, json) + NavBaseAppDirections.configIntent(requestKey, json) } - is NavDestination.ChooseActivity -> NavAppDirections.chooseActivity(requestKey) - is NavDestination.ChooseSound -> NavAppDirections.chooseSoundFile(requestKey) - NavDestination.ChooseAction -> NavAppDirections.toChooseActionFragment(requestKey) - is NavDestination.ChooseConstraint -> NavAppDirections.chooseConstraint( + is NavDestination.ChooseActivity -> NavBaseAppDirections.chooseActivity(requestKey) + is NavDestination.ChooseSound -> NavBaseAppDirections.chooseSoundFile(requestKey) + NavDestination.ChooseAction -> NavBaseAppDirections.toChooseActionFragment(requestKey) + is NavDestination.ChooseConstraint -> NavBaseAppDirections.chooseConstraint( requestKey = requestKey, ) - is NavDestination.ChooseBluetoothDevice -> NavAppDirections.chooseBluetoothDevice( + is NavDestination.ChooseBluetoothDevice -> NavBaseAppDirections.chooseBluetoothDevice( requestKey, ) - NavDestination.About -> NavAppDirections.actionGlobalAboutFragment() - NavDestination.Settings -> NavAppDirections.toSettingsFragment() + NavDestination.About -> NavBaseAppDirections.actionGlobalAboutFragment() + NavDestination.Settings -> NavBaseAppDirections.toSettingsFragment() is NavDestination.ConfigKeyMap -> when (destination) { is NavDestination.ConfigKeyMap.New -> - NavAppDirections.actionToConfigKeymap( + NavBaseAppDirections.actionToConfigKeymap( groupUid = destination.groupUid, showAdvancedTriggers = destination.showAdvancedTriggers, ) is NavDestination.ConfigKeyMap.Open -> - NavAppDirections.actionToConfigKeymap( + NavBaseAppDirections.actionToConfigKeymap( keyMapUid = destination.keyMapUid, showAdvancedTriggers = destination.showAdvancedTriggers, ) } - is NavDestination.ChooseFloatingLayout -> NavAppDirections.toChooseFloatingLayoutFragment() - NavDestination.ShizukuSettings -> NavAppDirections.toShizukuSettingsFragment() - is NavDestination.ConfigFloatingButton -> NavAppDirections.toConfigFloatingButton( - destination.buttonUid, - ) + // TODO + is NavDestination.ChooseFloatingLayout -> return@onEach + is NavDestination.ConfigFloatingButton -> return@onEach - is NavDestination.InteractUiElement -> NavAppDirections.interactUiElement( + NavDestination.ShizukuSettings -> NavBaseAppDirections.toShizukuSettingsFragment() + is NavDestination.InteractUiElement -> NavBaseAppDirections.interactUiElement( requestKey = requestKey, action = destination.action?.let { Json.encodeToString(destination.action) }, ) @@ -254,7 +250,8 @@ fun NavigationViewModel.sendNavResultFromBundle( } NavDestination.ID_KEY_CODE -> { - val keyCode = bundle.getInt(io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment.EXTRA_KEYCODE) + val keyCode = + bundle.getInt(io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment.EXTRA_KEYCODE) onNavResult(NavResult(requestKey, keyCode)) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt index 51efc8154d..62186d97cf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt @@ -3,6 +3,7 @@ package io.github.sds100.keymapper.base.utils.ui import android.content.Context import android.view.LayoutInflater import android.view.View +import android.widget.Toast import androidx.databinding.ViewDataBinding import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity @@ -23,9 +24,6 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.runBlocking -import splitties.toast.toast - - class PopupViewModelImpl : PopupViewModel { @@ -154,7 +152,7 @@ fun PopupViewModel.showPopups( response = ctx.materialAlertDialog(lifecycleOwner, event.ui) is PopupUi.Toast -> { - ctx.toast(event.ui.text) + Toast.makeText(ctx, event.ui.text, Toast.LENGTH_SHORT).show() response = Unit } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ResourceExt.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ResourceExt.kt index 735de5c661..59789c69af 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ResourceExt.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ResourceExt.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.res.ColorStateList import android.content.res.TypedArray import android.graphics.drawable.Drawable +import android.os.Looper import android.util.AttributeSet import android.view.View import androidx.annotation.ArrayRes @@ -20,20 +21,14 @@ import androidx.core.content.ContextCompat import androidx.core.content.res.getResourceIdOrThrow import androidx.fragment.app.Fragment import com.google.android.material.color.MaterialColors -import splitties.mainthread.isMainThread - - // Using varargs doesn't work since prints [LJava.lang.object@32f...etc fun Context.str(@StringRes resId: Int, formatArg: Any? = null): String = getString(resId, formatArg) -fun Context.str(@StringRes resId: Int, formatArgArray: Array): String = - getString(resId, *formatArgArray) +fun Context.str(@StringRes resId: Int, formatArgArray: Array): String = getString(resId, *formatArgArray) -fun View.str(@StringRes resId: Int, formatArgs: Any? = null): String = - context.str(resId, formatArgs) +fun View.str(@StringRes resId: Int, formatArgs: Any? = null): String = context.str(resId, formatArgs) -fun Fragment.str(@StringRes resId: Int, formatArgs: Any? = null): String = - requireContext().str(resId, formatArgs) +fun Fragment.str(@StringRes resId: Int, formatArgs: Any? = null): String = requireContext().str(resId, formatArgs) fun Context.strArray(@ArrayRes resId: Int): Array = resources.getStringArray(resId) fun Fragment.strArray(@ArrayRes resId: Int): Array = requireContext().strArray(resId) @@ -116,14 +111,12 @@ fun View.str( attributeSet: AttributeSet, @StyleableRes styleableId: IntArray, @StyleableRes attrId: Int, -) = - context.str(attributeSet, styleableId, attrId) +) = context.str(attributeSet, styleableId, attrId) /** * Get a resource drawable. Can be safely used to get vector drawables on pre-lollipop. */ -fun Context.drawable(@DrawableRes resId: Int): Drawable = - AppCompatResources.getDrawable(this, resId)!! +fun Context.drawable(@DrawableRes resId: Int): Drawable = AppCompatResources.getDrawable(this, resId)!! fun View.drawable(@DrawableRes resId: Int): Drawable = context.drawable(resId) fun Fragment.drawable(@DrawableRes resId: Int): Drawable = requireContext().drawable(resId) @@ -138,11 +131,9 @@ fun Context.color(@ColorRes resId: Int, harmonize: Boolean = false): Int { } } -fun View.color(@ColorRes resId: Int, harmonize: Boolean = false): Int = - context.color(resId, harmonize) +fun View.color(@ColorRes resId: Int, harmonize: Boolean = false): Int = context.color(resId, harmonize) -fun Fragment.color(@ColorRes resId: Int, harmonize: Boolean = false): Int = - requireContext().color(resId, harmonize) +fun Fragment.color(@ColorRes resId: Int, harmonize: Boolean = false): Int = requireContext().color(resId, harmonize) @ColorInt fun Context.styledColor(@AttrRes attr: Int) = withStyledAttributes(attr) { getColor(it, 0) } @@ -162,14 +153,12 @@ fun Fragment.int(@IntegerRes resId: Int) = requireContext().int(resId) fun Context.intArray(@ArrayRes resId: Int): IntArray = resources.getIntArray(resId) fun Fragment.intArray(@ArrayRes resId: Int): IntArray = resources.getIntArray(resId) -fun Context.styledColorSL(@AttrRes attr: Int): ColorStateList? = - withStyledAttributes(attr) { getColorStateList(it) } +fun Context.styledColorSL(@AttrRes attr: Int): ColorStateList? = withStyledAttributes(attr) { getColorStateList(it) } fun Fragment.styledColorSL(@AttrRes attr: Int) = context!!.styledColorSL(attr) fun View.styledColorSL(@AttrRes attr: Int) = context.styledColorSL(attr) -fun Context.colorSl(@ColorRes color: Int): ColorStateList? = - ContextCompat.getColorStateList(this, color) +fun Context.colorSl(@ColorRes color: Int): ColorStateList? = ContextCompat.getColorStateList(this, color) fun View.colorSl(@ColorRes color: Int) = context.colorSl(color) @@ -183,7 +172,7 @@ inline fun Context.withStyledAttributes( styledAttrs.func(styledAttrs.getIndex(0)).also { styledAttrs.recycle() } } -fun Context.obtainStyledAttr(@AttrRes attrRes: Int): TypedArray = if (isMainThread) { +fun Context.obtainStyledAttr(@AttrRes attrRes: Int): TypedArray = if (Looper.getMainLooper().isCurrentThread) { uiThreadConfinedCachedAttrArray[0] = attrRes obtainStyledAttributes(uiThreadConfinedCachedAttrArray) } else { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt index fd21d0b093..4ebf042077 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt @@ -1,15 +1,11 @@ package io.github.sds100.keymapper.base.utils.ui import androidx.coordinatorlayout.widget.CoordinatorLayout +import com.google.android.material.snackbar.Snackbar import io.github.sds100.keymapper.base.R import kotlinx.coroutines.suspendCancellableCoroutine -import splitties.snackbar.action -import splitties.snackbar.longSnack -import splitties.snackbar.onDismiss -import splitties.snackbar.snack import kotlin.coroutines.resume - object SnackBarUtils { suspend fun show( @@ -17,44 +13,33 @@ object SnackBarUtils { text: String, actionText: String? = null, long: Boolean = false, - ) = - suspendCancellableCoroutine { continuation -> + ) = suspendCancellableCoroutine { continuation -> - val snackBar = if (long) { - view.longSnack(text) { - if (actionText != null) { - action(actionText) { - if (!continuation.isCompleted) { - continuation.resume(Unit) - } - } - } + val duration = if (long) { + Snackbar.LENGTH_LONG + } else { + Snackbar.LENGTH_SHORT + } - anchorView = view.findViewById(R.id.fab) + val snackBar = Snackbar.make(view, text, duration) + .setAnchorView(R.id.fab) + .setAction(actionText, { + if (!continuation.isCompleted) { + continuation.resume(Unit) } - } else { - view.snack(text) { - if (actionText != null) { - action(actionText) { - if (!continuation.isCompleted) { - continuation.resume(Unit) - } - } + }) + .addCallback(object : Snackbar.Callback() { + override fun onDismissed(transientBottomBar: Snackbar?, event: Int) { + if (!continuation.isCompleted) { + continuation.resume(null) } - - anchorView = view.findViewById(R.id.fab) } - } - - // if there is no action then there is no point waiting for a user response - if (actionText == null) { - continuation.resume(null) - } + }) + .show() - snackBar.onDismiss { - if (!continuation.isCompleted) { - continuation.resume(null) - } - } + // if there is no action then there is no point waiting for a user response + if (actionText == null) { + continuation.resume(null) } + } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/UnsavedChangesDialog.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/UnsavedChangesDialog.kt new file mode 100644 index 0000000000..8342f5b818 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/UnsavedChangesDialog.kt @@ -0,0 +1,36 @@ +package io.github.sds100.keymapper.base.utils.ui + +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.compose.KeyMapperTheme + +@Composable +fun UnsavedChangesDialog( + onDismiss: () -> Unit, + onDiscardClick: () -> Unit, +) { + AlertDialog( + onDismissRequest = onDismiss, + title = { Text(stringResource(R.string.dialog_title_unsaved_changes)) }, + text = { Text(stringResource(R.string.dialog_message_unsaved_changes)) }, + confirmButton = { + TextButton(onClick = onDiscardClick) { Text(stringResource(R.string.pos_discard_changes)) } + }, + dismissButton = { + TextButton(onClick = onDismiss) { Text(stringResource(R.string.neg_keep_editing)) } + }, + ) +} + +@Preview +@Composable +private fun Preview() { + KeyMapperTheme { + UnsavedChangesDialog(onDismiss = {}, onDiscardClick = {}) + } +} diff --git a/base/src/main/res/layout/activity_main.xml b/base/src/main/res/layout/activity_main.xml index bab9f10586..36f260896e 100644 --- a/base/src/main/res/layout/activity_main.xml +++ b/base/src/main/res/layout/activity_main.xml @@ -14,6 +14,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:defaultNavHost="true" - app:navGraph="@navigation/nav_app" /> + app:navGraph="@navigation/nav_base_app" /> \ No newline at end of file diff --git a/base/src/main/res/navigation/nav_app.xml b/base/src/main/res/navigation/nav_base_app.xml similarity index 89% rename from base/src/main/res/navigation/nav_app.xml rename to base/src/main/res/navigation/nav_base_app.xml index e0061fd81a..9fec3aaceb 100644 --- a/base/src/main/res/navigation/nav_app.xml +++ b/base/src/main/res/navigation/nav_base_app.xml @@ -17,12 +17,7 @@ - + android:id="@+id/nav_base_app"> - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fun getAccessibilityService(): Class<*> +} diff --git a/data/src/main/java/io/github/sds100/keymapper/data/utils/SharedPrefsDataStoreWrapper.kt b/data/src/main/java/io/github/sds100/keymapper/data/utils/SharedPrefsDataStoreWrapper.kt index 18d6341db6..44b5eb8eee 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/utils/SharedPrefsDataStoreWrapper.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/utils/SharedPrefsDataStoreWrapper.kt @@ -11,8 +11,9 @@ import androidx.preference.PreferenceDataStore import io.github.sds100.keymapper.data.repositories.PreferenceRepository import kotlinx.coroutines.flow.first import kotlinx.coroutines.runBlocking +import javax.inject.Inject -class SharedPrefsDataStoreWrapper( +class SharedPrefsDataStoreWrapper @Inject constructor( private val preferenceRepository: PreferenceRepository, ) : PreferenceDataStore() { diff --git a/system/src/main/AndroidManifest.xml b/system/src/main/AndroidManifest.xml index 7924c3db50..6c9774f45d 100644 --- a/system/src/main/AndroidManifest.xml +++ b/system/src/main/AndroidManifest.xml @@ -2,7 +2,6 @@ - diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt index 08b3ba9ed3..b8453a5496 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationUtils.kt @@ -9,9 +9,9 @@ import androidx.annotation.RequiresApi object NotificationUtils { @RequiresApi(Build.VERSION_CODES.O) - fun openChannelSettings(ctx: Context, packageName: String, channelId: String) { + fun openChannelSettings(ctx: Context, channelId: String) { Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply { - putExtra(Settings.EXTRA_APP_PACKAGE, packageName) + putExtra(Settings.EXTRA_APP_PACKAGE, ctx.packageName) putExtra(Settings.EXTRA_CHANNEL_ID, channelId) addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) From 17a3f98e40974723ddf71a7fdf9c82d8428c7710 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 21 May 2025 14:57:00 +0200 Subject: [PATCH 26/71] #1711 refactor more --- .../keymapper/api/IKeyEventRelayService.aidl | 37 -------- .../api/IKeyEventRelayServiceCallback.aidl | 9 -- .../github/sds100/keymapper/AppHiltModule.kt | 10 ++ .../github/sds100/keymapper/KeyMapperApp.kt | 6 +- .../sds100/keymapper/home/HomeFragment.kt | 8 +- .../keymapper/keymaps/ConfigKeyMapFragment.kt | 61 +++++++++++- .../keymapper/keymaps/ConfigKeyMapScreen.kt | 3 +- .../keymaps/ConfigKeyMapViewModel.kt | 22 +++++ .../trigger/ConfigTriggerViewModel.kt | 42 +++++++++ .../sds100/keymapper/trigger/TriggerScreen.kt | 26 ++++++ .../utils/navigation/NavDirectionProvider.kt | 28 ++++++ app/src/main/res/navigation/nav_app.xml | 56 +++++++++++ .../android/content/pm/IPackageManager.aidl | 5 - .../android/hardware/input/IInputManager.aidl | 6 -- .../keymapper/base/ActivityViewModel.kt | 4 +- .../base/actions/ChooseActionFragment.kt | 2 +- .../base/actions/ChooseActionViewModel.kt | 4 +- .../base/actions/ConfigActionsViewModel.kt | 8 +- .../base/actions/CreateActionDelegate.kt | 6 +- .../keyevent/ConfigKeyEventActionFragment.kt | 2 +- .../keyevent/ConfigKeyEventActionViewModel.kt | 8 +- .../constraints/ChooseConstraintFragment.kt | 2 +- .../constraints/ChooseConstraintViewModel.kt | 8 +- .../constraints/ConfigConstraintsViewModel.kt | 8 +- .../keymapper/base/home/BaseHomeViewModel.kt | 4 +- .../base/keymaps/BaseConfigKeyMapFragment.kt | 67 -------------- .../base/keymaps/ConfigKeyMapViewModel.kt | 12 +-- .../base/keymaps/KeyMapListViewModel.kt | 10 +- .../system/intents/ConfigIntentFragment.kt | 2 +- .../system/intents/ConfigIntentViewModel.kt | 8 +- .../trigger/BaseConfigTriggerViewModel.kt | 4 +- .../base/trigger/BaseTriggerScreen.kt | 14 --- .../navigation/BaseNavDirectionProvider.kt | 80 ++++++++++++++++ .../{ui => navigation}/NavDestination.kt | 4 +- .../utils/{ui => navigation}/NavResult.kt | 2 +- .../utils/{ui => navigation}/NavigateEvent.kt | 2 +- .../{ui => navigation}/NavigationUtils.kt | 2 +- .../{ui => navigation}/NavigationViewModel.kt | 92 +------------------ .../base/utils/ui/RecyclerViewFragment.kt | 1 + base/src/main/res/navigation/nav_base_app.xml | 29 ------ .../main/res/navigation/nav_config_keymap.xml | 36 -------- .../apps/AndroidPackageManagerAdapter.kt | 10 +- .../sds100/keymapper/system/root/SuAdapter.kt | 9 +- 43 files changed, 400 insertions(+), 359 deletions(-) delete mode 100644 api/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayService.aidl delete mode 100644 api/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayServiceCallback.aidl create mode 100644 app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt create mode 100644 app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt create mode 100644 app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt create mode 100644 app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt delete mode 100644 base/src/main/aidl/android/content/pm/IPackageManager.aidl delete mode 100644 base/src/main/aidl/android/hardware/input/IInputManager.aidl delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapFragment.kt create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/BaseNavDirectionProvider.kt rename base/src/main/java/io/github/sds100/keymapper/base/utils/{ui => navigation}/NavDestination.kt (98%) rename base/src/main/java/io/github/sds100/keymapper/base/utils/{ui => navigation}/NavResult.kt (50%) rename base/src/main/java/io/github/sds100/keymapper/base/utils/{ui => navigation}/NavigateEvent.kt (58%) rename base/src/main/java/io/github/sds100/keymapper/base/utils/{ui => navigation}/NavigationUtils.kt (94%) rename base/src/main/java/io/github/sds100/keymapper/base/utils/{ui => navigation}/NavigationViewModel.kt (72%) delete mode 100644 base/src/main/res/navigation/nav_config_keymap.xml diff --git a/api/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayService.aidl b/api/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayService.aidl deleted file mode 100644 index 21c461d278..0000000000 --- a/api/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayService.aidl +++ /dev/null @@ -1,37 +0,0 @@ -package io.github.sds100.keymapper.api; - -import android.view.KeyEvent; -import android.view.MotionEvent; -import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback; - -interface IKeyEventRelayService { - /** - * Send a key event to the target package that is registered with - * a callback. - * - * callbackID parameter was added in Key Mapper 2.8. - */ - boolean sendKeyEvent(in KeyEvent event, in String targetPackageName, in String callbackId); - - /** - * Register a callback to receive key events from this relay service. The service - * checks the process uid of the caller to this method and only permits certain applications - * from connecting. - * - * id parameter was added in Key Mapper 2.8. - */ - void registerCallback(IKeyEventRelayServiceCallback client, String id); - - /** - * Unregister all the callbacks associated with the calling package from this relay service. - * - * callbackID parameter was added in Key Mapper 2.8. - */ - void unregisterCallback(String callbackId); - - /** - * Send a motion event to the target package that is registered with - * a callback. - */ - boolean sendMotionEvent(in MotionEvent event, in String targetPackageName, in String callbackId); -} \ No newline at end of file diff --git a/api/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayServiceCallback.aidl b/api/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayServiceCallback.aidl deleted file mode 100644 index 1086741930..0000000000 --- a/api/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayServiceCallback.aidl +++ /dev/null @@ -1,9 +0,0 @@ -package io.github.sds100.keymapper.api; - -import android.view.KeyEvent; -import android.view.MotionEvent; - -interface IKeyEventRelayServiceCallback { - boolean onKeyEvent(in KeyEvent event); - boolean onMotionEvent(in MotionEvent event); -} \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt index 9e6d0a904a..29e57d94c7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt +++ b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt @@ -5,10 +5,13 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import io.github.sds100.keymapper.base.utils.navigation.BaseNavDirectionProvider import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.KeyMapperClassProvider import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider import io.github.sds100.keymapper.common.utils.DispatcherProvider +import io.github.sds100.keymapper.system.accessibility.MyAccessibilityService +import io.github.sds100.keymapper.utils.navigation.NavDirectionProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope import javax.inject.Singleton @@ -45,5 +48,12 @@ class AppHiltModule { override fun getMainActivity(): Class<*> { return MainActivity::class.java } + + override fun getAccessibilityService(): Class<*> { + return MyAccessibilityService::class.java + } } + + @Provides + fun provideNavDirectionProvider(): BaseNavDirectionProvider = NavDirectionProvider() } diff --git a/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt b/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt index 928cc6695b..eb29f31ee0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt +++ b/app/src/main/java/io/github/sds100/keymapper/KeyMapperApp.kt @@ -6,4 +6,8 @@ import io.github.sds100.keymapper.base.BaseKeyMapperApp @SuppressLint("LogNotTimber") @HiltAndroidApp -class KeyMapperApp : BaseKeyMapperApp() +class KeyMapperApp : BaseKeyMapperApp() { + override fun getMainActivityClass(): Class<*> { + return MainActivity::class.java + } +} diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt index 695ebccf33..247034da48 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt @@ -17,10 +17,10 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.base.NavAppDirections +import io.github.sds100.keymapper.base.NavBaseAppDirections import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.base.utils.navigation.setupNavigation import io.github.sds100.keymapper.base.utils.ui.showPopups @AndroidEntryPoint @@ -55,10 +55,10 @@ class HomeFragment : Fragment() { ), viewModel = homeViewModel, onSettingsClick = { - findNavController().navigate(NavAppDirections.toSettingsFragment()) + findNavController().navigate(NavBaseAppDirections.toSettingsFragment()) }, onAboutClick = { - findNavController().navigate(NavAppDirections.actionGlobalAboutFragment()) + findNavController().navigate(NavBaseAppDirections.actionGlobalAboutFragment()) }, finishActivity = requireActivity()::finish, ) diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt index 7d5d924ce4..1af123796f 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt @@ -14,14 +14,48 @@ import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ViewCompositionStrategy +import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController +import androidx.navigation.fragment.navArgs import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.keymaps.BaseConfigKeyMapFragment +import io.github.sds100.keymapper.base.utils.navigation.setupNavigation +import io.github.sds100.keymapper.base.utils.ui.showPopups @AndroidEntryPoint -class ConfigKeyMapFragment : BaseConfigKeyMapFragment() { +class ConfigKeyMapFragment : Fragment() { + + private val args by navArgs() + + val viewModel: ConfigKeyMapViewModel by activityViewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + // only load the keymap if opening this fragment for the first time + if (savedInstanceState == null) { + args.keyMapUid.also { keyMapUid -> + if (keyMapUid == null) { + viewModel.loadNewKeymap( + args.newFloatingButtonTriggerKey, + groupUid = args.groupUid, + ) + } else { + viewModel.loadKeyMap(keyMapUid) + } + } + + if (args.showAdvancedTriggers) { + viewModel.configTriggerViewModel.showAdvancedTriggersBottomSheet = true + } + } + + viewModel.configTriggerViewModel.setupNavigation(this) + viewModel.configActionsViewModel.setupNavigation(this) + viewModel.configConstraintsViewModel.setupNavigation(this) + } override fun onCreateView( inflater: LayoutInflater, @@ -51,4 +85,27 @@ class ConfigKeyMapFragment : BaseConfigKeyMapFragment() { return this.root } } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + viewModel.configTriggerViewModel.showPopups(this, view) + viewModel.configTriggerViewModel.optionsViewModel.showPopups(this, view) + viewModel.configActionsViewModel.showPopups(this, view) + viewModel.configConstraintsViewModel.showPopups(this, view) + } + + override fun onSaveInstanceState(outState: Bundle) { + viewModel.saveState(outState) + + super.onSaveInstanceState(outState) + } + + override fun onViewStateRestored(savedInstanceState: Bundle?) { + super.onViewStateRestored(savedInstanceState) + + savedInstanceState ?: return + + viewModel.restoreState(savedInstanceState) + } } diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt index 1c9317bfa7..02c9d3f7b5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt @@ -13,10 +13,9 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.actions.ActionsScreen import io.github.sds100.keymapper.base.constraints.ConstraintsScreen import io.github.sds100.keymapper.base.keymaps.BaseConfigKeyMapScreen -import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapViewModel import io.github.sds100.keymapper.base.keymaps.KeyMapOptionsScreen -import io.github.sds100.keymapper.base.trigger.TriggerScreen import io.github.sds100.keymapper.base.utils.ui.UnsavedChangesDialog +import io.github.sds100.keymapper.trigger.TriggerScreen @Composable fun ConfigKeyMapScreen( diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt new file mode 100644 index 0000000000..d11e6e2cac --- /dev/null +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt @@ -0,0 +1,22 @@ +package io.github.sds100.keymapper.keymaps + +import dagger.hilt.android.lifecycle.HiltViewModel +import io.github.sds100.keymapper.base.actions.ConfigActionsViewModel +import io.github.sds100.keymapper.base.constraints.ConfigConstraintsViewModel +import io.github.sds100.keymapper.base.keymaps.BaseConfigKeyMapViewModel +import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.trigger.ConfigTriggerViewModel +import javax.inject.Inject + +@HiltViewModel +class ConfigKeyMapViewModel @Inject constructor( + override val configActionsViewModel: ConfigActionsViewModel, + override val configTriggerViewModel: ConfigTriggerViewModel, + override val configConstraintsViewModel: ConfigConstraintsViewModel, + config: ConfigKeyMapUseCase, + onboarding: OnboardingUseCase, +) : BaseConfigKeyMapViewModel( + config = config, + onboarding = onboarding, +) diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt new file mode 100644 index 0000000000..1264107d0a --- /dev/null +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt @@ -0,0 +1,42 @@ +package io.github.sds100.keymapper.trigger + +import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.CreateKeyMapShortcutUseCase +import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.purchasing.PurchasingManager +import io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel +import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase +import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import kotlinx.coroutines.CoroutineScope +import javax.inject.Inject + +class ConfigTriggerViewModel @Inject constructor( + private val coroutineScope: CoroutineScope, + private val onboarding: OnboardingUseCase, + private val config: ConfigKeyMapUseCase, + private val recordTrigger: RecordTriggerUseCase, + private val createKeyMapShortcut: CreateKeyMapShortcutUseCase, + private val displayKeyMap: DisplayKeyMapUseCase, + private val purchasingManager: PurchasingManager, + private val setupGuiKeyboard: SetupGuiKeyboardUseCase, + private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, + resourceProvider: ResourceProvider, +) : BaseConfigTriggerViewModel( + coroutineScope = coroutineScope, + onboarding = onboarding, + config = config, + recordTrigger = recordTrigger, + createKeyMapShortcut = createKeyMapShortcut, + displayKeyMap = displayKeyMap, + purchasingManager = purchasingManager, + setupGuiKeyboard = setupGuiKeyboard, + fingerprintGesturesSupported = fingerprintGesturesSupported, + resourceProvider = resourceProvider, +) { + override fun onEditFloatingButtonClick() {} + + override fun onEditFloatingLayoutClick() {} +} diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt new file mode 100644 index 0000000000..e48d53e301 --- /dev/null +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt @@ -0,0 +1,26 @@ +package io.github.sds100.keymapper.trigger + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import io.github.sds100.keymapper.base.trigger.BaseTriggerScreen + +@Composable +fun TriggerScreen(modifier: Modifier = Modifier, viewModel: ConfigTriggerViewModel) { + + + // TODO +// HandleAssistantTriggerSetupBottomSheet(viewModel = viewModel) +// +// if (viewModel.showAdvancedTriggersBottomSheet) { +// AdvancedTriggersBottomSheet( +// modifier = Modifier.systemBarsPadding(), +// viewModel = viewModel, +// onDismissRequest = { +// viewModel.showAdvancedTriggersBottomSheet = false +// }, +// sheetState = sheetState, +// ) +// } + + BaseTriggerScreen(modifier, viewModel) +} diff --git a/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt b/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt new file mode 100644 index 0000000000..761a7d2e0f --- /dev/null +++ b/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt @@ -0,0 +1,28 @@ +package io.github.sds100.keymapper.utils.navigation + +import androidx.navigation.NavDirections +import io.github.sds100.keymapper.NavAppDirections +import io.github.sds100.keymapper.base.utils.navigation.BaseNavDirectionProvider +import io.github.sds100.keymapper.base.utils.navigation.NavDestination + +class NavDirectionProvider : BaseNavDirectionProvider() { + override fun getDirection(destination: NavDestination<*>, requestKey: String): NavDirections { + return when (destination) { + is NavDestination.ConfigKeyMap -> when (destination) { + is NavDestination.ConfigKeyMap.New -> + NavAppDirections.actionToConfigKeymap( + groupUid = destination.groupUid, + showAdvancedTriggers = destination.showAdvancedTriggers, + ) + + is NavDestination.ConfigKeyMap.Open -> + NavAppDirections.actionToConfigKeymap( + keyMapUid = destination.keyMapUid, + showAdvancedTriggers = destination.showAdvancedTriggers, + ) + } + + else -> super.getDirection(destination, requestKey) + } + } +} diff --git a/app/src/main/res/navigation/nav_app.xml b/app/src/main/res/navigation/nav_app.xml index e066ce792f..760b20972c 100644 --- a/app/src/main/res/navigation/nav_app.xml +++ b/app/src/main/res/navigation/nav_app.xml @@ -24,5 +24,61 @@ android:name="io.github.sds100.keymapper.home.HomeFragment" tools:layout="@layout/fragment_compose" /> + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/base/src/main/aidl/android/content/pm/IPackageManager.aidl b/base/src/main/aidl/android/content/pm/IPackageManager.aidl deleted file mode 100644 index 51f2382d8b..0000000000 --- a/base/src/main/aidl/android/content/pm/IPackageManager.aidl +++ /dev/null @@ -1,5 +0,0 @@ -package android.content.pm; - -interface IPackageManager { - void grantRuntimePermission(String packageName, String permissionName, int userId); -} \ No newline at end of file diff --git a/base/src/main/aidl/android/hardware/input/IInputManager.aidl b/base/src/main/aidl/android/hardware/input/IInputManager.aidl deleted file mode 100644 index 0cbe5f383d..0000000000 --- a/base/src/main/aidl/android/hardware/input/IInputManager.aidl +++ /dev/null @@ -1,6 +0,0 @@ -package android.hardware.input; - - -interface IInputManager { - boolean injectInputEvent(in InputEvent event, int mode); -} \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt index 62bc8f1222..bced0ce4a2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt @@ -3,8 +3,8 @@ package io.github.sds100.keymapper.base import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt index 24ebd7ea30..616e52f5e4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt @@ -26,7 +26,7 @@ import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.base.utils.navigation.setupNavigation import io.github.sds100.keymapper.base.utils.ui.showPopups import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index 5aba3cce3d..752c4427fe 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -9,8 +9,8 @@ import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.containsQuery import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.DialogResponse -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index 8b97afb009..bace720c14 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -17,16 +17,16 @@ import io.github.sds100.keymapper.common.utils.mapData import io.github.sds100.keymapper.base.utils.ui.ChooseAppStoreModel import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.LinkType -import io.github.sds100.keymapper.base.utils.ui.NavDestination -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavDestination +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index 5930539bab..a4ad4c8ace 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -13,12 +13,12 @@ import io.github.sds100.keymapper.base.utils.DndModeStrings import io.github.sds100.keymapper.base.utils.RingerModeStrings import io.github.sds100.keymapper.base.utils.VolumeStreamStrings import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem -import io.github.sds100.keymapper.base.utils.ui.NavDestination -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavDestination +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.system.camera.CameraLens diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt index ca0c03ed71..cad126de9d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt @@ -21,7 +21,7 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.databinding.FragmentConfigKeyEventBinding import io.github.sds100.keymapper.base.utils.ui.configuredCheckBox import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.base.utils.navigation.setupNavigation import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.common.utils.putJsonSerializable import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt index 4113701005..14d8709373 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -10,11 +10,11 @@ import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.utils.InputEventStrings import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem -import io.github.sds100.keymapper.base.utils.ui.NavDestination -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavDestination +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt index 962bad05cd..fc45b4640e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt @@ -26,7 +26,7 @@ import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.base.utils.navigation.setupNavigation import io.github.sds100.keymapper.base.utils.ui.showPopups import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt index 035b29aa1d..bdedb536e3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt @@ -9,15 +9,15 @@ import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.containsQuery import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.base.utils.ui.NavDestination -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavDestination +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel -import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.common.utils.State diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index 1d03f6620c..49326bbe44 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -7,15 +7,15 @@ import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.isFixable -import io.github.sds100.keymapper.base.utils.ui.NavDestination -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavDestination +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt index ccd16b2b91..98eec19796 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt @@ -16,8 +16,8 @@ import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.utils.ui.DialogResponse -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapFragment.kt deleted file mode 100644 index d981e60868..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapFragment.kt +++ /dev/null @@ -1,67 +0,0 @@ -package io.github.sds100.keymapper.base.keymaps - -import android.os.Bundle -import android.view.View -import androidx.fragment.app.Fragment -import androidx.navigation.fragment.navArgs -import androidx.navigation.navGraphViewModels -import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.ui.setupNavigation -import io.github.sds100.keymapper.base.utils.ui.showPopups -import io.github.sds100.keymapper.keymaps.ConfigKeyMapFragmentArgs - -abstract class BaseConfigKeyMapFragment : Fragment() { - - private val args by navArgs() - - val viewModel: ConfigKeyMapViewModel by navGraphViewModels(R.id.nav_config_keymap) - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - // only load the keymap if opening this fragment for the first time - if (savedInstanceState == null) { - args.keyMapUid.also { keyMapUid -> - if (keyMapUid == null) { - viewModel.loadNewKeymap( - args.newFloatingButtonTriggerKey, - groupUid = args.groupUid, - ) - } else { - viewModel.loadKeyMap(keyMapUid) - } - } - - if (args.showAdvancedTriggers) { - viewModel.configTriggerViewModel.showAdvancedTriggersBottomSheet = true - } - } - - viewModel.configTriggerViewModel.setupNavigation(this) - viewModel.configActionsViewModel.setupNavigation(this) - viewModel.configConstraintsViewModel.setupNavigation(this) - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - viewModel.configTriggerViewModel.showPopups(this, view) - viewModel.configTriggerViewModel.optionsViewModel.showPopups(this, view) - viewModel.configActionsViewModel.showPopups(this, view) - viewModel.configConstraintsViewModel.showPopups(this, view) - } - - override fun onSaveInstanceState(outState: Bundle) { - viewModel.saveState(outState) - - super.onSaveInstanceState(outState) - } - - override fun onViewStateRestored(savedInstanceState: Bundle?) { - super.onViewStateRestored(savedInstanceState) - - savedInstanceState ?: return - - viewModel.restoreState(savedInstanceState) - } -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt index 6ec4b4a4b4..2455fe24bc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt @@ -3,7 +3,6 @@ package io.github.sds100.keymapper.base.keymaps import android.os.Bundle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.actions.ConfigActionsViewModel import io.github.sds100.keymapper.base.constraints.ConfigConstraintsViewModel import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget @@ -20,13 +19,8 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -import javax.inject.Inject -@HiltViewModel -class ConfigKeyMapViewModel @Inject constructor( - val configActionsViewModel: ConfigActionsViewModel, - val configTriggerViewModel: BaseConfigTriggerViewModel, - val configConstraintsViewModel: ConfigConstraintsViewModel, +abstract class BaseConfigKeyMapViewModel( private val config: ConfigKeyMapUseCase, private val onboarding: OnboardingUseCase, ) : ViewModel() { @@ -35,6 +29,10 @@ class ConfigKeyMapViewModel @Inject constructor( private const val STATE_KEY = "config_keymap" } + abstract val configActionsViewModel: ConfigActionsViewModel + abstract val configTriggerViewModel: BaseConfigTriggerViewModel + abstract val configConstraintsViewModel: ConfigConstraintsViewModel + val isEnabled: StateFlow = config.keyMap .map { state -> state.dataOrNull()?.isEnabled ?: true } .stateIn(viewModelScope, SharingStarted.Eagerly, true) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index 013a882172..16891efd2c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -29,10 +29,10 @@ import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider -import io.github.sds100.keymapper.base.utils.ui.NavDestination -import io.github.sds100.keymapper.base.utils.ui.NavigateEvent -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavDestination +import io.github.sds100.keymapper.base.utils.navigation.NavigateEvent +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl @@ -40,7 +40,7 @@ import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.SelectionState import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt index 5f115291f0..7f46dbbcf9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt @@ -24,7 +24,7 @@ import io.github.sds100.keymapper.base.databinding.ListItemIntentExtraBoolBindin import io.github.sds100.keymapper.base.intentExtraBool import io.github.sds100.keymapper.base.intentExtraGeneric import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.setupNavigation +import io.github.sds100.keymapper.base.utils.navigation.setupNavigation import io.github.sds100.keymapper.base.utils.ui.showPopups import io.github.sds100.keymapper.system.intents.BoolIntentExtraListItem import io.github.sds100.keymapper.system.intents.GenericIntentExtraListItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt index 6770e23b07..96c20f5f0f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt @@ -11,14 +11,14 @@ import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem -import io.github.sds100.keymapper.base.utils.ui.NavDestination -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavDestination +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.navigate +import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup import io.github.sds100.keymapper.common.utils.hasFlag import io.github.sds100.keymapper.common.utils.withFlag diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index 29e20bf41d..71a3d3c953 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -26,8 +26,8 @@ import io.github.sds100.keymapper.base.utils.InputEventStrings import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.LinkType -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModel -import io.github.sds100.keymapper.base.utils.ui.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseTriggerScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseTriggerScreen.kt index 3c44f2d64a..48b54e7ae8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseTriggerScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseTriggerScreen.kt @@ -57,20 +57,6 @@ fun BaseTriggerScreen(modifier: Modifier = Modifier, viewModel: BaseConfigTrigge val setupGuiKeyboardState by viewModel.setupGuiKeyboardState.collectAsStateWithLifecycle() val recordTriggerState by viewModel.recordTriggerState.collectAsStateWithLifecycle() - // TODO -// HandleAssistantTriggerSetupBottomSheet(viewModel = viewModel) -// -// if (viewModel.showAdvancedTriggersBottomSheet) { -// AdvancedTriggersBottomSheet( -// modifier = Modifier.systemBarsPadding(), -// viewModel = viewModel, -// onDismissRequest = { -// viewModel.showAdvancedTriggersBottomSheet = false -// }, -// sheetState = sheetState, -// ) -// } - if (viewModel.showDpadTriggerSetupBottomSheet) { DpadTriggerSetupBottomSheet( modifier = Modifier.systemBarsPadding(), diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/BaseNavDirectionProvider.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/BaseNavDirectionProvider.kt new file mode 100644 index 0000000000..74088bc265 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/BaseNavDirectionProvider.kt @@ -0,0 +1,80 @@ +package io.github.sds100.keymapper.base.utils.navigation + +import androidx.navigation.NavDirections +import io.github.sds100.keymapper.base.NavBaseAppDirections +import kotlinx.serialization.json.Json + +abstract class BaseNavDirectionProvider { + open fun getDirection(destination: NavDestination<*>, requestKey: String): NavDirections { + return when (destination) { + is NavDestination.ChooseApp -> NavBaseAppDirections.chooseApp( + destination.allowHiddenApps, + requestKey, + ) + + NavDestination.ChooseAppShortcut -> NavBaseAppDirections.chooseAppShortcut(requestKey) + NavDestination.ChooseKeyCode -> NavBaseAppDirections.chooseKeyCode(requestKey) + is NavDestination.ConfigKeyEventAction -> { + val json = destination.action?.let { + Json.encodeToString(it) + } + + NavBaseAppDirections.configKeyEvent(requestKey, json) + } + + is NavDestination.PickCoordinate -> { + val json = destination.result?.let { + Json.encodeToString(it) + } + + NavBaseAppDirections.pickDisplayCoordinate(requestKey, json) + } + + is NavDestination.PickSwipeCoordinate -> { + val json = destination.result?.let { + Json.encodeToString(it) + } + + NavBaseAppDirections.swipePickDisplayCoordinate(requestKey, json) + } + + is NavDestination.PickPinchCoordinate -> { + val json = destination.result?.let { + Json.encodeToString(it) + } + + NavBaseAppDirections.pinchPickDisplayCoordinate(requestKey, json) + } + + is NavDestination.ConfigIntent -> { + val json = destination.result?.let { + Json.encodeToString(it) + } + + NavBaseAppDirections.configIntent(requestKey, json) + } + + is NavDestination.ChooseActivity -> NavBaseAppDirections.chooseActivity(requestKey) + is NavDestination.ChooseSound -> NavBaseAppDirections.chooseSoundFile(requestKey) + NavDestination.ChooseAction -> NavBaseAppDirections.toChooseActionFragment(requestKey) + is NavDestination.ChooseConstraint -> NavBaseAppDirections.chooseConstraint( + requestKey = requestKey, + ) + + is NavDestination.ChooseBluetoothDevice -> NavBaseAppDirections.chooseBluetoothDevice( + requestKey, + ) + + NavDestination.About -> NavBaseAppDirections.actionGlobalAboutFragment() + NavDestination.Settings -> NavBaseAppDirections.toSettingsFragment() + + NavDestination.ShizukuSettings -> NavBaseAppDirections.toShizukuSettingsFragment() + is NavDestination.InteractUiElement -> NavBaseAppDirections.interactUiElement( + requestKey = requestKey, + action = destination.action?.let { Json.encodeToString(destination.action) }, + ) + + else -> throw IllegalArgumentException("Can not find a direction for this destination: $destination") + } + } +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt index e08bc82463..80110514cd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.utils.ui +package io.github.sds100.keymapper.base.utils.navigation import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickCoordinateResult @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutResult import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.base.system.intents.ConfigIntentResult -sealed class NavDestination { +abstract class NavDestination { abstract val id: String companion object { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavResult.kt similarity index 50% rename from base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavResult.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavResult.kt index 6fb7599ad9..d809597e3f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavResult.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.utils.ui +package io.github.sds100.keymapper.base.utils.navigation data class NavResult(val key: String, val result: Any?) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigateEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigateEvent.kt similarity index 58% rename from base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigateEvent.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigateEvent.kt index e8b41ee289..0f4d6db12e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigateEvent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigateEvent.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.utils.ui +package io.github.sds100.keymapper.base.utils.navigation data class NavigateEvent(val key: String, val destination: NavDestination<*>) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt similarity index 94% rename from base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationUtils.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt index d12827f9fa..7cda6397a8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.utils.ui +package io.github.sds100.keymapper.base.utils.navigation import androidx.lifecycle.LifecycleOwner import androidx.navigation.NavBackStackEntry diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt similarity index 72% rename from base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt index b785226622..0f3c9dc257 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.utils.ui +package io.github.sds100.keymapper.base.utils.navigation import android.os.Bundle import androidx.core.os.bundleOf @@ -7,7 +7,7 @@ import androidx.fragment.app.clearFragmentResultListener import androidx.fragment.app.setFragmentResultListener import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController -import io.github.sds100.keymapper.base.NavBaseAppDirections +import dagger.hilt.android.EntryPointAccessors import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.ChooseActionFragment import io.github.sds100.keymapper.base.actions.keyevent.ConfigKeyEventActionFragment @@ -138,92 +138,8 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { sendNavResultFromBundle(event.key, event.destination.id, bundle) } - val direction = when (destination) { - is NavDestination.ChooseApp -> NavBaseAppDirections.chooseApp( - destination.allowHiddenApps, - requestKey, - ) - - NavDestination.ChooseAppShortcut -> NavBaseAppDirections.chooseAppShortcut(requestKey) - NavDestination.ChooseKeyCode -> NavBaseAppDirections.chooseKeyCode(requestKey) - is NavDestination.ConfigKeyEventAction -> { - val json = destination.action?.let { - Json.encodeToString(it) - } - - NavBaseAppDirections.configKeyEvent(requestKey, json) - } - - is NavDestination.PickCoordinate -> { - val json = destination.result?.let { - Json.encodeToString(it) - } - - NavBaseAppDirections.pickDisplayCoordinate(requestKey, json) - } - - is NavDestination.PickSwipeCoordinate -> { - val json = destination.result?.let { - Json.encodeToString(it) - } - - NavBaseAppDirections.swipePickDisplayCoordinate(requestKey, json) - } - - is NavDestination.PickPinchCoordinate -> { - val json = destination.result?.let { - Json.encodeToString(it) - } - - NavBaseAppDirections.pinchPickDisplayCoordinate(requestKey, json) - } - - is NavDestination.ConfigIntent -> { - val json = destination.result?.let { - Json.encodeToString(it) - } - - NavBaseAppDirections.configIntent(requestKey, json) - } - - is NavDestination.ChooseActivity -> NavBaseAppDirections.chooseActivity(requestKey) - is NavDestination.ChooseSound -> NavBaseAppDirections.chooseSoundFile(requestKey) - NavDestination.ChooseAction -> NavBaseAppDirections.toChooseActionFragment(requestKey) - is NavDestination.ChooseConstraint -> NavBaseAppDirections.chooseConstraint( - requestKey = requestKey, - ) - - is NavDestination.ChooseBluetoothDevice -> NavBaseAppDirections.chooseBluetoothDevice( - requestKey, - ) - - NavDestination.About -> NavBaseAppDirections.actionGlobalAboutFragment() - NavDestination.Settings -> NavBaseAppDirections.toSettingsFragment() - - is NavDestination.ConfigKeyMap -> when (destination) { - is NavDestination.ConfigKeyMap.New -> - NavBaseAppDirections.actionToConfigKeymap( - groupUid = destination.groupUid, - showAdvancedTriggers = destination.showAdvancedTriggers, - ) - - is NavDestination.ConfigKeyMap.Open -> - NavBaseAppDirections.actionToConfigKeymap( - keyMapUid = destination.keyMapUid, - showAdvancedTriggers = destination.showAdvancedTriggers, - ) - } - - // TODO - is NavDestination.ChooseFloatingLayout -> return@onEach - is NavDestination.ConfigFloatingButton -> return@onEach - - NavDestination.ShizukuSettings -> NavBaseAppDirections.toShizukuSettingsFragment() - is NavDestination.InteractUiElement -> NavBaseAppDirections.interactUiElement( - requestKey = requestKey, - action = destination.action?.let { Json.encodeToString(destination.action) }, - ) - } + val direction = EntryPointAccessors.fromFragment(fragment) + .getDirection(destination, requestKey) fragment.findNavController().navigate(direction) }.launchIn(fragment.lifecycleScope) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt index be1ddb2b34..ae6f4ce86b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt @@ -20,6 +20,7 @@ import androidx.savedstate.SavedStateRegistry import com.airbnb.epoxy.EpoxyRecyclerView import com.google.android.material.bottomappbar.BottomAppBar import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.utils.navigation.observeCurrentDestinationLiveData import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/res/navigation/nav_base_app.xml b/base/src/main/res/navigation/nav_base_app.xml index 9fec3aaceb..29c613b809 100644 --- a/base/src/main/res/navigation/nav_base_app.xml +++ b/base/src/main/res/navigation/nav_base_app.xml @@ -19,34 +19,6 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nav_base_app"> - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt index 724157c541..ce3a09abfa 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt @@ -21,11 +21,12 @@ import android.provider.MediaStore import android.provider.Settings import androidx.core.content.ContextCompat import androidx.core.content.pm.PackageInfoCompat +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.success -import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow @@ -36,9 +37,12 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.io.IOException +import javax.inject.Inject +import javax.inject.Singleton -class AndroidPackageManagerAdapter( - context: Context, +@Singleton +class AndroidPackageManagerAdapter @Inject constructor( + @ApplicationContext context: Context, coroutineScope: CoroutineScope, ) : PackageManagerAdapter { private val ctx: Context = context.applicationContext diff --git a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt index 4f59bb8ceb..97739b470c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt @@ -3,12 +3,12 @@ package io.github.sds100.keymapper.system.root import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.Shell import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.common.utils.firstBlocking import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow @@ -16,10 +16,11 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import java.io.IOException import java.io.InputStream +import javax.inject.Inject +import javax.inject.Singleton - - -class SuAdapterImpl( +@Singleton +class SuAdapterImpl @Inject constructor( coroutineScope: CoroutineScope, private val preferenceRepository: PreferenceRepository, ) : SuAdapter { From 26b869685a1e179c82e059f04da02bd03b2bedfe Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 21 May 2025 17:25:29 +0200 Subject: [PATCH 27/71] #1711 refactor more files --- ...KeyMapShortcutActivityIntentBuilderImpl.kt | 3 +- .../sds100/keymapper/home/HomeViewModel.kt | 2 +- .../accessibility/MyAccessibilityService.kt | 33 +++++--- .../sds100/keymapper/base/BaseHiltModule.kt | 23 ------ .../keymapper/base/BaseSingletonHiltModule.kt | 41 ++++++++++ .../keymapper/base/BaseViewModelHiltModule.kt | 20 +++++ .../base/actions/ActionErrorSnapshot.kt | 2 +- .../base/actions/PerformActionsUseCase.kt | 75 +++++++++++-------- .../uielement/InteractUiElementUseCase.kt | 5 +- .../constraints/DetectConstraintsUseCase.kt | 16 +++- .../keymapper/base/home/BaseHomeViewModel.kt | 2 +- .../base/keymaps/ConfigKeyMapUseCase.kt | 1 + .../base/keymaps/DisplayKeyMapUseCase.kt | 6 +- .../base/keymaps/KeyMapListViewModel.kt | 2 +- .../base/keymaps/ListKeyMapsUseCase.kt | 3 +- .../keymaps/detection/DetectKeyMapsUseCase.kt | 51 ++++++++----- .../base/logging/DisplayLogUseCase.kt | 9 ++- .../base/onboarding/OnboardingUseCase.kt | 2 +- .../RerouteKeyEventsUseCase.kt | 2 +- .../base/settings/ConfigSettingsUseCase.kt | 2 +- .../accessibility/BaseAccessibilityService.kt | 2 +- .../ControlAccessibilityServiceUseCase.kt | 2 + .../ChooseBluetoothDeviceFragment.kt | 2 +- .../bluetooth/ChooseBluetoothDeviceUseCase.kt | 3 +- .../ChooseBluetoothDeviceViewModel.kt | 3 +- .../inputmethod/AutoSwitchImeController.kt | 1 - .../inputmethod/ImeInputEventInjector.kt | 7 +- .../system/inputmethod/KeyMapperImeHelper.kt | 9 ++- .../inputmethod/ShowHideInputMethodUseCase.kt | 5 +- .../ShowInputMethodPickerUseCase.kt | 7 +- .../inputmethod/ToggleCompatibleImeUseCase.kt | 6 +- .../notifications/NotificationController.kt | 6 +- .../AutoGrantPermissionController.kt | 3 +- .../base/tiles/ToggleKeyMapperKeyboardTile.kt | 2 +- .../base/trigger/SetupGuiKeyboardUseCase.kt | 2 +- .../utils/navigation/NavigationViewModel.kt | 2 +- base/src/main/res/navigation/nav_base_app.xml | 2 +- .../github/sds100/keymapper/system/Shell.kt | 13 ++-- .../keymapper/system/SystemHiltModule.kt | 17 +++++ .../system/lock/AndroidLockScreenAdapter.kt | 5 +- .../system/ringtones/RingtoneAdapter.kt | 8 +- .../sds100/keymapper/system/root/SuAdapter.kt | 8 +- .../keymapper/system/shell/ShellAdapter.kt | 5 +- .../system/shizuku/ShizukuAdapterImpl.kt | 5 +- 44 files changed, 279 insertions(+), 146 deletions(-) delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/BaseHiltModule.kt create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt rename base/src/main/java/io/github/sds100/keymapper/base/system/{ => bluetooth}/ChooseBluetoothDeviceFragment.kt (98%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/bluetooth/ChooseBluetoothDeviceUseCase.kt (88%) rename base/src/main/java/io/github/sds100/keymapper/base/system/{ => bluetooth}/ChooseBluetoothDeviceViewModel.kt (96%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/inputmethod/KeyMapperImeHelper.kt (93%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/inputmethod/ShowHideInputMethodUseCase.kt (87%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/inputmethod/ShowInputMethodPickerUseCase.kt (58%) rename {system/src/main/java/io/github/sds100/keymapper => base/src/main/java/io/github/sds100/keymapper/base}/system/inputmethod/ToggleCompatibleImeUseCase.kt (78%) diff --git a/api/src/main/java/io/github/sds100/keymapper/api/KeyMapShortcutActivityIntentBuilderImpl.kt b/api/src/main/java/io/github/sds100/keymapper/api/KeyMapShortcutActivityIntentBuilderImpl.kt index 0e15df4503..f6d8faae4f 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/KeyMapShortcutActivityIntentBuilderImpl.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/KeyMapShortcutActivityIntentBuilderImpl.kt @@ -5,10 +5,11 @@ import android.content.Intent import android.os.Bundle import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.system.apps.KeyMapShortcutActivityIntentBuilder +import javax.inject.Inject import javax.inject.Singleton @Singleton -class KeyMapShortcutActivityIntentBuilderImpl( +class KeyMapShortcutActivityIntentBuilderImpl @Inject constructor( @ApplicationContext private val ctx: Context, ) : KeyMapShortcutActivityIntentBuilder { override fun build(intentAction: String, intentExtras: Bundle): Intent { diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt index 766ec6c585..91383bea8c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt @@ -11,7 +11,7 @@ import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import javax.inject.Inject @HiltViewModel diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt index 2abe5a7bc4..08bd178d90 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt @@ -1,16 +1,18 @@ package io.github.sds100.keymapper.system.accessibility import android.content.Intent +import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.base.actions.PerformActionsUseCase -import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase +import io.github.sds100.keymapper.base.actions.PerformActionsUseCaseFactory +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCaseFactory import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCaseFactory import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapterImpl import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityService import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityServiceController +import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjectorImpl import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.devices.DevicesAdapter @@ -32,13 +34,13 @@ class MyAccessibilityService : BaseAccessibilityService() { lateinit var accessibilityServiceAdapter: AccessibilityServiceAdapterImpl @Inject - lateinit var detectConstraintsUseCase: DetectConstraintsUseCase + lateinit var detectConstraintsUseCaseFactory: DetectConstraintsUseCaseFactory @Inject - lateinit var performActionsUseCase: PerformActionsUseCase + lateinit var performActionsUseCaseFactory: PerformActionsUseCaseFactory @Inject - lateinit var detectKeyMapsUseCase: DetectKeyMapsUseCase + lateinit var detectKeyMapsUseCaseFactory: DetectKeyMapsUseCaseFactory @Inject lateinit var fingerprintGesturesSupportedUseCase: FingerprintGesturesSupportedUseCase @@ -76,14 +78,27 @@ class MyAccessibilityService : BaseAccessibilityService() { context would return null */ if (controller == null) { + val imeInputEventInjector = ImeInputEventInjectorImpl( + this, + keyEventRelayService = keyEventRelayServiceWrapper, + inputMethodAdapter = inputMethodAdapter, + ) + controller = AccessibilityServiceController( coroutineScope = coroutineScope, accessibilityService = this, inputEvents = accessibilityServiceAdapter.eventReceiver, outputEvents = accessibilityServiceAdapter.eventsToService, - detectConstraintsUseCase = detectConstraintsUseCase, - performActionsUseCase = performActionsUseCase, - detectKeyMapsUseCase = detectKeyMapsUseCase, + detectConstraintsUseCase = detectConstraintsUseCaseFactory.create(this), + performActionsUseCase = performActionsUseCaseFactory.create( + accessibilityService = this, + imeInputEventInjector = imeInputEventInjector, + ), + detectKeyMapsUseCase = detectKeyMapsUseCaseFactory.create( + accessibilityService = this, + coroutineScope = lifecycleScope, + imeInputEventInjector = imeInputEventInjector, + ), fingerprintGesturesSupportedUseCase = fingerprintGesturesSupportedUseCase, rerouteKeyEventsUseCase = rerouteKeyEventsUseCase, pauseKeyMapsUseCase = pauseKeyMapsUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseHiltModule.kt deleted file mode 100644 index be27df4c66..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseHiltModule.kt +++ /dev/null @@ -1,23 +0,0 @@ -package io.github.sds100.keymapper.base - -import dagger.Binds -import dagger.Module -import dagger.hilt.InstallIn -import dagger.hilt.components.SingletonComponent -import io.github.sds100.keymapper.base.system.notifications.AndroidNotificationAdapter -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.ResourceProviderImpl -import io.github.sds100.keymapper.system.notifications.NotificationAdapter -import javax.inject.Singleton - -@Module -@InstallIn(SingletonComponent::class) -abstract class BaseHiltModule { - @Singleton - @Binds - abstract fun provideNotificationAdapter(impl: AndroidNotificationAdapter): NotificationAdapter - - @Singleton - @Binds - abstract fun provideResourceProvider(impl: ResourceProviderImpl): ResourceProvider -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt new file mode 100644 index 0000000000..e298919d14 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt @@ -0,0 +1,41 @@ +package io.github.sds100.keymapper.base + +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCaseImpl +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.onboarding.OnboardingUseCaseImpl +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapterImpl +import io.github.sds100.keymapper.base.system.notifications.AndroidNotificationAdapter +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.ResourceProviderImpl +import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter +import io.github.sds100.keymapper.system.notifications.NotificationAdapter +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +abstract class BaseSingletonHiltModule { + @Singleton + @Binds + abstract fun provideNotificationAdapter(impl: AndroidNotificationAdapter): NotificationAdapter + + @Singleton + @Binds + abstract fun provideAccessibilityAdapter(impl: AccessibilityServiceAdapterImpl): AccessibilityServiceAdapter + + @Singleton + @Binds + abstract fun provideResourceProvider(impl: ResourceProviderImpl): ResourceProvider + + @Singleton + @Binds + abstract fun provideOnboardingUseCase(impl: OnboardingUseCaseImpl): OnboardingUseCase + + @Binds + @Singleton + abstract fun bindPauseKeyMapsUseCase(impl: PauseKeyMapsUseCaseImpl): PauseKeyMapsUseCase +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt new file mode 100644 index 0000000000..72e3e84b52 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt @@ -0,0 +1,20 @@ +package io.github.sds100.keymapper.base + +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.android.components.ViewModelComponent +import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCaseImpl +import io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCaseImpl + +@Module +@InstallIn(ViewModelComponent::class) +abstract class BaseViewModelHiltModule { + @Binds + abstract fun bindDisplayKeyMapUseCase(impl: DisplayKeyMapUseCaseImpl): DisplayKeyMapUseCase + + @Binds + abstract fun bindListKeyMapsUseCase(impl: ListKeyMapsUseCaseImpl): ListKeyMapsUseCase +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt index 9a16619172..5e5860ba35 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt @@ -11,7 +11,7 @@ import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper +import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt index fc40165f3c..ed4de5f9ca 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt @@ -5,21 +5,36 @@ import android.os.Build import android.view.InputDevice import android.view.KeyEvent import android.view.accessibility.AccessibilityNodeInfo +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.sound.SoundsManager +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeAction +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeModel +import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService +import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector +import io.github.sds100.keymapper.base.system.navigation.OpenMenuHelper +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.InputEventType +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.common.utils.firstBlocking +import io.github.sds100.keymapper.common.utils.getWordBoundaries +import io.github.sds100.keymapper.common.utils.ifIsData import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.common.utils.otherwise import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.common.utils.then +import io.github.sds100.keymapper.common.utils.withFlag import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeAction -import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeModel -import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService +import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.airplanemode.AirplaneModeAdapter import io.github.sds100.keymapper.system.apps.AppShortcutAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter @@ -27,7 +42,6 @@ import io.github.sds100.keymapper.system.bluetooth.BluetoothAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.display.DisplayAdapter -import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.system.inputevents.InputEventUtils @@ -37,25 +51,22 @@ import io.github.sds100.keymapper.system.intents.IntentAdapter import io.github.sds100.keymapper.system.intents.IntentTarget import io.github.sds100.keymapper.system.lock.LockScreenAdapter import io.github.sds100.keymapper.system.media.MediaAdapter -import io.github.sds100.keymapper.base.system.navigation.OpenMenuHelper import io.github.sds100.keymapper.system.network.NetworkAdapter import io.github.sds100.keymapper.system.nfc.NfcAdapter +import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapter +import io.github.sds100.keymapper.system.notifications.NotificationServiceEvent import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.phone.PhoneAdapter import io.github.sds100.keymapper.system.popup.ToastAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter import io.github.sds100.keymapper.system.root.SuAdapter +import io.github.sds100.keymapper.system.shell.ShellAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuInputEventInjector import io.github.sds100.keymapper.system.url.OpenUrlAdapter import io.github.sds100.keymapper.system.volume.RingerMode +import io.github.sds100.keymapper.system.volume.VolumeAdapter import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.common.utils.InputEventType -import io.github.sds100.keymapper.common.utils.dataOrNull -import io.github.sds100.keymapper.common.utils.firstBlocking -import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.common.utils.getWordBoundaries -import io.github.sds100.keymapper.common.utils.ifIsData -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow @@ -64,30 +75,20 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn -import io.github.sds100.keymapper.common.utils.withFlag import timber.log.Timber -import io.github.sds100.keymapper.system.Shell -import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjectorImpl -import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapterImpl -import io.github.sds100.keymapper.system.notifications.NotificationServiceEvent -import io.github.sds100.keymapper.system.shizuku.ShizukuInputEventInjector -import io.github.sds100.keymapper.system.volume.VolumeAdapter -import javax.inject.Inject -import javax.inject.Singleton -@Singleton -class PerformActionsUseCaseImpl @Inject constructor( +class PerformActionsUseCaseImpl @AssistedInject constructor( private val appCoroutineScope: CoroutineScope, + @Assisted private val service: IAccessibilityService, private val inputMethodAdapter: InputMethodAdapter, private val fileAdapter: FileAdapter, private val suAdapter: SuAdapter, - private val shell: Shell, + private val shell: ShellAdapter, private val intentAdapter: IntentAdapter, private val getActionErrorUseCase: GetActionErrorUseCase, - private val keyMapperImeMessenger: ImeInputEventInjectorImpl, - private val shizukuInputEventInjector: ShizukuInputEventInjector, + @Assisted + private val keyMapperImeMessenger: ImeInputEventInjector, private val packageManagerAdapter: PackageManagerAdapter, private val appShortcutAdapter: AppShortcutAdapter, private val toastAdapter: ToastAdapter, @@ -106,11 +107,13 @@ class PerformActionsUseCaseImpl @Inject constructor( private val resourceProvider: ResourceProvider, private val soundsManager: SoundsManager, private val permissionAdapter: PermissionAdapter, - private val notificationReceiverAdapter: NotificationReceiverAdapterImpl, + private val notificationReceiverAdapter: NotificationReceiverAdapter, private val ringtoneAdapter: RingtoneAdapter, - private val settingsRepository: PreferenceRepository + private val settingsRepository: PreferenceRepository, ) : PerformActionsUseCase { + private val shizukuInputEventInjector: ShizukuInputEventInjector = ShizukuInputEventInjector() + private val openMenuHelper by lazy { OpenMenuHelper( suAdapter, @@ -809,11 +812,13 @@ class PerformActionsUseCaseImpl @Inject constructor( } ActionData.DismissAllNotifications -> { - result = notificationReceiverAdapter.send(NotificationServiceEvent.DismissAllNotifications) + result = + notificationReceiverAdapter.send(NotificationServiceEvent.DismissAllNotifications) } ActionData.DismissLastNotification -> { - result = notificationReceiverAdapter.send(NotificationServiceEvent.DismissLastNotification) + result = + notificationReceiverAdapter.send(NotificationServiceEvent.DismissLastNotification) } ActionData.AnswerCall -> { @@ -1005,3 +1010,11 @@ interface PerformActionsUseCase { fun getErrorSnapshot(): ActionErrorSnapshot } + +@AssistedFactory +interface PerformActionsUseCaseFactory { + fun create( + accessibilityService: IAccessibilityService, + imeInputEventInjector: ImeInputEventInjector, + ): PerformActionsUseCaseImpl +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt index 6a35c58c34..55a857b171 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt @@ -20,8 +20,11 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.update +import javax.inject.Inject +import javax.inject.Singleton -class InteractUiElementController( +@Singleton +class InteractUiElementController @Inject constructor( private val coroutineScope: CoroutineScope, private val serviceAdapter: AccessibilityServiceAdapter, private val nodeRepository: AccessibilityNodeRepository, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt index 6b9d4b983e..f968487b2c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt @@ -1,7 +1,12 @@ package io.github.sds100.keymapper.base.constraints import android.os.Build +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import io.github.sds100.keymapper.base.actions.PerformActionsUseCaseImpl import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService +import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.devices.DevicesAdapter @@ -16,8 +21,10 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge +import javax.inject.Inject -class DetectConstraintsUseCaseImpl( +class DetectConstraintsUseCaseImpl @AssistedInject constructor( + @Assisted private val accessibilityService: IAccessibilityService, private val mediaAdapter: MediaAdapter, private val devicesAdapter: DevicesAdapter, @@ -85,3 +92,10 @@ interface DetectConstraintsUseCase { fun getSnapshot(): ConstraintSnapshot fun onDependencyChanged(dependency: ConstraintDependency): Flow } + +@AssistedFactory +interface DetectConstraintsUseCaseFactory { + fun create( + accessibilityService: IAccessibilityService, + ): DetectConstraintsUseCaseImpl +} \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt index 98eec19796..b4599f0a16 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt @@ -24,7 +24,7 @@ import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showPopup import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt index 8369529835..83cc0a34b9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt @@ -1,6 +1,7 @@ package io.github.sds100.keymapper.base.keymaps import android.database.sqlite.SQLiteConstraintException +import dagger.hilt.android.scopes.ActivityScoped import io.github.sds100.keymapper.base.actions.Action import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.RepeatMode diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index f8bd124c3b..8f20240103 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -1,6 +1,7 @@ package io.github.sds100.keymapper.base.keymaps import android.graphics.drawable.Drawable +import dagger.hilt.android.scopes.ViewModelScoped import io.github.sds100.keymapper.base.actions.DisplayActionUseCase import io.github.sds100.keymapper.base.actions.GetActionErrorUseCase import io.github.sds100.keymapper.base.constraints.DisplayConstraintUseCase @@ -25,7 +26,7 @@ import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper +import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter @@ -40,9 +41,8 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.withTimeout import javax.inject.Inject -import javax.inject.Singleton -@Singleton +@ViewModelScoped class DisplayKeyMapUseCaseImpl @Inject constructor( private val permissionAdapter: PermissionAdapter, private val inputMethodAdapter: InputMethodAdapter, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index 16891efd2c..3716e22aef 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -53,7 +53,7 @@ import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState -import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.system.permissions.Permission import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt index 6cba2d33b4..f19d47d003 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt @@ -37,9 +37,10 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.update import kotlinx.coroutines.withContext import java.util.LinkedList +import javax.inject.Inject @OptIn(ExperimentalCoroutinesApi::class) -class ListKeyMapsUseCaseImpl( +class ListKeyMapsUseCaseImpl @Inject constructor( private val keyMapRepository: KeyMapRepository, private val groupRepository: GroupRepository, private val floatingButtonRepository: FloatingButtonRepository, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt index 912c42ee2a..a5c351de6f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt @@ -4,35 +4,38 @@ import android.accessibilityservice.AccessibilityService import android.os.SystemClock import android.view.InputDevice import android.view.KeyEvent +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.constraints.ConstraintState -import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository -import io.github.sds100.keymapper.data.repositories.GroupRepository -import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.base.groups.Group import io.github.sds100.keymapper.base.groups.GroupEntityMapper import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.KeyMapEntityMapper -import io.github.sds100.keymapper.data.repositories.KeyMapRepository import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService -import io.github.sds100.keymapper.system.display.DisplayAdapter -import io.github.sds100.keymapper.system.inputevents.InputEventInjector import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector -import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.base.system.navigation.OpenMenuHelper +import io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.common.utils.InputEventType +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.data.Keys +import io.github.sds100.keymapper.data.PreferenceDefaults +import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository +import io.github.sds100.keymapper.data.repositories.GroupRepository +import io.github.sds100.keymapper.data.repositories.KeyMapRepository +import io.github.sds100.keymapper.data.repositories.PreferenceRepository +import io.github.sds100.keymapper.system.display.DisplayAdapter +import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.popup.ToastAdapter import io.github.sds100.keymapper.system.root.SuAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuInputEventInjector import io.github.sds100.keymapper.system.vibrator.VibratorAdapter import io.github.sds100.keymapper.system.volume.VolumeAdapter -import io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey -import io.github.sds100.keymapper.common.utils.InputEventType -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.dataOrNull -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow @@ -42,11 +45,8 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import timber.log.Timber -import javax.inject.Inject -import javax.inject.Singleton -@Singleton -class DetectKeyMapsUseCaseImpl @Inject constructor( +class DetectKeyMapsUseCaseImpl @AssistedInject constructor( private val keyMapRepository: KeyMapRepository, private val floatingButtonRepository: FloatingButtonRepository, private val groupRepository: GroupRepository, @@ -54,13 +54,15 @@ class DetectKeyMapsUseCaseImpl @Inject constructor( private val suAdapter: SuAdapter, private val displayAdapter: DisplayAdapter, private val volumeAdapter: VolumeAdapter, + @Assisted private val imeInputEventInjector: ImeInputEventInjector, + @Assisted private val accessibilityService: IAccessibilityService, - private val shizukuInputEventInjector: InputEventInjector, private val toastAdapter: ToastAdapter, private val permissionAdapter: PermissionAdapter, private val resourceProvider: ResourceProvider, private val vibrator: VibratorAdapter, + @Assisted private val coroutineScope: CoroutineScope, ) : DetectKeyMapsUseCase { @@ -163,6 +165,8 @@ class DetectKeyMapsUseCaseImpl @Inject constructor( override val currentTime: Long get() = SystemClock.elapsedRealtime() + private val shizukuInputEventInjector = ShizukuInputEventInjector() + private val openMenuHelper = OpenMenuHelper( suAdapter, accessibilityService, @@ -265,3 +269,12 @@ interface DetectKeyMapsUseCase { val isScreenOn: Flow } + +@AssistedFactory +interface DetectKeyMapsUseCaseFactory { + fun create( + accessibilityService: IAccessibilityService, + coroutineScope: CoroutineScope, + imeInputEventInjector: ImeInputEventInjector, + ): DetectKeyMapsUseCaseImpl +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt index c2aee808cb..0ffde83f82 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/DisplayLogUseCase.kt @@ -1,20 +1,21 @@ package io.github.sds100.keymapper.base.logging import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.system.clipboard.ClipboardAdapter -import io.github.sds100.keymapper.system.files.FileAdapter +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.ifIsData import io.github.sds100.keymapper.common.utils.mapData -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.data.repositories.LogRepository +import io.github.sds100.keymapper.system.clipboard.ClipboardAdapter +import io.github.sds100.keymapper.system.files.FileAdapter import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map +import javax.inject.Inject -class DisplayLogUseCaseImpl( +class DisplayLogUseCaseImpl @Inject constructor( private val repository: LogRepository, private val resourceProvider: ResourceProvider, private val clipboardAdapter: ClipboardAdapter, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt index 7c085c179d..0cba645234 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt @@ -20,7 +20,7 @@ import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.data.utils.PrefDelegate import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.files.FileAdapter -import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper +import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.leanback.LeanbackAdapter import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt index 82ed755bc1..b17834f277 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -8,7 +8,7 @@ import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper +import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import kotlinx.coroutines.flow.map import kotlinx.coroutines.runBlocking import javax.inject.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt index 545fd8ec11..5641136c76 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt @@ -14,7 +14,7 @@ import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper +import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt index bc1c82f669..b4e0548b0a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt @@ -161,7 +161,7 @@ abstract class BaseAccessibilityService : } } - private val keyEventRelayServiceWrapper: KeyEventRelayServiceWrapperImpl by lazy { + val keyEventRelayServiceWrapper: KeyEventRelayServiceWrapperImpl by lazy { KeyEventRelayServiceWrapperImpl( ctx = this, id = CALLBACK_ID_ACCESSIBILITY_SERVICE, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/ControlAccessibilityServiceUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/ControlAccessibilityServiceUseCase.kt index decc0040e3..e158049be3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/ControlAccessibilityServiceUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/ControlAccessibilityServiceUseCase.kt @@ -5,7 +5,9 @@ import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import kotlinx.coroutines.flow.Flow +import javax.inject.Singleton +@Singleton class ControlAccessibilityServiceUseCaseImpl( private val adapter: AccessibilityServiceAdapter, private val permissionAdapter: PermissionAdapter, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceFragment.kt similarity index 98% rename from base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceFragment.kt index 5305a5816e..57b4061d54 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.system +package io.github.sds100.keymapper.base.system.bluetooth import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle diff --git a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceUseCase.kt similarity index 88% rename from system/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceUseCase.kt index 0261db0fe2..32c28bd8c5 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/ChooseBluetoothDeviceUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceUseCase.kt @@ -1,5 +1,6 @@ -package io.github.sds100.keymapper.system.bluetooth +package io.github.sds100.keymapper.base.system.bluetooth +import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt similarity index 96% rename from base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt index 6289b9c79b..41b75e2a4e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/ChooseBluetoothDeviceViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.base.system +package io.github.sds100.keymapper.base.system.bluetooth import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -6,7 +6,6 @@ import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import io.github.sds100.keymapper.system.bluetooth.ChooseBluetoothDeviceUseCase import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem import io.github.sds100.keymapper.base.utils.ui.ListItem import io.github.sds100.keymapper.base.utils.ui.PopupViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt index 847455cfeb..3cedb56284 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/AutoSwitchImeController.kt @@ -17,7 +17,6 @@ import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapt import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.popup.ToastAdapter import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.launchIn diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ImeInputEventInjector.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ImeInputEventInjector.kt index fffee5f324..db7abdfcde 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ImeInputEventInjector.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ImeInputEventInjector.kt @@ -12,14 +12,13 @@ import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyEventRelayServiceWrapper import timber.log.Timber -import javax.inject.Inject /** * This class handles communicating with the Key Mapper input method services * so key events and text can be inputted. */ -class ImeInputEventInjectorImpl @Inject constructor( - context: Context, +class ImeInputEventInjectorImpl( + private val ctx: Context, private val keyEventRelayService: KeyEventRelayServiceWrapper, private val inputMethodAdapter: InputMethodAdapter, ) : ImeInputEventInjector { @@ -43,8 +42,6 @@ class ImeInputEventInjectorImpl @Inject constructor( private const val CALLBACK_ID_INPUT_METHOD = "input_method" } - private val ctx = context.applicationContext - override suspend fun inputKeyEvent(model: InputKeyModel) { Timber.d("Inject key event with input method ${KeyEvent.keyCodeToString(model.keyCode)}, $model") diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/KeyMapperImeHelper.kt similarity index 93% rename from system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/KeyMapperImeHelper.kt index a41b64d86d..d5724f37b4 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/KeyMapperImeHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/KeyMapperImeHelper.kt @@ -1,6 +1,5 @@ -package io.github.sds100.keymapper.system.inputmethod +package io.github.sds100.keymapper.base.system.inputmethod -import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success @@ -8,13 +7,15 @@ import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.common.utils.suspendThen import io.github.sds100.keymapper.common.utils.then +import io.github.sds100.keymapper.system.inputmethod.ImeInfo +import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import javax.inject.Inject -class KeyMapperImeHelper @Inject constructor( +class KeyMapperImeHelper( private val imeAdapter: InputMethodAdapter, - private val packageName: String + private val packageName: String, ) { companion object { const val KEY_MAPPER_GUI_IME_PACKAGE = diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ShowHideInputMethodUseCase.kt similarity index 87% rename from system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ShowHideInputMethodUseCase.kt index 02f1ea4b0e..3fe64c9677 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowHideInputMethodUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ShowHideInputMethodUseCase.kt @@ -1,12 +1,13 @@ -package io.github.sds100.keymapper.system.inputmethod +package io.github.sds100.keymapper.base.system.inputmethod import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.runBlocking +import javax.inject.Inject -class ShowHideInputMethodUseCaseImpl( +class ShowHideInputMethodUseCaseImpl @Inject constructor( private val serviceAdapter: AccessibilityServiceAdapter, ) : ShowHideInputMethodUseCase { override val onHiddenChange: Flow = serviceAdapter.eventReceiver.mapNotNull { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowInputMethodPickerUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ShowInputMethodPickerUseCase.kt similarity index 58% rename from system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowInputMethodPickerUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ShowInputMethodPickerUseCase.kt index 42c45dcd14..38caa71748 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ShowInputMethodPickerUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ShowInputMethodPickerUseCase.kt @@ -1,8 +1,9 @@ -package io.github.sds100.keymapper.system.inputmethod +package io.github.sds100.keymapper.base.system.inputmethod +import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter +import javax.inject.Inject - -class ShowInputMethodPickerUseCaseImpl( +class ShowInputMethodPickerUseCaseImpl @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, ) : ShowInputMethodPickerUseCase { override fun show(fromForeground: Boolean) { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ToggleCompatibleImeUseCase.kt similarity index 78% rename from system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt rename to base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ToggleCompatibleImeUseCase.kt index 6f81a122f8..615e276c24 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/ToggleCompatibleImeUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ToggleCompatibleImeUseCase.kt @@ -1,10 +1,14 @@ -package io.github.sds100.keymapper.system.inputmethod +package io.github.sds100.keymapper.base.system.inputmethod import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.system.inputmethod.ImeInfo +import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import kotlinx.coroutines.flow.Flow import javax.inject.Inject +import javax.inject.Singleton +@Singleton class ToggleCompatibleImeUseCaseImpl @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, private val buildConfigProvider: BuildConfigProvider, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt index 44e5bfab45..bf7bc273e2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt @@ -16,9 +16,9 @@ import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState -import io.github.sds100.keymapper.system.inputmethod.ShowHideInputMethodUseCase -import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase -import io.github.sds100.keymapper.system.inputmethod.ToggleCompatibleImeUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ShowHideInputMethodUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ToggleCompatibleImeUseCase import io.github.sds100.keymapper.system.notifications.NotificationChannelModel import io.github.sds100.keymapper.system.notifications.NotificationIntentType import io.github.sds100.keymapper.system.notifications.NotificationModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/permissions/AutoGrantPermissionController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/permissions/AutoGrantPermissionController.kt index aeed428330..e00c42515d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/permissions/AutoGrantPermissionController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/permissions/AutoGrantPermissionController.kt @@ -10,8 +10,9 @@ import io.github.sds100.keymapper.system.popup.ToastAdapter import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn +import javax.inject.Inject -class AutoGrantPermissionController( +class AutoGrantPermissionController @Inject constructor( private val coroutineScope: CoroutineScope, private val permissionAdapter: PermissionAdapter, private val popupAdapter: ToastAdapter, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleKeyMapperKeyboardTile.kt b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleKeyMapperKeyboardTile.kt index f920c77b9e..509f1dd30d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleKeyMapperKeyboardTile.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleKeyMapperKeyboardTile.kt @@ -18,7 +18,7 @@ import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.system.inputmethod.ToggleCompatibleImeUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ToggleCompatibleImeUseCase import kotlinx.coroutines.flow.first import javax.inject.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt index 8797180f2f..ea63afbd42 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt @@ -6,7 +6,7 @@ import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.apps.getPackageInfoFlow import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.system.inputmethod.KeyMapperImeHelper +import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt index 0f3c9dc257..610f00eab5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt @@ -21,7 +21,7 @@ import io.github.sds100.keymapper.base.actions.tapscreen.PickDisplayCoordinateFr import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementFragment import io.github.sds100.keymapper.base.constraints.ChooseConstraintFragment import io.github.sds100.keymapper.base.constraints.Constraint -import io.github.sds100.keymapper.base.system.ChooseBluetoothDeviceFragment +import io.github.sds100.keymapper.base.system.bluetooth.ChooseBluetoothDeviceFragment import io.github.sds100.keymapper.base.system.apps.ChooseActivityFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutFragment diff --git a/base/src/main/res/navigation/nav_base_app.xml b/base/src/main/res/navigation/nav_base_app.xml index 29c613b809..43d52ea28b 100644 --- a/base/src/main/res/navigation/nav_base_app.xml +++ b/base/src/main/res/navigation/nav_base_app.xml @@ -278,7 +278,7 @@ { try { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt b/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt index dc855d4815..c684a93210 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt @@ -36,6 +36,8 @@ import io.github.sds100.keymapper.system.network.AndroidNetworkAdapter import io.github.sds100.keymapper.system.network.NetworkAdapter import io.github.sds100.keymapper.system.nfc.AndroidNfcAdapter import io.github.sds100.keymapper.system.nfc.NfcAdapter +import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapter +import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapterImpl import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.phone.AndroidPhoneAdapter @@ -48,6 +50,9 @@ import io.github.sds100.keymapper.system.ringtones.AndroidRingtoneAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter import io.github.sds100.keymapper.system.root.SuAdapter import io.github.sds100.keymapper.system.root.SuAdapterImpl +import io.github.sds100.keymapper.system.shell.ShellAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapterImpl import io.github.sds100.keymapper.system.url.AndroidOpenUrlAdapter import io.github.sds100.keymapper.system.url.OpenUrlAdapter import io.github.sds100.keymapper.system.vibrator.AndroidVibratorAdapter @@ -158,4 +163,16 @@ abstract class SystemHiltModule { @Singleton @Binds abstract fun provideVolumeAdapter(impl: AndroidVolumeAdapter): VolumeAdapter + + @Singleton + @Binds + abstract fun provideShellAdapter(impl: Shell): ShellAdapter + + @Singleton + @Binds + abstract fun provideShizukuAdapter(impl: ShizukuAdapterImpl): ShizukuAdapter + + @Singleton + @Binds + abstract fun provideNotificationReceiverAdapter(impl: NotificationReceiverAdapterImpl): NotificationReceiverAdapter } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt index 00de7b7ff2..7df6c5fcc6 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt @@ -10,14 +10,15 @@ import android.os.Build import androidx.annotation.RequiresApi import androidx.core.content.ContextCompat import androidx.core.content.getSystemService +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update +import javax.inject.Inject -class AndroidLockScreenAdapter(context: Context) : LockScreenAdapter { - private val ctx = context.applicationContext +class AndroidLockScreenAdapter @Inject constructor(@ApplicationContext private val ctx: Context) : LockScreenAdapter { private val devicePolicyManager: DevicePolicyManager by lazy { ctx.getSystemService()!! } private val keyguardManager: KeyguardManager by lazy { ctx.getSystemService()!! } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt index 802ec3d029..65f1d7155a 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt @@ -5,12 +5,16 @@ import android.media.Ringtone import android.media.RingtoneManager import android.os.Build import androidx.core.net.toUri +import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class AndroidRingtoneAdapter @Inject constructor(@ApplicationContext private val ctx: Context) : RingtoneAdapter { -class AndroidRingtoneAdapter(context: Context) : RingtoneAdapter { - private val ctx: Context = context.applicationContext private val ringtoneManager: RingtoneManager by lazy { RingtoneManager(ctx).apply { setType(RingtoneManager.TYPE_ALL) diff --git a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt index 97739b470c..5c94c71c48 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt @@ -9,6 +9,7 @@ import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.Shell import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission +import io.github.sds100.keymapper.system.shell.ShellAdapter import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow @@ -22,6 +23,7 @@ import javax.inject.Singleton @Singleton class SuAdapterImpl @Inject constructor( coroutineScope: CoroutineScope, + private val shell: ShellAdapter, private val preferenceRepository: PreferenceRepository, ) : SuAdapter { private var process: Process? = null @@ -34,7 +36,7 @@ class SuAdapterImpl @Inject constructor( preferenceRepository.set(Keys.hasRootPermission, true) // show the su prompt - Shell.run("su") + shell.run("su") return true } @@ -47,7 +49,7 @@ class SuAdapterImpl @Inject constructor( try { if (block) { // Don't use the long running su process because that will block the thread indefinitely - Shell.run("su", "-c", command, waitFor = true) + shell.run("su", "-c", command, waitFor = true) } else { if (process == null) { process = ProcessBuilder("su").start() @@ -71,7 +73,7 @@ class SuAdapterImpl @Inject constructor( } try { - val inputStream = Shell.getShellCommandStdOut("su", "-c", command) + val inputStream = shell.getShellCommandStdOut("su", "-c", command) return Success(inputStream) } catch (e: IOException) { return Error.UnknownIOError diff --git a/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt index 6acf64d220..fb00020ac9 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt @@ -1,9 +1,10 @@ package io.github.sds100.keymapper.system.shell import io.github.sds100.keymapper.common.utils.Result - - +import java.io.InputStream interface ShellAdapter { + fun run(vararg command: String, waitFor: Boolean = false): Boolean fun execute(command: String): Result<*> + fun getShellCommandStdOut(vararg command: String): InputStream } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuAdapterImpl.kt b/system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuAdapterImpl.kt index 14064916a4..b9db5d2541 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuAdapterImpl.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/shizuku/ShizukuAdapterImpl.kt @@ -10,8 +10,11 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.stateIn import rikka.shizuku.Shizuku +import javax.inject.Inject +import javax.inject.Singleton -class ShizukuAdapterImpl( +@Singleton +class ShizukuAdapterImpl @Inject constructor( private val coroutineScope: CoroutineScope, private val packageManagerAdapter: PackageManagerAdapter, ) : ShizukuAdapter { From fc98be4640247522b7606b9270c228ffe4d3623d Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 21 May 2025 17:32:35 +0200 Subject: [PATCH 28/71] #1711 add more hilt bindings --- .../keymapper/base/BaseSingletonHiltModule.kt | 32 ++++++++++++++++++ .../keymapper/base/BaseViewModelHiltModule.kt | 33 +++++++++++++++++++ .../base/actions/sound/SoundsManager.kt | 18 +++++----- .../keymapper/base/backup/BackupManager.kt | 5 ++- .../base/home/ShowHomeScreenAlertsUseCase.kt | 10 +++--- .../base/keymaps/DisplayKeyMapUseCase.kt | 1 - .../ManageNotificationsUseCase.kt | 5 ++- .../github/sds100/keymapper/system/Shell.kt | 3 +- 8 files changed, 87 insertions(+), 20 deletions(-) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt index e298919d14..4fc9c8e5c8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt @@ -4,11 +4,23 @@ import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementController +import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementUseCase +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCaseImpl import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCaseImpl import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.onboarding.OnboardingUseCaseImpl +import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase +import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCaseImpl import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapterImpl +import io.github.sds100.keymapper.base.system.accessibility.ControlAccessibilityServiceUseCase +import io.github.sds100.keymapper.base.system.accessibility.ControlAccessibilityServiceUseCaseImpl +import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCaseImpl +import io.github.sds100.keymapper.base.system.inputmethod.ToggleCompatibleImeUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ToggleCompatibleImeUseCaseImpl import io.github.sds100.keymapper.base.system.notifications.AndroidNotificationAdapter import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProviderImpl @@ -38,4 +50,24 @@ abstract class BaseSingletonHiltModule { @Binds @Singleton abstract fun bindPauseKeyMapsUseCase(impl: PauseKeyMapsUseCaseImpl): PauseKeyMapsUseCase + + @Binds + @Singleton + abstract fun bindShowInputMethodPickerUseCase(impl: ShowInputMethodPickerUseCaseImpl): ShowInputMethodPickerUseCase + + @Binds + @Singleton + abstract fun bindControlAccessibilityServiceUseCase(impl: ControlAccessibilityServiceUseCaseImpl): ControlAccessibilityServiceUseCase + + @Binds + @Singleton + abstract fun bindToggleCompatibleImeUseCase(impl: ToggleCompatibleImeUseCaseImpl): ToggleCompatibleImeUseCase + + @Binds + @Singleton + abstract fun bindInteractUiElementUseCase(impl: InteractUiElementController): InteractUiElementUseCase + + @Binds + @Singleton + abstract fun bindRerouteKeyEventsUseCase(impl: RerouteKeyEventsUseCaseImpl): RerouteKeyEventsUseCase } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt index 72e3e84b52..a7ddc51a09 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt @@ -4,17 +4,50 @@ import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.android.components.ViewModelComponent +import dagger.hilt.android.scopes.ViewModelScoped +import io.github.sds100.keymapper.base.backup.BackupRestoreMappingsUseCase +import io.github.sds100.keymapper.base.backup.BackupRestoreMappingsUseCaseImpl +import io.github.sds100.keymapper.base.home.ShowHomeScreenAlertsUseCase +import io.github.sds100.keymapper.base.home.ShowHomeScreenAlertsUseCaseImpl import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCaseImpl import io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCaseImpl +import io.github.sds100.keymapper.base.logging.DisplayLogUseCase +import io.github.sds100.keymapper.base.logging.DisplayLogUseCaseImpl +import io.github.sds100.keymapper.base.settings.ConfigSettingsUseCase +import io.github.sds100.keymapper.base.settings.ConfigSettingsUseCaseImpl +import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase +import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCaseImpl @Module @InstallIn(ViewModelComponent::class) abstract class BaseViewModelHiltModule { @Binds + @ViewModelScoped abstract fun bindDisplayKeyMapUseCase(impl: DisplayKeyMapUseCaseImpl): DisplayKeyMapUseCase @Binds + @ViewModelScoped abstract fun bindListKeyMapsUseCase(impl: ListKeyMapsUseCaseImpl): ListKeyMapsUseCase + + @Binds + @ViewModelScoped + abstract fun bindBackupRestoreMappingsUseCase(impl: BackupRestoreMappingsUseCaseImpl): BackupRestoreMappingsUseCase + + @Binds + @ViewModelScoped + abstract fun bindShowHomeScreenAlertsUseCase(impl: ShowHomeScreenAlertsUseCaseImpl): ShowHomeScreenAlertsUseCase + + @Binds + @ViewModelScoped + abstract fun bindSortKeyMapsUseCase(impl: SortKeyMapsUseCaseImpl): SortKeyMapsUseCase + + @Binds + @ViewModelScoped + abstract fun bindDisplayLogUseCase(impl: DisplayLogUseCaseImpl): DisplayLogUseCase + + @Binds + @ViewModelScoped + abstract fun bindConfigSettingsUseCase(impl: ConfigSettingsUseCaseImpl): ConfigSettingsUseCase } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt index 7fb1ffcd3d..ba01bab713 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt @@ -14,10 +14,11 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch import timber.log.Timber import java.util.UUID +import javax.inject.Inject +import javax.inject.Singleton - - -class SoundsManagerImpl( +@Singleton +class SoundsManagerImpl @Inject constructor( private val coroutineScope: CoroutineScope, private val fileAdapter: FileAdapter, ) : SoundsManager { @@ -104,12 +105,11 @@ class SoundsManagerImpl( .map { getSoundFileInfo(it.name!!) } } - private fun createSoundCopyFileName(originalSoundFile: IFile, uid: String): String = - buildString { - append(originalSoundFile.baseName) - append("_$uid") - append(".${originalSoundFile.extension}") - } + private fun createSoundCopyFileName(originalSoundFile: IFile, uid: String): String = buildString { + append(originalSoundFile.baseName) + append("_$uid") + append(".${originalSoundFile.extension}") + } } interface SoundsManager { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt index 3dfe21a4f5..ba30cf945b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt @@ -74,8 +74,11 @@ import java.io.IOException import java.io.InputStream import java.util.LinkedList import java.util.UUID +import javax.inject.Inject +import javax.inject.Singleton -class BackupManagerImpl( +@Singleton +class BackupManagerImpl @Inject constructor( private val coroutineScope: CoroutineScope, private val fileAdapter: FileAdapter, private val keyMapRepository: KeyMapRepository, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt index b00294c0ed..91566c5df7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/ShowHomeScreenAlertsUseCase.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.home +import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import io.github.sds100.keymapper.system.permissions.Permission @@ -10,10 +10,9 @@ import io.github.sds100.keymapper.system.permissions.PermissionAdapter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map +import javax.inject.Inject - - -class ShowHomeScreenAlertsUseCaseImpl( +class ShowHomeScreenAlertsUseCaseImpl @Inject constructor( private val preferences: PreferenceRepository, private val permissions: PermissionAdapter, private val accessibilityServiceAdapter: AccessibilityServiceAdapter, @@ -30,7 +29,8 @@ class ShowHomeScreenAlertsUseCaseImpl( override val isLoggingEnabled: Flow = preferences.get(Keys.log).map { it == true } - override val accessibilityServiceState: Flow = accessibilityServiceAdapter.state + override val accessibilityServiceState: Flow = + accessibilityServiceAdapter.state override fun disableBatteryOptimisation() { permissions.request(Permission.IGNORE_BATTERY_OPTIMISATION) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index 8f20240103..f92b3f40f4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -42,7 +42,6 @@ import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.withTimeout import javax.inject.Inject -@ViewModelScoped class DisplayKeyMapUseCaseImpl @Inject constructor( private val permissionAdapter: PermissionAdapter, private val inputMethodAdapter: InputMethodAdapter, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/ManageNotificationsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/ManageNotificationsUseCase.kt index 698c40e0a1..3d699686ef 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/ManageNotificationsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/ManageNotificationsUseCase.kt @@ -12,10 +12,9 @@ import io.github.sds100.keymapper.system.root.SuAdapter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map +import javax.inject.Inject - - -class ManageNotificationsUseCaseImpl( +class ManageNotificationsUseCaseImpl @Inject constructor( private val preferences: PreferenceRepository, private val notificationAdapter: NotificationAdapter, private val suAdapter: SuAdapter, diff --git a/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt b/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt index 13dd844dc1..29e165b9e5 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt @@ -6,10 +6,11 @@ import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.shell.ShellAdapter import java.io.IOException import java.io.InputStream +import javax.inject.Inject import javax.inject.Singleton @Singleton -class Shell : ShellAdapter { +class Shell @Inject constructor() : ShellAdapter { /** * @return whether the command was executed successfully */ From a1690ba74c253bd722b4188d14a63e6899216570 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 21 May 2025 18:15:34 +0200 Subject: [PATCH 29/71] #1711 finish bindings --- .../github/sds100/keymapper/AppHiltModule.kt | 6 ++ .../keymaps/ConfigKeyMapViewModel.kt | 55 ++++++++++++++-- .../purchasing/PurchasingManagerImpl.kt | 23 +++---- .../accessibility/MyAccessibilityService.kt | 18 ++++-- .../keymapper/base/BaseSingletonHiltModule.kt | 62 ++++++++++++++++++- .../keymapper/base/BaseViewModelHiltModule.kt | 54 ++++++++++++++++ .../base/actions/ConfigActionsViewModel.kt | 2 +- .../base/actions/CreateActionUseCase.kt | 2 - .../base/actions/TestActionUseCase.kt | 3 +- .../actions/keyevent/ConfigKeyEventUseCase.kt | 3 +- .../actions/sound/ChooseSoundFileUseCase.kt | 3 +- .../keymapper/base/backup/BackupManager.kt | 13 ---- .../constraints/ConfigConstraintsViewModel.kt | 8 +-- .../keymaps/CreateKeyMapShortcutUseCase.kt | 1 - .../base/keymaps/DisplayKeyMapUseCase.kt | 10 ++- .../RerouteKeyEventsUseCase.kt | 7 +-- .../base/sorting/SortKeyMapsUseCase.kt | 1 - .../ControlAccessibilityServiceUseCase.kt | 3 +- .../system/apps/DisplayAppShortcutsUseCase.kt | 3 +- .../base/system/apps/DisplayAppsUseCase.kt | 9 ++- .../bluetooth/ChooseBluetoothDeviceUseCase.kt | 3 +- .../base/trigger/RecordTriggerUseCase.kt | 2 + .../base/trigger/SetupGuiKeyboardUseCase.kt | 5 +- common/build.gradle.kts | 4 ++ .../keymapper/common/utils/UuidGenerator.kt | 5 +- .../data/repositories/RoomGroupRepository.kt | 7 ++- .../keymapper/system/SystemHiltModule.kt | 5 ++ 27 files changed, 247 insertions(+), 70 deletions(-) rename {base/src/free => app/src/main}/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt (51%) diff --git a/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt index 29e57d94c7..a96e7b288e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt +++ b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt @@ -5,11 +5,13 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.base.utils.navigation.BaseNavDirectionProvider import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.KeyMapperClassProvider import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider import io.github.sds100.keymapper.common.utils.DispatcherProvider +import io.github.sds100.keymapper.purchasing.PurchasingManagerImpl import io.github.sds100.keymapper.system.accessibility.MyAccessibilityService import io.github.sds100.keymapper.utils.navigation.NavDirectionProvider import kotlinx.coroutines.CoroutineScope @@ -56,4 +58,8 @@ class AppHiltModule { @Provides fun provideNavDirectionProvider(): BaseNavDirectionProvider = NavDirectionProvider() + + @Provides + @Singleton + fun providePurchasingManager(): PurchasingManager = PurchasingManagerImpl() } diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt index d11e6e2cac..0bd5510764 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt @@ -1,22 +1,69 @@ package io.github.sds100.keymapper.keymaps +import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.actions.ConfigActionsViewModel +import io.github.sds100.keymapper.base.actions.CreateActionUseCase +import io.github.sds100.keymapper.base.actions.TestActionUseCase import io.github.sds100.keymapper.base.constraints.ConfigConstraintsViewModel import io.github.sds100.keymapper.base.keymaps.BaseConfigKeyMapViewModel import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.CreateKeyMapShortcutUseCase +import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase +import io.github.sds100.keymapper.base.purchasing.PurchasingManager +import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase +import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.trigger.ConfigTriggerViewModel import javax.inject.Inject @HiltViewModel class ConfigKeyMapViewModel @Inject constructor( - override val configActionsViewModel: ConfigActionsViewModel, - override val configTriggerViewModel: ConfigTriggerViewModel, - override val configConstraintsViewModel: ConfigConstraintsViewModel, + display: DisplayKeyMapUseCase, config: ConfigKeyMapUseCase, onboarding: OnboardingUseCase, + createActionUseCase: CreateActionUseCase, + testActionUseCase: TestActionUseCase, + recordTriggerUseCase: RecordTriggerUseCase, + createKeyMapShortcutUseCase: CreateKeyMapShortcutUseCase, + purchasingManager: PurchasingManager, + setupGuiKeyboardUseCase: SetupGuiKeyboardUseCase, + fingerprintGesturesSupportedUseCase: FingerprintGesturesSupportedUseCase, + resourceProvider: ResourceProvider, ) : BaseConfigKeyMapViewModel( config = config, onboarding = onboarding, -) +) { + override val configActionsViewModel: ConfigActionsViewModel = ConfigActionsViewModel( + coroutineScope = viewModelScope, + displayAction = display, + createAction = createActionUseCase, + testAction = testActionUseCase, + config = config, + onboarding = onboarding, + resourceProvider = resourceProvider, + ) + + override val configTriggerViewModel: ConfigTriggerViewModel = ConfigTriggerViewModel( + coroutineScope = viewModelScope, + onboarding = onboarding, + config = config, + recordTrigger = recordTriggerUseCase, + createKeyMapShortcut = createKeyMapShortcutUseCase, + displayKeyMap = display, + purchasingManager = purchasingManager, + setupGuiKeyboard = setupGuiKeyboardUseCase, + fingerprintGesturesSupported = fingerprintGesturesSupportedUseCase, + resourceProvider = resourceProvider, + ) + + override val configConstraintsViewModel: ConfigConstraintsViewModel = + ConfigConstraintsViewModel( + coroutineScope = viewModelScope, + config = config, + displayConstraint = display, + resourceProvider = resourceProvider, + ) +} diff --git a/base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt b/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt similarity index 51% rename from base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt rename to app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt index e1a16dc827..c1a367b3b0 100644 --- a/base/src/free/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt +++ b/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt @@ -1,32 +1,29 @@ package io.github.sds100.keymapper.purchasing -import android.content.Context -import io.github.sds100.keymapper.base.utils.Error -import io.github.sds100.keymapper.base.utils.Result -import io.github.sds100.keymapper.base.utils.State -import kotlinx.coroutines.CoroutineScope +import io.github.sds100.keymapper.base.purchasing.ProductId +import io.github.sds100.keymapper.base.purchasing.PurchasingError +import io.github.sds100.keymapper.base.purchasing.PurchasingManager +import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow -class PurchasingManagerImpl( - context: Context, - private val coroutineScope: CoroutineScope, -) : PurchasingManager { +class PurchasingManagerImpl : PurchasingManager { override val onCompleteProductPurchase: MutableSharedFlow = MutableSharedFlow() override val purchases: Flow>>> = - MutableStateFlow(State.Data(Error.PurchasingNotImplemented)) + MutableStateFlow(State.Data(PurchasingError.PurchasingNotImplemented)) override suspend fun launchPurchasingFlow(product: ProductId): Result { - return Error.PurchasingNotImplemented + return PurchasingError.PurchasingNotImplemented } override suspend fun getProductPrice(product: ProductId): Result { - return Error.PurchasingNotImplemented + return PurchasingError.PurchasingNotImplemented } override suspend fun isPurchased(product: ProductId): Result { - return Error.PurchasingNotImplemented + return PurchasingError.PurchasingNotImplemented } override fun refresh() {} diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt index 08bd178d90..58f079d5e5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt @@ -8,7 +8,7 @@ import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCaseFacto import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCaseFactory -import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase +import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCaseImpl import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapterImpl import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityService import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityServiceController @@ -45,9 +45,6 @@ class MyAccessibilityService : BaseAccessibilityService() { @Inject lateinit var fingerprintGesturesSupportedUseCase: FingerprintGesturesSupportedUseCase - @Inject - lateinit var rerouteKeyEventsUseCase: RerouteKeyEventsUseCase - @Inject lateinit var pauseKeyMapsUseCase: PauseKeyMapsUseCase @@ -66,6 +63,19 @@ class MyAccessibilityService : BaseAccessibilityService() { @Inject lateinit var nodeRepository: AccessibilityNodeRepository + private val rerouteKeyEventsUseCase: RerouteKeyEventsUseCaseImpl by lazy { + RerouteKeyEventsUseCaseImpl( + inputMethodAdapter = inputMethodAdapter, + keyMapperImeMessenger = ImeInputEventInjectorImpl( + this, + keyEventRelayService = keyEventRelayServiceWrapper, + inputMethodAdapter = inputMethodAdapter, + ), + preferenceRepository = preferenceRepository, + packageName = packageName, + ) + } + override fun getController(): BaseAccessibilityServiceController? { return controller } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt index 4fc9c8e5c8..284488ab17 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt @@ -4,10 +4,20 @@ import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import io.github.sds100.keymapper.base.actions.GetActionErrorUseCase +import io.github.sds100.keymapper.base.actions.GetActionErrorUseCaseImpl +import io.github.sds100.keymapper.base.actions.sound.SoundsManager +import io.github.sds100.keymapper.base.actions.sound.SoundsManagerImpl import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementController import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementUseCase -import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase -import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCaseImpl +import io.github.sds100.keymapper.base.backup.BackupManager +import io.github.sds100.keymapper.base.backup.BackupManagerImpl +import io.github.sds100.keymapper.base.constraints.GetConstraintErrorUseCase +import io.github.sds100.keymapper.base.constraints.GetConstraintErrorUseCaseImpl +import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase +import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCaseController +import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase +import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCaseImpl import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCaseImpl import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase @@ -17,13 +27,21 @@ import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCaseI import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapterImpl import io.github.sds100.keymapper.base.system.accessibility.ControlAccessibilityServiceUseCase import io.github.sds100.keymapper.base.system.accessibility.ControlAccessibilityServiceUseCaseImpl +import io.github.sds100.keymapper.base.system.inputmethod.ShowHideInputMethodUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ShowHideInputMethodUseCaseImpl import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCaseImpl import io.github.sds100.keymapper.base.system.inputmethod.ToggleCompatibleImeUseCase import io.github.sds100.keymapper.base.system.inputmethod.ToggleCompatibleImeUseCaseImpl import io.github.sds100.keymapper.base.system.notifications.AndroidNotificationAdapter +import io.github.sds100.keymapper.base.system.notifications.ManageNotificationsUseCase +import io.github.sds100.keymapper.base.system.notifications.ManageNotificationsUseCaseImpl +import io.github.sds100.keymapper.base.trigger.RecordTriggerController +import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProviderImpl +import io.github.sds100.keymapper.common.utils.DefaultUuidGenerator +import io.github.sds100.keymapper.common.utils.UuidGenerator import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.notifications.NotificationAdapter import javax.inject.Singleton @@ -70,4 +88,44 @@ abstract class BaseSingletonHiltModule { @Binds @Singleton abstract fun bindRerouteKeyEventsUseCase(impl: RerouteKeyEventsUseCaseImpl): RerouteKeyEventsUseCase + + @Binds + @Singleton + abstract fun bindShowHideInputMethodUseCase(impl: ShowHideInputMethodUseCaseImpl): ShowHideInputMethodUseCase + + @Binds + @Singleton + abstract fun bindBackupManager(impl: BackupManagerImpl): BackupManager + + @Binds + @Singleton + abstract fun bindSoundsManager(impl: SoundsManagerImpl): SoundsManager + + @Binds + @Singleton + abstract fun bindConfigKeyMapUseCase(impl: ConfigKeyMapUseCaseController): ConfigKeyMapUseCase + + @Binds + @Singleton + abstract fun bindRecordTriggerUseCase(impl: RecordTriggerController): RecordTriggerUseCase + + @Binds + @Singleton + abstract fun bindFingerprintGesturesSupportedUseCase(impl: FingerprintGesturesSupportedUseCaseImpl): FingerprintGesturesSupportedUseCase + + @Binds + @Singleton + abstract fun bindGetActionErrorUseCase(impl: GetActionErrorUseCaseImpl): GetActionErrorUseCase + + @Binds + @Singleton + abstract fun bindGetConstraintErrorUseCase(impl: GetConstraintErrorUseCaseImpl): GetConstraintErrorUseCase + + @Binds + @Singleton + abstract fun bindManageNotificationsUseCase(impl: ManageNotificationsUseCaseImpl): ManageNotificationsUseCase + + @Binds + @Singleton + abstract fun provideUuidGenerator(impl: DefaultUuidGenerator): UuidGenerator } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt index a7ddc51a09..0723f9d50c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt @@ -5,10 +5,20 @@ import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.android.components.ViewModelComponent import dagger.hilt.android.scopes.ViewModelScoped +import io.github.sds100.keymapper.base.actions.CreateActionUseCase +import io.github.sds100.keymapper.base.actions.CreateActionUseCaseImpl +import io.github.sds100.keymapper.base.actions.TestActionUseCase +import io.github.sds100.keymapper.base.actions.TestActionUseCaseImpl +import io.github.sds100.keymapper.base.actions.keyevent.ConfigKeyEventUseCase +import io.github.sds100.keymapper.base.actions.keyevent.ConfigKeyEventUseCaseImpl +import io.github.sds100.keymapper.base.actions.sound.ChooseSoundFileUseCase +import io.github.sds100.keymapper.base.actions.sound.ChooseSoundFileUseCaseImpl import io.github.sds100.keymapper.base.backup.BackupRestoreMappingsUseCase import io.github.sds100.keymapper.base.backup.BackupRestoreMappingsUseCaseImpl import io.github.sds100.keymapper.base.home.ShowHomeScreenAlertsUseCase import io.github.sds100.keymapper.base.home.ShowHomeScreenAlertsUseCaseImpl +import io.github.sds100.keymapper.base.keymaps.CreateKeyMapShortcutUseCase +import io.github.sds100.keymapper.base.keymaps.CreateKeyMapShortcutUseCaseImpl import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCaseImpl import io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCase @@ -19,6 +29,14 @@ import io.github.sds100.keymapper.base.settings.ConfigSettingsUseCase import io.github.sds100.keymapper.base.settings.ConfigSettingsUseCaseImpl import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCaseImpl +import io.github.sds100.keymapper.base.system.apps.DisplayAppShortcutsUseCase +import io.github.sds100.keymapper.base.system.apps.DisplayAppShortcutsUseCaseImpl +import io.github.sds100.keymapper.base.system.apps.DisplayAppsUseCase +import io.github.sds100.keymapper.base.system.apps.DisplayAppsUseCaseImpl +import io.github.sds100.keymapper.base.system.bluetooth.ChooseBluetoothDeviceUseCase +import io.github.sds100.keymapper.base.system.bluetooth.ChooseBluetoothDeviceUseCaseImpl +import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase +import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCaseImpl @Module @InstallIn(ViewModelComponent::class) @@ -50,4 +68,40 @@ abstract class BaseViewModelHiltModule { @Binds @ViewModelScoped abstract fun bindConfigSettingsUseCase(impl: ConfigSettingsUseCaseImpl): ConfigSettingsUseCase + + @Binds + @ViewModelScoped + abstract fun bindChooseBluetoothDeviceUseCase(impl: ChooseBluetoothDeviceUseCaseImpl): ChooseBluetoothDeviceUseCase + + @Binds + @ViewModelScoped + abstract fun bindChooseSoundFileUseCase(impl: ChooseSoundFileUseCaseImpl): ChooseSoundFileUseCase + + @Binds + @ViewModelScoped + abstract fun bindConfigKeyEventUseCase(impl: ConfigKeyEventUseCaseImpl): ConfigKeyEventUseCase + + @Binds + @ViewModelScoped + abstract fun bindDisplayAppShortcutsUseCase(impl: DisplayAppShortcutsUseCaseImpl): DisplayAppShortcutsUseCase + + @Binds + @ViewModelScoped + abstract fun bindDisplayAppsUseCase(impl: DisplayAppsUseCaseImpl): DisplayAppsUseCase + + @Binds + @ViewModelScoped + abstract fun bindTestActionUseCase(impl: TestActionUseCaseImpl): TestActionUseCase + + @Binds + @ViewModelScoped + abstract fun bindCreateKeyMapShortcutUseCase(impl: CreateKeyMapShortcutUseCaseImpl): CreateKeyMapShortcutUseCase + + @Binds + @ViewModelScoped + abstract fun bindSetupGuiKeyboardUseCase(impl: SetupGuiKeyboardUseCaseImpl): SetupGuiKeyboardUseCase + + @Binds + @ViewModelScoped + abstract fun bindCreateActionUseCase(impl: CreateActionUseCaseImpl): CreateActionUseCase } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index bace720c14..41af224b2f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -43,7 +43,7 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import javax.inject.Inject -class ConfigActionsViewModel @Inject constructor( +class ConfigActionsViewModel constructor( private val coroutineScope: CoroutineScope, private val displayAction: DisplayActionUseCase, private val createAction: CreateActionUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt index e7c8fa6b39..90ba5f6d72 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionUseCase.kt @@ -11,9 +11,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.merge import javax.inject.Inject -import javax.inject.Singleton -@Singleton class CreateActionUseCaseImpl @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, private val systemFeatureAdapter: SystemFeatureAdapter, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt index fec2dc40a7..fa3c45d07c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt @@ -3,8 +3,9 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent +import javax.inject.Inject -class TestActionUseCaseImpl( +class TestActionUseCaseImpl @Inject constructor( private val serviceAdapter: AccessibilityServiceAdapter, ) : TestActionUseCase { override suspend fun invoke(action: ActionData): Result<*> = serviceAdapter.send(TestActionEvent(action)) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt index f829f2640f..530d99c768 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt @@ -7,8 +7,9 @@ import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map +import javax.inject.Inject -class ConfigKeyEventUseCaseImpl( +class ConfigKeyEventUseCaseImpl @Inject constructor( private val preferenceRepository: PreferenceRepository, private val devicesAdapter: DevicesAdapter, ) : ConfigKeyEventUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt index 279b8134d4..52df79faf6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt @@ -5,8 +5,9 @@ import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.files.FileAdapter import kotlinx.coroutines.flow.StateFlow +import javax.inject.Inject -class ChooseSoundFileUseCaseImpl( +class ChooseSoundFileUseCaseImpl @Inject constructor( private val fileAdapter: FileAdapter, private val soundsManager: SoundsManager, ) : ChooseSoundFileUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt index ba30cf945b..c4cc23141f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt @@ -87,7 +87,6 @@ class BackupManagerImpl @Inject constructor( private val floatingButtonRepository: FloatingButtonRepository, private val groupRepository: GroupRepository, private val soundsManager: SoundsManager, - private val throwExceptions: Boolean = false, private val dispatchers: DispatcherProvider = DefaultDispatcherProvider(), private val uuidGenerator: UuidGenerator = DefaultUuidGenerator(), private val buildConfigProvider: BuildConfigProvider, @@ -396,10 +395,6 @@ class BackupManagerImpl @Inject constructor( } catch (e: Exception) { Timber.e(e) - if (throwExceptions) { - throw e - } - return@withContext Error.Exception(e) } } @@ -565,10 +560,6 @@ class BackupManagerImpl @Inject constructor( } catch (e: Exception) { Timber.e(e) - if (throwExceptions) { - throw e - } - return Error.Exception(e) } } @@ -742,10 +733,6 @@ class BackupManagerImpl @Inject constructor( } catch (e: Exception) { Timber.e(e) - if (throwExceptions) { - throw e - } - return@withContext Error.Exception(e) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index 49326bbe44..d11b8cfa0a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -10,12 +10,12 @@ import io.github.sds100.keymapper.base.utils.isFixable import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull @@ -37,7 +37,7 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import javax.inject.Inject -class ConfigConstraintsViewModel @Inject constructor( +class ConfigConstraintsViewModel constructor( private val coroutineScope: CoroutineScope, private val config: ConfigKeyMapUseCase, private val displayConstraint: DisplayConstraintUseCase, @@ -163,7 +163,7 @@ class ConfigConstraintsViewModel @Inject constructor( val icon: ComposeIconInfo = uiHelper.getIcon(constraint) val error: Error? = errorSnapshot.getError(constraint) - io.github.sds100.keymapper.base.constraints.ConstraintListItemModel( + ConstraintListItemModel( id = constraint.uid, icon = icon, constraintModeLink = if (state.constraints.size > 1 && index < state.constraints.size - 1) { @@ -191,7 +191,7 @@ sealed class ConfigConstraintsState { ) : ConfigConstraintsState() data class Loaded( - val constraintList: List, + val constraintList: List, val selectedMode: ConstraintMode, val shortcuts: Set> = emptySet(), ) : ConfigConstraintsState() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt index 6cd3a6de42..6b3e68bd6f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt @@ -10,7 +10,6 @@ import io.github.sds100.keymapper.system.apps.AppShortcutAdapter import javax.inject.Inject import javax.inject.Singleton -@Singleton class CreateKeyMapShortcutUseCaseImpl @Inject constructor( private val appShortcutAdapter: AppShortcutAdapter, private val resourceProvider: ResourceProvider diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index f92b3f40f4..ab85dca722 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -1,6 +1,7 @@ package io.github.sds100.keymapper.base.keymaps import android.graphics.drawable.Drawable +import dagger.hilt.android.scopes.ActivityScoped import dagger.hilt.android.scopes.ViewModelScoped import io.github.sds100.keymapper.base.actions.DisplayActionUseCase import io.github.sds100.keymapper.base.actions.GetActionErrorUseCase @@ -9,6 +10,7 @@ import io.github.sds100.keymapper.base.constraints.GetConstraintErrorUseCase import io.github.sds100.keymapper.base.purchasing.ProductId import io.github.sds100.keymapper.base.purchasing.PurchasingError import io.github.sds100.keymapper.base.purchasing.PurchasingManager +import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.base.trigger.TriggerError import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.common.BuildConfigProvider @@ -26,7 +28,6 @@ import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter @@ -42,6 +43,7 @@ import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.withTimeout import javax.inject.Inject +@ViewModelScoped class DisplayKeyMapUseCaseImpl @Inject constructor( private val permissionAdapter: PermissionAdapter, private val inputMethodAdapter: InputMethodAdapter, @@ -52,11 +54,12 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( private val ringtoneAdapter: RingtoneAdapter, private val getActionErrorUseCase: GetActionErrorUseCase, private val getConstraintErrorUseCase: GetConstraintErrorUseCase, - private val buildConfigProvider: BuildConfigProvider + private val buildConfigProvider: BuildConfigProvider, ) : DisplayKeyMapUseCase, GetActionErrorUseCase by getActionErrorUseCase, GetConstraintErrorUseCase by getConstraintErrorUseCase { - private val keyMapperImeHelper = KeyMapperImeHelper(inputMethodAdapter, buildConfigProvider.packageName) + private val keyMapperImeHelper = + KeyMapperImeHelper(inputMethodAdapter, buildConfigProvider.packageName) private val showDpadImeSetupError: Flow = settingsRepository.get(Keys.neverShowDpadImeTriggerError).map { neverShow -> @@ -136,6 +139,7 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( Permission.ROOT, ), ) + TriggerError.CANT_DETECT_IN_PHONE_CALL -> fixError(Error.CantDetectKeyEventsInPhoneCall) TriggerError.ASSISTANT_TRIGGER_NOT_PURCHASED -> fixError( PurchasingError.ProductNotPurchased( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt index b17834f277..4ece130dfa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -19,12 +19,11 @@ import javax.inject.Singleton * on Android 11. There was a bug in the system where enabling an accessibility service * would reset the device ID of key events to -1. */ -@Singleton -class RerouteKeyEventsUseCaseImpl @Inject constructor( +class RerouteKeyEventsUseCaseImpl ( private val inputMethodAdapter: InputMethodAdapter, private val keyMapperImeMessenger: ImeInputEventInjector, private val preferenceRepository: PreferenceRepository, - private val buildConfigProvider: BuildConfigProvider, + private val packageName: String, ) : RerouteKeyEventsUseCase { private val rerouteKeyEvents = @@ -36,7 +35,7 @@ class RerouteKeyEventsUseCaseImpl @Inject constructor( private val imeHelper by lazy { KeyMapperImeHelper( inputMethodAdapter, - buildConfigProvider.packageName, + packageName, ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt index 04472c50c2..22419f53ef 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt @@ -14,7 +14,6 @@ import kotlinx.serialization.json.Json import javax.inject.Inject import javax.inject.Singleton -@Singleton class SortKeyMapsUseCaseImpl @Inject constructor( private val preferenceRepository: PreferenceRepository, private val displayKeyMapUseCase: DisplayKeyMapUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/ControlAccessibilityServiceUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/ControlAccessibilityServiceUseCase.kt index e158049be3..ae32bebf39 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/ControlAccessibilityServiceUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/ControlAccessibilityServiceUseCase.kt @@ -5,10 +5,11 @@ import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import kotlinx.coroutines.flow.Flow +import javax.inject.Inject import javax.inject.Singleton @Singleton -class ControlAccessibilityServiceUseCaseImpl( +class ControlAccessibilityServiceUseCaseImpl @Inject constructor( private val adapter: AccessibilityServiceAdapter, private val permissionAdapter: PermissionAdapter, ) : ControlAccessibilityServiceUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt index cbf9744d4c..2fa25cd9d2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt @@ -6,8 +6,9 @@ import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.apps.AppShortcutAdapter import io.github.sds100.keymapper.system.apps.AppShortcutInfo import kotlinx.coroutines.flow.Flow +import javax.inject.Inject -class DisplayAppShortcutsUseCaseImpl( +class DisplayAppShortcutsUseCaseImpl @Inject constructor( private val appShortcutAdapter: AppShortcutAdapter, ) : DisplayAppShortcutsUseCase { override val shortcuts: Flow>> = diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt index 9cab0fae64..629a16c519 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt @@ -6,8 +6,9 @@ import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.apps.PackageInfo import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import kotlinx.coroutines.flow.Flow +import javax.inject.Inject -class DisplayAppsUseCaseImpl( +class DisplayAppsUseCaseImpl @Inject constructor( private val adapter: PackageManagerAdapter, ) : DisplayAppsUseCase { override val installedPackages: Flow>> = adapter.installedPackages @@ -16,11 +17,9 @@ class DisplayAppsUseCaseImpl( override fun getAppIcon(packageName: String): Result = adapter.getAppIcon(packageName) - override fun getActivityLabel(packageName: String, activityClass: String): Result = - adapter.getActivityLabel(packageName, activityClass) + override fun getActivityLabel(packageName: String, activityClass: String): Result = adapter.getActivityLabel(packageName, activityClass) - override fun getActivityIcon(packageName: String, activityClass: String): Result = - adapter.getActivityIcon(packageName, activityClass) + override fun getActivityIcon(packageName: String, activityClass: String): Result = adapter.getActivityIcon(packageName, activityClass) } interface DisplayAppsUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceUseCase.kt index 32c28bd8c5..ada7e5d7cc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceUseCase.kt @@ -6,8 +6,9 @@ import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow +import javax.inject.Inject -class ChooseBluetoothDeviceUseCaseImpl( +class ChooseBluetoothDeviceUseCaseImpl @Inject constructor( private val devicesAdapter: DevicesAdapter, private val permissionAdapter: PermissionAdapter, ) : ChooseBluetoothDeviceUseCase { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt index 7da809e542..74122c5497 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt @@ -17,7 +17,9 @@ import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import javax.inject.Inject +import javax.inject.Singleton +@Singleton class RecordTriggerController @Inject constructor( private val coroutineScope: CoroutineScope, private val serviceAdapter: AccessibilityServiceAdapter, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt index ea63afbd42..bbed434572 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/SetupGuiKeyboardUseCase.kt @@ -1,16 +1,17 @@ package io.github.sds100.keymapper.base.trigger +import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.apps.PackageInfo import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.apps.getPackageInfoFlow import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map +import javax.inject.Inject -class SetupGuiKeyboardUseCaseImpl( +class SetupGuiKeyboardUseCaseImpl @Inject constructor( private val inputMethodAdapter: InputMethodAdapter, private val packageManager: PackageManagerAdapter, ) : SetupGuiKeyboardUseCase { diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 4719b6d023..a2f2a1491f 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -3,6 +3,8 @@ plugins { alias(libs.plugins.kotlin.android) alias(libs.plugins.jlleitschuh.gradle.ktlint) alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.google.devtools.ksp) + alias(libs.plugins.dagger.hilt.android) } android { @@ -44,4 +46,6 @@ dependencies { implementation(libs.kotlinx.serialization.json) implementation(libs.androidx.core.ktx) + implementation(libs.dagger.hilt.android) + ksp(libs.dagger.hilt.android.compiler) } diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/UuidGenerator.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/UuidGenerator.kt index 337a6911fc..9c0ebf6ae4 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/utils/UuidGenerator.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/UuidGenerator.kt @@ -1,10 +1,9 @@ package io.github.sds100.keymapper.common.utils import java.util.UUID +import javax.inject.Inject - - -class DefaultUuidGenerator : UuidGenerator { +class DefaultUuidGenerator @Inject constructor() : UuidGenerator { override fun random(): String = UUID.randomUUID().toString() } diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomGroupRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomGroupRepository.kt index cb3c3778e0..8bef8186d4 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomGroupRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomGroupRepository.kt @@ -14,8 +14,11 @@ import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import javax.inject.Inject +import javax.inject.Singleton -class RoomGroupRepository( +@Singleton +class RoomGroupRepository @Inject constructor( private val dao: GroupDao, private val coroutineScope: CoroutineScope, private val dispatchers: DispatcherProvider = DefaultDispatcherProvider(), @@ -73,4 +76,4 @@ class RoomGroupRepository( dao.setLastOpenedDate(groupUid, timestamp) } } -} \ No newline at end of file +} diff --git a/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt b/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt index c684a93210..08d09239a9 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/SystemHiltModule.kt @@ -40,6 +40,7 @@ import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapt import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapterImpl import io.github.sds100.keymapper.system.permissions.AndroidPermissionAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter +import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter import io.github.sds100.keymapper.system.phone.AndroidPhoneAdapter import io.github.sds100.keymapper.system.phone.PhoneAdapter import io.github.sds100.keymapper.system.popup.AndroidToastAdapter @@ -175,4 +176,8 @@ abstract class SystemHiltModule { @Singleton @Binds abstract fun provideNotificationReceiverAdapter(impl: NotificationReceiverAdapterImpl): NotificationReceiverAdapter + + @Singleton + @Binds + abstract fun provideSystemFeatureAdapter(impl: AndroidSystemFeatureAdapter): SystemFeatureAdapter } From d1cb3ecce3d7b86c9cc9f0fe99f4feafe6f1f70c Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 21 May 2025 18:58:38 +0200 Subject: [PATCH 30/71] #1711 app compiles and opens --- .../github/sds100/keymapper/MainActivity.kt | 19 ++++++- .../sds100/keymapper/home/HomeFragment.kt | 6 --- .../sds100/keymapper/home/HomeScreen.kt | 6 +-- .../utils/navigation/NavDirectionProvider.kt | 5 +- .../src/main/res/layout/activity_main.xml | 2 +- app/src/main/res/navigation/nav_app.xml | 35 ++++++------ .../keymapper/base/ActivityViewModel.kt | 5 +- .../sds100/keymapper/base/BaseMainActivity.kt | 8 --- .../keymapper/base/home/BaseHomeViewModel.kt | 18 ++++++- .../AndroidNotificationAdapter.kt | 54 +++++++++---------- .../navigation/BaseNavDirectionProvider.kt | 9 ++++ .../utils/navigation/NavigationViewModel.kt | 8 +-- data/build.gradle.kts | 7 ++- .../1.json | 0 .../10.json | 0 .../11.json | 0 .../12.json | 0 .../13.json | 0 .../14.json | 0 .../15.json | 0 .../16.json | 0 .../17.json | 0 .../18.json | 0 .../19.json | 0 .../2.json | 0 .../20.json | 0 .../3.json | 0 .../4.json | 0 .../5.json | 0 .../6.json | 0 .../7.json | 0 .../8.json | 0 .../9.json | 0 .../sds100/keymapper/data/db/AppDatabase.kt | 1 - .../keymapper/data/db/AppDatabaseModule.kt | 2 + 35 files changed, 111 insertions(+), 74 deletions(-) rename {base => app}/src/main/res/layout/activity_main.xml (92%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/1.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/10.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/11.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/12.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/13.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/14.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/15.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/16.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/17.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/18.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/19.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/2.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/20.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/3.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/4.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/5.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/6.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/7.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/8.json (100%) rename {base => data}/schemas/io.github.sds100.keymapper.data.db.AppDatabase/9.json (100%) diff --git a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt index 174aea7919..95643e8e67 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt @@ -1,5 +1,22 @@ package io.github.sds100.keymapper +import android.os.Bundle +import androidx.databinding.DataBindingUtil +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.R import io.github.sds100.keymapper.base.BaseMainActivity +import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.databinding.ActivityMainBinding -class MainActivity : BaseMainActivity() +@AndroidEntryPoint +class MainActivity : BaseMainActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val binding = + DataBindingUtil.setContentView(this, R.layout.activity_main) + + viewModel.showPopups(this, binding.coordinatorLayout) + } +} diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt index 247034da48..818923eedd 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt @@ -54,12 +54,6 @@ class HomeFragment : Fragment() { .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), ), viewModel = homeViewModel, - onSettingsClick = { - findNavController().navigate(NavBaseAppDirections.toSettingsFragment()) - }, - onAboutClick = { - findNavController().navigate(NavBaseAppDirections.actionGlobalAboutFragment()) - }, finishActivity = requireActivity()::finish, ) } diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt index 4020b30b04..bc425a7dc9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt @@ -12,8 +12,6 @@ import io.github.sds100.keymapper.base.home.HomeKeyMapListScreen fun HomeScreen( modifier: Modifier = Modifier, viewModel: BaseHomeViewModel, - onSettingsClick: () -> Unit, - onAboutClick: () -> Unit, finishActivity: () -> Unit, ) { val snackbarState = remember { SnackbarHostState() } @@ -22,8 +20,8 @@ fun HomeScreen( modifier = modifier, viewModel = viewModel.keyMapListViewModel, snackbarState = snackbarState, - onSettingsClick = onSettingsClick, - onAboutClick = onAboutClick, + onSettingsClick = viewModel::launchSettings, + onAboutClick = viewModel::launchAbout, finishActivity = finishActivity, fabBottomPadding = 0.dp, ) diff --git a/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt b/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt index 761a7d2e0f..12baf963d0 100644 --- a/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt +++ b/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt @@ -1,11 +1,14 @@ package io.github.sds100.keymapper.utils.navigation import androidx.navigation.NavDirections +import dagger.hilt.android.scopes.FragmentScoped import io.github.sds100.keymapper.NavAppDirections import io.github.sds100.keymapper.base.utils.navigation.BaseNavDirectionProvider import io.github.sds100.keymapper.base.utils.navigation.NavDestination +import javax.inject.Inject -class NavDirectionProvider : BaseNavDirectionProvider() { +@FragmentScoped +class NavDirectionProvider @Inject constructor() : BaseNavDirectionProvider() { override fun getDirection(destination: NavDestination<*>, requestKey: String): NavDirections { return when (destination) { is NavDestination.ConfigKeyMap -> when (destination) { diff --git a/base/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml similarity index 92% rename from base/src/main/res/layout/activity_main.xml rename to app/src/main/res/layout/activity_main.xml index 36f260896e..bab9f10586 100644 --- a/base/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -14,6 +14,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:defaultNavHost="true" - app:navGraph="@navigation/nav_base_app" /> + app:navGraph="@navigation/nav_app" /> \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_app.xml b/app/src/main/res/navigation/nav_app.xml index 760b20972c..0ebeb78f05 100644 --- a/app/src/main/res/navigation/nav_app.xml +++ b/app/src/main/res/navigation/nav_app.xml @@ -19,66 +19,67 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nav_app" app:startDestination="@id/home_fragment"> + + - + + + + + - - - + + - - - + - - \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt index bced0ce4a2..7cb21877ff 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt @@ -3,6 +3,7 @@ package io.github.sds100.keymapper.base import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.PopupViewModel @@ -10,8 +11,10 @@ import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import kotlinx.coroutines.launch +import javax.inject.Inject -class ActivityViewModel( +@HiltViewModel +class ActivityViewModel @Inject constructor( resourceProvider: ResourceProvider, ) : ViewModel(), ResourceProvider by resourceProvider, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt index 667f07f70b..6c6dae42eb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainActivity.kt @@ -17,7 +17,6 @@ import androidx.compose.ui.graphics.toArgb import androidx.core.content.ContextCompat import androidx.core.content.IntentCompat import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen -import androidx.databinding.DataBindingUtil import androidx.lifecycle.Lifecycle import androidx.lifecycle.flowWithLifecycle import androidx.lifecycle.lifecycleScope @@ -27,14 +26,12 @@ import com.anggrayudi.storage.extension.openInputStream import com.anggrayudi.storage.extension.openOutputStream import com.anggrayudi.storage.extension.toDocumentFile import io.github.sds100.keymapper.base.compose.ComposeColors -import io.github.sds100.keymapper.base.databinding.ActivityMainBinding import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapterImpl import io.github.sds100.keymapper.base.system.permissions.RequestPermissionDelegate import io.github.sds100.keymapper.base.trigger.RecordTriggerController import io.github.sds100.keymapper.base.utils.ui.ResourceProviderImpl import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showPopups import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.system.inputevents.MyMotionEvent @@ -139,11 +136,6 @@ abstract class BaseMainActivity : AppCompatActivity() { resourceProvider.onThemeChange() } - val binding = - DataBindingUtil.setContentView(this, R.layout.activity_main) - - viewModel.showPopups(this, binding.coordinatorLayout) - requestPermissionDelegate = RequestPermissionDelegate( this, showDialogs = true, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt index b4599f0a16..eae732e333 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt @@ -14,17 +14,19 @@ import io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase -import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.navigate +import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showPopup import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch @@ -75,6 +77,18 @@ abstract class BaseHomeViewModel( } } + fun launchSettings() { + viewModelScope.launch { + navigate("settings", NavDestination.Settings) + } + } + + fun launchAbout() { + viewModelScope.launch { + navigate("about", NavDestination.About) + } + } + private fun buildNavBarItems( showFloatingLayouts: Boolean, viewedAdvancedTriggers: Boolean, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/AndroidNotificationAdapter.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/AndroidNotificationAdapter.kt index 1268998a4c..dbae0c9ee3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/AndroidNotificationAdapter.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/AndroidNotificationAdapter.kt @@ -38,41 +38,41 @@ class AndroidNotificationAdapter @Inject constructor( val builder = NotificationCompat.Builder(ctx, notification.channel).apply { if (!DynamicColors.isDynamicColorAvailable()) { color = ctx.color(R.color.md_theme_secondary) + } - setContentTitle(notification.title) - setContentText(notification.text) + setContentTitle(notification.title) + setContentText(notification.text) - if (notification.onClickAction != null) { - val pendingIntent = createActionIntent(notification.onClickAction!!) - setContentIntent(pendingIntent) - } + if (notification.onClickAction != null) { + val pendingIntent = createActionIntent(notification.onClickAction!!) + setContentIntent(pendingIntent) + } - setAutoCancel(notification.autoCancel) - priority = notification.priority + setAutoCancel(notification.autoCancel) + priority = notification.priority - if (notification.onGoing) { - setOngoing(true) - } + if (notification.onGoing) { + setOngoing(true) + } - if (notification.bigTextStyle) { - setStyle(NotificationCompat.BigTextStyle()) - } + if (notification.bigTextStyle) { + setStyle(NotificationCompat.BigTextStyle()) + } - setSmallIcon(notification.icon) + setSmallIcon(notification.icon) - if (!notification.showOnLockscreen) { - setVisibility(NotificationCompat.VISIBILITY_SECRET) - } + if (!notification.showOnLockscreen) { + setVisibility(NotificationCompat.VISIBILITY_SECRET) + } - for (action in notification.actions) { - addAction( - NotificationCompat.Action( - 0, - action.text, - createActionIntent(action.intentType), - ), - ) - } + for (action in notification.actions) { + addAction( + NotificationCompat.Action( + 0, + action.text, + createActionIntent(action.intentType), + ), + ) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/BaseNavDirectionProvider.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/BaseNavDirectionProvider.kt index 74088bc265..cadedc9ea7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/BaseNavDirectionProvider.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/BaseNavDirectionProvider.kt @@ -1,6 +1,9 @@ package io.github.sds100.keymapper.base.utils.navigation import androidx.navigation.NavDirections +import dagger.hilt.EntryPoint +import dagger.hilt.InstallIn +import dagger.hilt.android.components.FragmentComponent import io.github.sds100.keymapper.base.NavBaseAppDirections import kotlinx.serialization.json.Json @@ -78,3 +81,9 @@ abstract class BaseNavDirectionProvider { } } } + +@EntryPoint +@InstallIn(FragmentComponent::class) +interface NavDirectionsProviderEntryPoint { + fun provider(): BaseNavDirectionProvider +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt index 610f00eab5..b0f1f33879 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt @@ -21,11 +21,11 @@ import io.github.sds100.keymapper.base.actions.tapscreen.PickDisplayCoordinateFr import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementFragment import io.github.sds100.keymapper.base.constraints.ChooseConstraintFragment import io.github.sds100.keymapper.base.constraints.Constraint -import io.github.sds100.keymapper.base.system.bluetooth.ChooseBluetoothDeviceFragment import io.github.sds100.keymapper.base.system.apps.ChooseActivityFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutResult +import io.github.sds100.keymapper.base.system.bluetooth.ChooseBluetoothDeviceFragment import io.github.sds100.keymapper.base.system.intents.ConfigIntentFragment import io.github.sds100.keymapper.base.system.intents.ConfigIntentResult import io.github.sds100.keymapper.common.utils.getJsonSerializable @@ -126,6 +126,9 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { } } + val navDirectionProvider = + EntryPointAccessors.fromFragment(fragment).provider() + navigate.onEach { event -> val (requestKey, destination) = event @@ -138,8 +141,7 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { sendNavResultFromBundle(event.key, event.destination.id, bundle) } - val direction = EntryPointAccessors.fromFragment(fragment) - .getDirection(destination, requestKey) + val direction = navDirectionProvider.getDirection(destination, requestKey) fragment.findNavController().navigate(direction) }.launchIn(fragment.lifecycleScope) diff --git a/data/build.gradle.kts b/data/build.gradle.kts index c8aad1bd95..f8c352922b 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -24,7 +24,7 @@ android { isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" + "proguard-rules.pro", ) } } @@ -49,7 +49,10 @@ dependencies { implementation(libs.kotlinx.coroutines.android) implementation(libs.kotlinx.serialization.json) implementation(libs.androidx.core.ktx) + implementation(libs.androidx.room.ktx) + ksp(libs.androidx.room.compiler) + implementation(libs.androidx.datastore.preferences) implementation(libs.androidx.preference.ktx) implementation(libs.kotson) @@ -60,4 +63,4 @@ dependencies { testImplementation(libs.junit) androidTestImplementation(libs.androidx.test.ext.junit) -} \ No newline at end of file +} diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/1.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/1.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/1.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/1.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/10.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/10.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/10.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/10.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/11.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/11.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/11.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/11.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/12.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/12.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/12.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/12.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/13.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/13.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/13.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/13.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/14.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/14.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/14.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/14.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/15.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/15.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/15.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/15.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/16.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/16.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/16.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/16.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/17.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/17.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/17.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/17.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/18.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/18.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/18.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/18.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/19.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/19.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/19.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/19.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/2.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/2.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/2.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/2.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/20.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/20.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/20.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/20.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/3.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/3.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/3.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/3.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/4.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/4.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/4.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/4.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/5.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/5.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/5.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/5.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/6.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/6.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/6.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/6.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/7.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/7.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/7.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/7.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/8.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/8.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/8.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/8.json diff --git a/base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/9.json b/data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/9.json similarity index 100% rename from base/schemas/io.github.sds100.keymapper.data.db.AppDatabase/9.json rename to data/schemas/io.github.sds100.keymapper.data.db.AppDatabase/9.json diff --git a/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt index 238facca72..0b714995eb 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt @@ -70,7 +70,6 @@ import javax.inject.Singleton ConstraintListTypeConverter::class, NodeInteractionTypeSetTypeConverter::class, ) -@Singleton abstract class AppDatabase : RoomDatabase() { companion object { const val DATABASE_NAME = "key_map_database" diff --git a/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabaseModule.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabaseModule.kt index 33707efc64..3b1ae3b73f 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabaseModule.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabaseModule.kt @@ -15,10 +15,12 @@ import io.github.sds100.keymapper.data.db.dao.FloatingLayoutDao import io.github.sds100.keymapper.data.db.dao.GroupDao import io.github.sds100.keymapper.data.db.dao.KeyMapDao import io.github.sds100.keymapper.data.db.dao.LogEntryDao +import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) internal class AppDatabaseModule { + @Singleton @Provides fun provideAppDatabase( @ApplicationContext ctx: Context, From 7994417b8283b496b85856fdaebe0e5593093943 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 21 May 2025 19:24:03 +0200 Subject: [PATCH 31/71] #1711 fix tests --- .github/workflows/pull-request.yml | 2 +- .github/workflows/testing.yml | 2 +- app/build.gradle.kts | 25 +- base/build.gradle.kts | 37 +- .../keymapper/AppDatabaseMigrationTest.kt | 855 ------------------ .../system/intents/ConfigIntentViewModel.kt | 10 +- .../{ => base}/utils/IntentStrings.kt | 22 +- .../keymapper/{ => base}/BackupManagerTest.kt | 21 +- .../{ => base}/ConfigKeyMapUseCaseTest.kt | 10 +- .../{ => base}/KeyMapJsonMigrationTest.kt | 4 +- .../LegacyFingerprintMapMigrationTest.kt | 4 +- .../{ => base}/TestDispatcherProvider.kt | 2 +- .../keymapper/{ => base}/TestLoggingTree.kt | 2 +- .../actions/GetActionFailedUseCaseTest.kt | 8 +- .../actions/PerformActionsUseCaseTest.kt | 33 +- ...onfigKeyServiceEventActionViewModelTest.kt | 0 .../constraints/ConstraintSnapshotTest.kt | 2 +- .../keymaps/DpadMotionEventTrackerTest.kt | 2 +- .../keymaps/KeyMapControllerTest.kt | 17 +- .../ProcessKeyMapGroupsForDetectionTest.kt | 2 +- ...riggerKeyMapFromOtherAppsControllerTest.kt | 4 +- .../repositories/FakePreferenceRepository.kt | 3 +- .../repositories/KeyMapRepositoryTest.kt | 7 +- .../system/devices/FakeDevicesAdapter.kt | 6 +- .../system/files/FakeFileAdapter.kt | 4 +- .../{ => base}/system/files/JavaFile.kt | 3 +- .../intents/ConfigIntentViewModelTest.kt | 5 +- .../{util => base/utils}/FlowUtils.kt | 2 +- .../keymapper/base/utils}/JsonTestUtils.kt | 2 +- .../{util => base/utils}/KeyMapUtils.kt | 5 +- .../base/utils/TestBuildConfigProvider.kt | 13 + .../utils}/TestConstraintSnapshot.kt | 4 +- .../utils}/ui/FakeResourceProvider.kt | 0 .../sds100/keymapper/util/JsonTestUtils.kt | 85 -- {app => base}/version.properties | 0 35 files changed, 157 insertions(+), 1046 deletions(-) delete mode 100644 base/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt rename base/src/main/java/io/github/sds100/keymapper/{ => base}/utils/IntentStrings.kt (65%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/BackupManagerTest.kt (97%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/ConfigKeyMapUseCaseTest.kt (99%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/KeyMapJsonMigrationTest.kt (99%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/LegacyFingerprintMapMigrationTest.kt (99%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/TestDispatcherProvider.kt (90%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/TestLoggingTree.kt (84%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/actions/GetActionFailedUseCaseTest.kt (94%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/actions/PerformActionsUseCaseTest.kt (94%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt (100%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/constraints/ConstraintSnapshotTest.kt (99%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/keymaps/DpadMotionEventTrackerTest.kt (99%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/keymaps/KeyMapControllerTest.kt (99%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/keymaps/ProcessKeyMapGroupsForDetectionTest.kt (99%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt (98%) rename base/src/test/java/io/github/sds100/keymapper/{data => base}/repositories/FakePreferenceRepository.kt (87%) rename base/src/test/java/io/github/sds100/keymapper/{data => base}/repositories/KeyMapRepositoryTest.kt (92%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/system/devices/FakeDevicesAdapter.kt (86%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/system/files/FakeFileAdapter.kt (90%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/system/files/JavaFile.kt (94%) rename base/src/test/java/io/github/sds100/keymapper/{ => base}/system/intents/ConfigIntentViewModelTest.kt (94%) rename base/src/test/java/io/github/sds100/keymapper/{util => base/utils}/FlowUtils.kt (90%) rename base/src/{androidTest/java/io/github/sds100/keymapper => test/java/io/github/sds100/keymapper/base/utils}/JsonTestUtils.kt (98%) rename base/src/test/java/io/github/sds100/keymapper/{util => base/utils}/KeyMapUtils.kt (85%) create mode 100644 base/src/test/java/io/github/sds100/keymapper/base/utils/TestBuildConfigProvider.kt rename base/src/test/java/io/github/sds100/keymapper/{util => base/utils}/TestConstraintSnapshot.kt (99%) rename base/src/test/java/io/github/sds100/keymapper/{util => base/utils}/ui/FakeResourceProvider.kt (100%) delete mode 100644 base/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt rename {app => base}/version.properties (100%) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index b0a1c1f356..2be87f9f1b 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -21,7 +21,7 @@ jobs: uses: android-actions/setup-android@v2 - name: Unit tests - run: bash ./gradlew testFreeDebugUnitTest + run: bash ./gradlew testDebugUnitTest style: name: Code style check diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 7bef735539..fd1b749380 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -27,7 +27,7 @@ jobs: uses: android-actions/setup-android@v2 - name: Unit tests - run: bash ./gradlew testFreeDebugUnitTest + run: bash ./gradlew testDebugUnitTest style: name: Code style check diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0be87c2498..4c71aa09f8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -22,7 +22,7 @@ android { buildToolsVersion = libs.versions.build.tools.get() val versionProperties = Properties().apply { - project.file("version.properties").inputStream().use { load(it) } + rootProject.file("base/version.properties").inputStream().use { load(it) } } defaultConfig { @@ -231,27 +231,4 @@ dependencies { implementation(libs.google.accompanist.drawablepainter) implementation(libs.androidx.compose.ui.tooling) -// debugImplementation(libs.squareup.leakcanary.android) // Keep commented - - // Dependencies for local unit tests - testImplementation(libs.junit) - testImplementation(libs.hamcrest.all) - testImplementation(libs.androidx.junit.ktx) // androidx.test.ext:junit-ktx - testImplementation(libs.androidx.test.core.ktx) - testImplementation(libs.androidx.test.core) - testImplementation(libs.robolectric) - testImplementation(libs.androidx.arch.core.testing) - testImplementation(libs.kotlinx.coroutines.test) - testImplementation(libs.junit.params) - testImplementation(libs.mockito.kotlin) - testImplementation(libs.mockito.core) - testImplementation(libs.mockito.inline) - testDebugImplementation(libs.androidx.fragment.testing) - - // Dependencies for Android instrumented tests - androidTestImplementation(libs.androidx.test.ext.junit) // androidx.test.ext:junit - androidTestImplementation(libs.junit) // Repeated, fine - androidTestImplementation(libs.androidx.navigation.testing) - androidTestImplementation(libs.androidx.room.testing.legacy) - androidTestImplementation(libs.mockito.android) } diff --git a/base/build.gradle.kts b/base/build.gradle.kts index fe09b340f2..4cc085992f 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -1,3 +1,5 @@ +import java.util.Properties + plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) @@ -15,11 +17,21 @@ android { namespace = "io.github.sds100.keymapper.base" compileSdk = libs.versions.compile.sdk.get().toInt() + val versionProperties = Properties().apply { + project.file("version.properties").inputStream().use { load(it) } + } + defaultConfig { minSdk = libs.versions.min.sdk.get().toInt() testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") + + buildConfigField( + "Integer", + "VERSION_CODE", + versionProperties.getProperty("VERSION_CODE"), + ) } buildTypes { @@ -27,7 +39,7 @@ android { isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" + "proguard-rules.pro", ) } } @@ -118,4 +130,27 @@ dependencies { implementation(libs.androidx.compose.material3.adaptive.navigation) implementation(libs.google.accompanist.drawablepainter) implementation(libs.androidx.compose.ui.tooling) + + // Tests + + testImplementation(libs.junit) + testImplementation(libs.hamcrest.all) + testImplementation(libs.androidx.junit.ktx) // androidx.test.ext:junit-ktx + testImplementation(libs.androidx.test.core.ktx) + testImplementation(libs.androidx.test.core) + testImplementation(libs.robolectric) + testImplementation(libs.androidx.arch.core.testing) + testImplementation(libs.kotlinx.coroutines.test) + testImplementation(libs.junit.params) + testImplementation(libs.mockito.kotlin) + testImplementation(libs.mockito.core) + testImplementation(libs.mockito.inline) + testDebugImplementation(libs.androidx.fragment.testing) + + // Dependencies for Android instrumented tests + androidTestImplementation(libs.androidx.test.ext.junit) // androidx.test.ext:junit + androidTestImplementation(libs.junit) // Repeated, fine + androidTestImplementation(libs.androidx.navigation.testing) + androidTestImplementation(libs.androidx.room.testing.legacy) + androidTestImplementation(libs.mockito.android) } diff --git a/base/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt b/base/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt deleted file mode 100644 index 0011ad298c..0000000000 --- a/base/src/androidTest/java/io/github/sds100/keymapper/AppDatabaseMigrationTest.kt +++ /dev/null @@ -1,855 +0,0 @@ -package io.github.sds100.keymapper - -import androidx.datastore.preferences.core.PreferenceDataStoreFactory -import androidx.datastore.preferences.core.edit -import androidx.datastore.preferences.core.stringPreferencesKey -import androidx.room.migration.Migration -import androidx.room.testing.MigrationTestHelper -import androidx.sqlite.db.SupportSQLiteDatabase -import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory -import androidx.test.espresso.matcher.ViewMatchers -import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.test.platform.app.InstrumentationRegistry -import com.github.salomonbrys.kotson.get -import com.google.gson.Gson -import com.google.gson.JsonArray -import com.google.gson.JsonElement -import com.google.gson.JsonParseException -import com.google.gson.JsonParser -import io.github.sds100.keymapper.data.db.AppDatabase -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.runBlocking -import org.hamcrest.Matchers -import org.junit.Before -import org.junit.Rule -import org.junit.Test -import org.junit.runner.RunWith -import java.io.File -import java.io.IOException - -@ExperimentalCoroutinesApi -@RunWith(AndroidJUnit4::class) -class AppDatabaseMigrationTest { - companion object { - private const val TEST_DB_NAME = "migration_test" - - private val MIGRATION_1_2_TEST_DATA = arrayOf( - arrayOf(1, "[]", 0, 1, "NULL", "NULL", "NULL"), - arrayOf(2, "[{\"keys\":[25]}]", 4, 1, "APP", "com.android.chrome", "[]"), - arrayOf(3, "[{\"keys\":[25,24]}]", 0, 1, "KEY", "24", "[]"), - arrayOf(4, "[{\"keys\":[25,24]}]", 0, 1, "KEYCODE", "24", "[]"), - arrayOf( - 5, - "[{\"keys\":[25,24]},{\"keys\":[25]}]", - 0, - 1, - "SYSTEM_ACTION", - "toggle_flashlight", - "[{\"data\":\"option_lens_back\",\"id\":\"extra_flash\"}]", - ), - arrayOf(6, "[{\"keys\":[4]}]", 3, 1, "SYSTEM_ACTION", "volume_mute", "[]"), - ) - - private val MIGRATION_1_2_EXPECTED_DATA = arrayOf( - arrayOf(1, "{\"extras\":[],\"keys\":[],\"mode\":1}", "[]", "[]", 1, 0, "NULL", 1), - arrayOf( - 2, - "{\"extras\":[],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.ANY_DEVICE\",\"keyCode\":25}],\"mode\":1}", - "[{\"data\":\"com.android.chrome\",\"extras\":[],\"flags\":0,\"type\":\"APP\"}]", - "[]", - 1, - 1, - "NULL", - 1, - ), - arrayOf( - 3, - "{\"extras\":[],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.ANY_DEVICE\",\"keyCode\":25},{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.ANY_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"24\",\"extras\":[],\"flags\":0,\"type\":\"KEY_EVENT\"}]", - "[]", - 1, - 0, - "NULL", - 1, - ), - arrayOf( - 4, - "{\"extras\":[],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.ANY_DEVICE\",\"keyCode\":25},{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.ANY_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"24\",\"extras\":[],\"flags\":0,\"type\":\"KEY_EVENT\"}]", - "[]", - 1, - 0, - "NULL", - 1, - ), - arrayOf( - 5, - "{\"extras\":[],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.ANY_DEVICE\",\"keyCode\":25},{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.ANY_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"toggle_flashlight\",\"extras\":[{\"data\":\"option_lens_back\",\"id\":\"extra_flash\"}],\"flags\":0,\"type\":\"SYSTEM_ACTION\"}]", - "[]", - 1, - 0, - "NULL", - 1, - ), - arrayOf( - 6, - "{\"extras\":[],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.ANY_DEVICE\",\"keyCode\":25}],\"mode\":1}", - "[{\"data\":\"toggle_flashlight\",\"extras\":[{\"data\":\"option_lens_back\",\"id\":\"extra_flash\"}],\"flags\":0,\"type\":\"SYSTEM_ACTION\"}]", - "[]", - 1, - 0, - "NULL", - 1, - ), - arrayOf( - 7, - "{\"extras\":[],\"keys\":[{\"clickType\":1,\"deviceId\":\"io.github.sds100.keymapper.ANY_DEVICE\",\"keyCode\":4}],\"mode\":1}", - "[{\"data\":\"volume_mute\",\"extras\":[],\"flags\":1,\"type\":\"SYSTEM_ACTION\"}]", - "[]", - 1, - 0, - "NULL", - 1, - ), - ) - - private val MIGRATION_2_3_TEST_DATA = arrayOf( - arrayOf( - 1, - "{\"extras\":[{\"data\":\"610\",\"id\":\"extra_repeat_delay\"}],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25}],\"mode\":1}", - "[{\"data\":\"10\",\"extras\":[],\"flags\":0,\"type\":\"KEY_EVENT\"}]", - "[]", - 1, - 1, - "NULL", - 1, - ), - arrayOf(2, "{\"extras\":[],\"keys\":[],\"mode\":1}", "[]", "[]", 1, 0, "NULL", 1), - arrayOf( - 3, - "{\"extras\":[],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25},{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"enable_mobile_data\",\"extras\":[],\"flags\":0,\"type\":\"SYSTEM_ACTION\"}]", - "[]", - 1, - 0, - "NULL", - 1, - ), - arrayOf( - 4, - "{\"extras\":[],\"keys\":[{\"clickType\":1,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25},{\"clickType\":1,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"14\",\"extras\":[],\"flags\":0,\"type\":\"KEY_EVENT\"}]", - "[]", - 1, - 0, - "NULL", - 1, - ), - ) - - private val MIGRATION_2_3_EXPECTED_DATA = arrayOf( - arrayOf( - 1, - "{\"extras\":[{\"data\":\"610\",\"id\":\"extra_repeat_delay\"}],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25}],\"mode\":1}", - "[{\"data\":\"10\",\"extras\":[],\"flags\":0,\"type\":\"KEY_EVENT\"}]", - "[]", - 1, - 17, - "NULL", - 1, - ), - arrayOf(2, "{\"extras\":[],\"keys\":[],\"mode\":1}", "[]", "[]", 1, 0, "NULL", 1), - arrayOf( - 3, - "{\"extras\":[],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25},{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"enable_mobile_data\",\"extras\":[],\"flags\":0,\"type\":\"SYSTEM_ACTION\"}]", - "[]", - 1, - 0, - "NULL", - 1, - ), - arrayOf( - 4, - "{\"extras\":[],\"keys\":[{\"clickType\":1,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25},{\"clickType\":1,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"14\",\"extras\":[],\"flags\":0,\"type\":\"KEY_EVENT\"}]", - "[]", - 1, - 16, - "NULL", - 1, - ), - ) - - private val MIGRATION_3_4_TEST_DATA = arrayOf( - arrayOf( - 1, - "{\"extras\":[{\"data\":\"610\",\"id\":\"extra_repeat_delay\"}],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25}],\"mode\":1}", - "[{\"data\":\"10\",\"extras\":[],\"flags\":0,\"type\":\"KEY_EVENT\"}]", - "[]", - 1, - 17, - "NULL", - 1, - ), - arrayOf(2, "{\"extras\":[],\"keys\":[],\"mode\":1}", "[]", "[]", 1, 0, "NULL", 1), - arrayOf( - 3, - "{\"extras\":[],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25},{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"enable_mobile_data\",\"extras\":[],\"flags\":0,\"type\":\"SYSTEM_ACTION\"}]", - "[]", - 1, - 0, - "NULL", - 1, - ), - arrayOf( - 4, - "{\"extras\":[],\"keys\":[{\"clickType\":1,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25},{\"clickType\":1,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"14\",\"extras\":[],\"flags\":0,\"type\":\"KEY_EVENT\"}]", - "[]", - 1, - 16, - "NULL", - 1, - ), - ) - - private val MIGRATION_3_4_EXPECTED_DATA = arrayOf( - arrayOf( - 1, - "{\"extras\":[{\"data\":\"610\",\"id\":\"extra_repeat_delay\"}],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25}],\"mode\":2}", - "[{\"data\":\"10\",\"extras\":[],\"flags\":0,\"type\":\"KEY_EVENT\"}]", - "[]", - 1, - 17, - "NULL", - 1, - ), - arrayOf(2, "{\"extras\":[],\"keys\":[],\"mode\":2}", "[]", "[]", 1, 0, "NULL", 1), - arrayOf( - 3, - "{\"extras\":[],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25},{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"enable_mobile_data\",\"extras\":[],\"flags\":0,\"type\":\"SYSTEM_ACTION\"}]", - "[]", - 1, - 0, - "NULL", - 1, - ), - arrayOf( - 4, - "{\"extras\":[],\"keys\":[{\"clickType\":1,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25},{\"clickType\":1,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"14\",\"extras\":[],\"flags\":0,\"type\":\"KEY_EVENT\"}]", - "[]", - 1, - 16, - "NULL", - 1, - ), - ) - - private val MIGRATION_4_5_TEST_DATA = arrayOf( - arrayOf( - 1, - "{\"extras\":[],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25},{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"volume_up\",\"extras\":[],\"flags\":1,\"type\":\"SYSTEM_ACTION\"},{\"data\":\"com.android.settings\",\"extras\":[],\"flags\":0,\"type\":\"APP\"}]", - "[]", - 1, - 16, - "NULL", - 1, - ), - arrayOf( - 2, - "{\"extras\":[{\"data\":\"5000\",\"id\":\"extra_hold_down_until_repeat_delay\"},{\"data\":\"575\",\"id\":\"extra_repeat_delay\"},{\"data\":\"365\",\"id\":\"extra_vibration_duration\"}],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25}],\"mode\":2}", - "[{\"data\":\"7\",\"extras\":[],\"flags\":0,\"type\":\"KEY_EVENT\"}]", - "[]", - 1, - 19, - "NULL", - 1, - ), - ) - - private val MIGRATION_4_5_EXPECTED_DATA = arrayOf( - arrayOf( - 1, - "{\"extras\":[],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25},{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":24}],\"mode\":0}", - "[{\"data\":\"volume_up\",\"extras\":[],\"flags\":5,\"type\":\"SYSTEM_ACTION\"},{\"data\":\"com.android.settings\",\"extras\":[],\"flags\":4,\"type\":\"APP\"}]", - "[]", - 1, - 0, - "NULL", - 1, - ), - arrayOf( - 2, - "{\"extras\":[{\"data\":\"365\",\"id\":\"extra_vibration_duration\"}],\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25}],\"mode\":2}", - "[{\"data\":\"7\",\"extras\":[{\"data\":\"5000\",\"id\":\"extra_hold_down_until_repeat_delay\"},{\"data\":\"575\",\"id\":\"extra_repeat_delay\"}],\"flags\":6,\"type\":\"KEY_EVENT\"}]", - "[]", - 1, - 1, - "NULL", - 1, - ), - ) - - private val MIGRATION_5_6_TEST_DATA = arrayOf( - arrayOf( - 1, - "{\"extras\":[{\"data\":\"2930\",\"id\":\"extra_sequence_trigger_timeout\"},{\"data\":\"1840\",\"id\":\"extra_long_press_delay\"},{\"data\":\"3580\",\"id\":\"extra_double_press_timeout\"},{\"data\":\"390\",\"id\":\"extra_vibration_duration\"}],\"keys\":[{\"clickType\":1,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25},{\"clickType\":2,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":24}],\"mode\":1}", - "[{\"data\":\"volume_up\",\"extras\":[],\"flags\":1,\"type\":\"SYSTEM_ACTION\"}]", - "[]", - 1, - 5, - "NULL", - 1, - ), - ) - - private val MIGRATION_5_6_EXPECTED_DATA = arrayOf( - arrayOf( - 1, - "{\"extras\":[{\"data\":\"2930\",\"id\":\"extra_sequence_trigger_timeout\"},{\"data\":\"1840\",\"id\":\"extra_long_press_delay\"},{\"data\":\"3580\",\"id\":\"extra_double_press_timeout\"},{\"data\":\"390\",\"id\":\"extra_vibration_duration\"}],\"flags\":5,\"keys\":[{\"clickType\":1,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":25},{\"clickType\":2,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"keyCode\":24}],\"mode\":1}", - "[{\"data\":\"volume_up\",\"extras\":[],\"flags\":1,\"type\":\"SYSTEM_ACTION\"}]", - "[]", - 1, - 0, - "NULL", - 1, - ), - ) - - private val MIGRATION_9_10_TEST_DATA = arrayOf( - arrayOf( - 1, - "{\"extras\":[],\"flags\":0,\"keys\":[],\"mode\":2}", - "[{\"data\":\"com.google.android.contacts\",\"extras\":[],\"flags\":2,\"type\":\"APP\",\"uid\":\"dc2d8c69-aaa5-4471-b981-17cba7677c1a\"}]", - "[]", - 1, - 0, - "", - 1, - "d314e9e8-fac9-43e7-b540-0b9c0bfb4238", - ), - arrayOf( - 2, - "{\"extras\":[],\"flags\":1,\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"flags\":0,\"keyCode\":25,\"uid\":\"9d5d6f0b-1b9a-44ba-9406-1caaacea05de\"}],\"mode\":2}", - "[{\"data\":\"com.discord\",\"extras\":[],\"flags\":2,\"type\":\"APP\",\"uid\":\"86c78374-59ce-4050-94a4-299f4778658f\"}]", - "[]", - 1, - 0, - "", - 1, - "b854ece7-2f0e-45c4-9cf3-bb5aa4fad288", - ), - arrayOf( - 3, - "{\"extras\":[],\"flags\":0,\"keys\":[],\"mode\":2}", - "[{\"data\":\"com.google.android.vr.home\",\"extras\":[],\"flags\":2,\"type\":\"APP\",\"uid\":\"ca5b18ee-2673-4443-b2a7-cedef2c455b2\"},{\"data\":\"com.google.android.calendar\",\"extras\":[],\"flags\":0,\"type\":\"APP\",\"uid\":\"d274a5a8-f48e-4fbf-acbd-ed3c4b4ff377\"},{\"data\":\"enable_mobile_data\",\"extras\":[],\"flags\":2,\"type\":\"SYSTEM_ACTION\",\"uid\":\"f6b2afc5-4265-403d-8a0f-4eacf245286f\"}]", - "[]", - 1, - 0, - "", - 1, - "75ab7552-c175-4df4-9f50-1a9b86e717cc", - ), - ) - - private val MIGRATION_9_10_EXPECTED_DATA = arrayOf( - arrayOf( - 1, - "{\"extras\":[],\"flags\":16,\"keys\":[],\"mode\":2}", - "[{\"data\":\"com.google.android.contacts\",\"extras\":[],\"flags\":0,\"type\":\"APP\",\"uid\":\"dc2d8c69-aaa5-4471-b981-17cba7677c1a\"}]", - "[]", - 1, - 0, - "", - 1, - "d314e9e8-fac9-43e7-b540-0b9c0bfb4238", - ), - arrayOf( - 2, - "{\"extras\":[],\"flags\":17,\"keys\":[{\"clickType\":0,\"deviceId\":\"io.github.sds100.keymapper.THIS_DEVICE\",\"flags\":0,\"keyCode\":25,\"uid\":\"9d5d6f0b-1b9a-44ba-9406-1caaacea05de\"}],\"mode\":2}", - "[{\"data\":\"com.discord\",\"extras\":[],\"flags\":0,\"type\":\"APP\",\"uid\":\"86c78374-59ce-4050-94a4-299f4778658f\"}]", - "[]", - 1, - 0, - "", - 1, - "b854ece7-2f0e-45c4-9cf3-bb5aa4fad288", - ), - arrayOf( - 3, - "{\"extras\":[],\"flags\":16,\"keys\":[],\"mode\":2}", - "[{\"data\":\"com.google.android.vr.home\",\"extras\":[],\"flags\":0,\"type\":\"APP\",\"uid\":\"ca5b18ee-2673-4443-b2a7-cedef2c455b2\"},{\"data\":\"com.google.android.calendar\",\"extras\":[],\"flags\":0,\"type\":\"APP\",\"uid\":\"d274a5a8-f48e-4fbf-acbd-ed3c4b4ff377\"},{\"data\":\"enable_mobile_data\",\"extras\":[],\"flags\":0,\"type\":\"SYSTEM_ACTION\",\"uid\":\"f6b2afc5-4265-403d-8a0f-4eacf245286f\"}]", - "[]", - 1, - 0, - "", - 1, - "75ab7552-c175-4df4-9f50-1a9b86e717cc", - ), - ) - } - - @get:Rule - val helper: MigrationTestHelper = MigrationTestHelper( - InstrumentationRegistry.getInstrumentation(), - AppDatabase::class.java.canonicalName, - FrameworkSQLiteOpenHelperFactory(), - ) - - private val coroutineScope = MainScope() - - private lateinit var jsonParser: JsonParser - private lateinit var gson: Gson - - @Before - fun init() { - jsonParser = JsonParser() - gson = Gson() - } - - /** - * issue #612 - */ - @Test - @Throws(IOException::class) - fun migrate11to12() { - val legacyFingerprintMapsDataStore = PreferenceDataStoreFactory.create( - corruptionHandler = null, - migrations = emptyList(), - scope = coroutineScope, - produceFile = { File.createTempFile("test", ".preferences_pb") }, - ) - - val testDataFileName = "migration-11-12-test-data.json" - val expectedDataFileName = "migration-11-12-expected-data.json" - val testDataJson = getJsonFileText(testDataFileName) - - runBlocking { - val rootElement = jsonParser.parse(testDataJson) - - legacyFingerprintMapsDataStore.edit { preferences -> - preferences.putAll( - stringPreferencesKey("swipe_down") to gson.toJson(rootElement["fingerprint_swipe_down"]), - stringPreferencesKey("swipe_up") to gson.toJson(rootElement["fingerprint_swipe_up"]), - stringPreferencesKey("swipe_left") to gson.toJson(rootElement["fingerprint_swipe_left"]), - stringPreferencesKey("swipe_right") to gson.toJson(rootElement["fingerprint_swipe_right"]), - ) - } - } - - val fromVersion = 11 - val toVersion = 12 - val migration = AppDatabase.RoomMigration11To12(legacyFingerprintMapsDataStore) - val keyMapColumnNameToJsonNameMap = mapOf( - "id" to "id", - "trigger" to "trigger", - "action_list" to "actionList", - "constraint_list" to "constraintList", - "constraint_mode" to "constraintMode", - "flags" to "flags", - "folder_name" to "folderName", - "is_enabled" to "isEnabled", - "uid" to "uid", - ) - val fingerprintMapColumnNameToJsonNameMap = mapOf( - "id" to "id", - "action_list" to "action_list", - "constraint_list" to "constraints", - "constraint_mode" to "constraint_mode", - "extras" to "extras", - "flags" to "flags", - "is_enabled" to "enabled", - ) - - // do this without using the test() method because fingerprint maps are stored differently in test file - - helper.createDatabase(TEST_DB_NAME, fromVersion).apply { - val keyMapJsonArray = getKeyMapListJsonFromFile(testDataFileName) - insertMappingListJsonIntoDatabase( - this, - keyMapJsonArray, - keyMapColumnNameToJsonNameMap, - "keymaps", - ) - - val deviceInfoJsonArray = jsonParser.parse(testDataJson)["device_info"].asJsonArray - - deviceInfoJsonArray.forEach { element -> - - val descriptor = element["descriptor"].asString - val name = element["name"].asString - - this.execSQL( - """ - INSERT INTO deviceinfo (descriptor, name) VALUES ('$descriptor', '$name') - """, - ) - } - // dont insert test data fingerprintmaps into database because they weren't in version 11 - } - - val db = helper.runMigrationsAndValidate(TEST_DB_NAME, toVersion, true, migration) - - val expectedKeyMapJsonList = - getKeyMapListJsonFromFile(expectedDataFileName).map { element -> - - val values = keyMapColumnNameToJsonNameMap.values.map { key -> - element.convertValueToJson(key).convertJsonValueToSqlValue() - } - - values.toTypedArray() - } - - testColumnsMatch(db, tableName = "keymaps", expectedKeyMapJsonList.toTypedArray()) - - val expectedFingerprintMapJsonList = - getFingerprintMapListJsonFromFile(expectedDataFileName).map { element -> - val values = fingerprintMapColumnNameToJsonNameMap.values.map { key -> - element.convertValueToJson(key).convertJsonValueToSqlValue() - } - - values.toTypedArray() - } - - testColumnsMatch( - db, - tableName = "fingerprintmaps", - expectedFingerprintMapJsonList.toTypedArray(), - ) - } - - /** - * issue #621 - */ - @Test - @Throws(IOException::class) - fun migrate10to11() { - test( - fromVersion = 10, - toVersion = 11, - migration = AppDatabase.MIGRATION_10_11, - testDataFileName = "migration-10-11-test-data.json", - expectedDataFileName = "migration-10-11-expected-data.json", - keyMapColumnNameToJsonNameMap = mapOf( - "id" to "id", - "trigger" to "trigger", - "action_list" to "actionList", - "constraint_list" to "constraintList", - "constraint_mode" to "constraintMode", - "flags" to "flags", - "folder_name" to "folderName", - "is_enabled" to "isEnabled", - "uid" to "uid", - ), - ) - } - - @Suppress("VARIABLE_WITH_REDUNDANT_INITIALIZER") - @Test - @Throws(IOException::class) - fun migrate9to10() { - var db = helper.createDatabase(TEST_DB_NAME, 9).apply { - MIGRATION_9_10_TEST_DATA.forEach { row -> - - execSQL( - """ - INSERT INTO keymaps (id, trigger, action_list, constraint_list, constraint_mode, flags, folder_name, is_enabled, uid) - VALUES (${row.joinToString { "'$it'" }}) - """, - ) - } - close() - } - - db = helper.runMigrationsAndValidate(TEST_DB_NAME, 10, true, AppDatabase.MIGRATION_9_10) - - testColumnsMatch(db, tableName = "keymaps", MIGRATION_9_10_EXPECTED_DATA) - } - - @Suppress("VARIABLE_WITH_REDUNDANT_INITIALIZER") - @Test - @Throws(IOException::class) - fun migrate5to6() { - var db = helper.createDatabase(TEST_DB_NAME, 5).apply { - MIGRATION_5_6_TEST_DATA.forEach { row -> - - execSQL( - """ - INSERT INTO keymaps (id, trigger, action_list, constraint_list, constraint_mode, flags, folder_name, is_enabled) - VALUES (${row.joinToString { "'$it'" }}) - """, - ) - } - close() - } - - db = helper.runMigrationsAndValidate(TEST_DB_NAME, 6, true, AppDatabase.MIGRATION_5_6) - - testColumnsMatch(db, tableName = "keymaps", MIGRATION_5_6_EXPECTED_DATA) - } - - @Suppress("VARIABLE_WITH_REDUNDANT_INITIALIZER") - @Test - @Throws(IOException::class) - fun migrate4to5() { - var db = helper.createDatabase(TEST_DB_NAME, 4).apply { - MIGRATION_4_5_TEST_DATA.forEach { row -> - - execSQL( - """ - INSERT INTO keymaps (id, trigger, action_list, constraint_list, constraint_mode, flags, folder_name, is_enabled) - VALUES (${row.joinToString { "'$it'" }}) - """, - ) - } - close() - } - - db = helper.runMigrationsAndValidate(TEST_DB_NAME, 5, true, AppDatabase.MIGRATION_4_5) - - testColumnsMatch(db, tableName = "keymaps", MIGRATION_4_5_EXPECTED_DATA) - } - - @Suppress("VARIABLE_WITH_REDUNDANT_INITIALIZER") - @Test - @Throws(IOException::class) - fun migrate3to4() { - var db = helper.createDatabase(TEST_DB_NAME, 3).apply { - MIGRATION_3_4_TEST_DATA.forEach { row -> - - execSQL( - """ - INSERT INTO keymaps (id, trigger, action_list, constraint_list, constraint_mode, flags, folder_name, is_enabled) - VALUES (${row.joinToString { "'$it'" }}) - """, - ) - } - close() - } - - db = helper.runMigrationsAndValidate(TEST_DB_NAME, 4, true, AppDatabase.MIGRATION_3_4) - - testColumnsMatch(db, tableName = "keymaps", MIGRATION_3_4_EXPECTED_DATA) - } - - @Suppress("VARIABLE_WITH_REDUNDANT_INITIALIZER") - @Test - @Throws(IOException::class) - fun migrate2to3() { - var db = helper.createDatabase(TEST_DB_NAME, 2).apply { - MIGRATION_2_3_TEST_DATA.forEach { row -> - - execSQL( - """ - INSERT INTO keymaps (id, trigger, action_list, constraint_list, constraint_mode, flags, folder_name, is_enabled) - VALUES (${row.joinToString { "'$it'" }}) - """, - ) - } - close() - } - - db = helper.runMigrationsAndValidate(TEST_DB_NAME, 3, true, AppDatabase.MIGRATION_2_3) - - testColumnsMatch(db, tableName = "keymaps", MIGRATION_2_3_EXPECTED_DATA) - } - - @Suppress("VARIABLE_WITH_REDUNDANT_INITIALIZER") - @Test - @Throws(IOException::class) - fun migrate1to2() { - var db = helper.createDatabase(TEST_DB_NAME, 1).apply { - MIGRATION_1_2_TEST_DATA.forEach { row -> - - execSQL( - """ - INSERT INTO keymaps (id, trigger_list, flags, is_enabled, action_type, action_data, action_extras) - VALUES (${row.joinToString { "'$it'" }}) - """, - ) - } - - close() - } - - db = helper.runMigrationsAndValidate(TEST_DB_NAME, 2, true, AppDatabase.MIGRATION_1_2) - testColumnsMatch(db, tableName = "keymaps", MIGRATION_1_2_EXPECTED_DATA) - } - - private fun test( - fromVersion: Int, - toVersion: Int, - migration: Migration, - testDataFileName: String, - expectedDataFileName: String, - keyMapColumnNameToJsonNameMap: Map, - fingerprintMapColumnNameToJsonNameMap: Map? = null, - ) { - helper.createDatabase(TEST_DB_NAME, fromVersion).apply { - val keyMapJsonArray = getKeyMapListJsonFromFile(testDataFileName) - insertMappingListJsonIntoDatabase( - this, - keyMapJsonArray, - keyMapColumnNameToJsonNameMap, - "keymaps", - ) - - if (fingerprintMapColumnNameToJsonNameMap != null) { - val fingerprintMapJsonArray = getFingerprintMapListJsonFromFile(testDataFileName) - insertMappingListJsonIntoDatabase( - this, - fingerprintMapJsonArray, - fingerprintMapColumnNameToJsonNameMap, - "fingerprintmaps", - ) - } - } - - val db = helper.runMigrationsAndValidate(TEST_DB_NAME, toVersion, true, migration) - - val expectedKeyMapJsonList = - getKeyMapListJsonFromFile(expectedDataFileName).map { element -> - - val values = keyMapColumnNameToJsonNameMap.values.map { key -> - element.convertValueToJson(key).convertJsonValueToSqlValue() - } - - values.toTypedArray() - } - - testColumnsMatch(db, tableName = "keymaps", expectedKeyMapJsonList.toTypedArray()) - - if (fingerprintMapColumnNameToJsonNameMap != null) { - val expectedFingerprintMapJsonList = - getFingerprintMapListJsonFromFile(expectedDataFileName).map { element -> - val values = fingerprintMapColumnNameToJsonNameMap.values.map { key -> - element.convertValueToJson(key).convertJsonValueToSqlValue() - } - - values.toTypedArray() - } - - testColumnsMatch( - db, - tableName = "fingerprintmaps", - expectedFingerprintMapJsonList.toTypedArray(), - ) - } - } - - private fun insertMappingListJsonIntoDatabase( - database: SupportSQLiteDatabase, - mappingListJson: JsonArray, - columnNameToJsonMap: Map, - tableName: String, - ) { - mappingListJson.forEach { element -> - val jsonElementNames = columnNameToJsonMap.values - - val values = jsonElementNames.map { key -> - element.convertValueToJson(key).convertJsonValueToSqlValue() - } - - database.execSQL( - """ - INSERT INTO $tableName (${columnNameToJsonMap.keys.joinToString()}) - VALUES (${values.joinToString { "'$it'" }}) - """, - ) - } - } - - private fun String?.convertJsonValueToSqlValue() = - when { - this == null -> "NULL" - this == "true" -> 1 - this == "false" -> 0 - this.toIntOrNull() != null -> this.toInt() - else -> this - } - - private fun JsonElement.convertValueToJson(key: String) = try { - gson.toJson(this[key]) - } catch (e: NoSuchElementException) { - null - } - - private fun getKeyMapListJsonFromFile(fileName: String): JsonArray { - val json = getJsonFileText(fileName) - - val rootElement = jsonParser.parse(json) - - return rootElement["keymap_list"].asJsonArray - } - - private fun getFingerprintMapListJsonFromFile(fileName: String): JsonArray { - val json = getJsonFileText(fileName) - - val rootElement = jsonParser.parse(json) - - return rootElement["fingerprint_map_list"].asJsonArray - } - - private fun getJsonFileText(fileName: String): String { - val inputStream = - this.javaClass.classLoader!!.getResourceAsStream("json-migration-test/$fileName") - return inputStream.bufferedReader().use { it.readText() } - } - - private fun testColumnsMatch( - db: SupportSQLiteDatabase, - tableName: String, - expectedData: Array>, - ) { - val cursor = db.query("SELECT * FROM $tableName") - - ViewMatchers.assertThat("Check the logcat", cursor.count, Matchers.`is`(expectedData.size)) - - while (cursor.moveToNext()) { - val row = cursor.position - val expectedColumnValues: Array = expectedData[row] - - cursor.columnNames.forEachIndexed { columnIndex, columnName -> - - val expectedColumnValue = expectedColumnValues[columnIndex] - - val columnValue: Any = when (expectedColumnValue) { - is Int -> cursor.getInt(columnIndex) - is String -> cursor.getString(columnIndex) - else -> throw Exception("Don't know how to get this type ${expectedColumnValue::class.simpleName} from cursor") - } - - when (expectedColumnValue) { - is Int -> ViewMatchers.assertThat( - "$columnName at row $row doesn't match", - columnValue, - Matchers.`is`(expectedColumnValue), - ) - is String -> { - try { - JsonTestUtils.compareBothWays( - element = jsonParser.parse(expectedColumnValue), - elementName = "expected $columnName at row $row", - other = jsonParser.parse(columnValue as String), - otherName = "migrated $columnName at row $row", - ) - } catch (e: JsonParseException) { - ViewMatchers.assertThat( - "$columnName at row $row doesn't match", - columnValue, - Matchers.`is`(expectedColumnValue), - ) - } - } - } - } - } - } -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt index 96c20f5f0f..227ccd5e7c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt @@ -9,16 +9,18 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.ui.DialogResponse -import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem +import io.github.sds100.keymapper.base.utils.getExampleStringRes +import io.github.sds100.keymapper.base.utils.getLabelStringRes import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.navigate +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup import io.github.sds100.keymapper.common.utils.hasFlag import io.github.sds100.keymapper.common.utils.withFlag @@ -46,8 +48,6 @@ import io.github.sds100.keymapper.system.intents.ShortArrayExtraType import io.github.sds100.keymapper.system.intents.ShortExtraType import io.github.sds100.keymapper.system.intents.StringArrayExtraType import io.github.sds100.keymapper.system.intents.StringExtraType -import io.github.sds100.keymapper.utils.getExampleStringRes -import io.github.sds100.keymapper.utils.getLabelStringRes import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/utils/IntentStrings.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/IntentStrings.kt similarity index 65% rename from base/src/main/java/io/github/sds100/keymapper/utils/IntentStrings.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/IntentStrings.kt index 276e82e999..3113766699 100644 --- a/base/src/main/java/io/github/sds100/keymapper/utils/IntentStrings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/IntentStrings.kt @@ -1,7 +1,25 @@ -package io.github.sds100.keymapper.utils +package io.github.sds100.keymapper.base.utils import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.system.intents.* +import io.github.sds100.keymapper.system.intents.BoolArrayExtraType +import io.github.sds100.keymapper.system.intents.BoolExtraType +import io.github.sds100.keymapper.system.intents.ByteArrayExtraType +import io.github.sds100.keymapper.system.intents.ByteExtraType +import io.github.sds100.keymapper.system.intents.CharArrayExtraType +import io.github.sds100.keymapper.system.intents.CharExtraType +import io.github.sds100.keymapper.system.intents.DoubleArrayExtraType +import io.github.sds100.keymapper.system.intents.DoubleExtraType +import io.github.sds100.keymapper.system.intents.FloatArrayExtraType +import io.github.sds100.keymapper.system.intents.FloatExtraType +import io.github.sds100.keymapper.system.intents.IntArrayExtraType +import io.github.sds100.keymapper.system.intents.IntExtraType +import io.github.sds100.keymapper.system.intents.IntentExtraType +import io.github.sds100.keymapper.system.intents.LongArrayExtraType +import io.github.sds100.keymapper.system.intents.LongExtraType +import io.github.sds100.keymapper.system.intents.ShortArrayExtraType +import io.github.sds100.keymapper.system.intents.ShortExtraType +import io.github.sds100.keymapper.system.intents.StringArrayExtraType +import io.github.sds100.keymapper.system.intents.StringExtraType fun IntentExtraType.getLabelStringRes(): Int = when (this) { is BoolExtraType -> R.string.intent_type_bool_header diff --git a/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/BackupManagerTest.kt similarity index 97% rename from base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/BackupManagerTest.kt index 88b4605fe6..5f7e11f1bc 100644 --- a/base/src/test/java/io/github/sds100/keymapper/BackupManagerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/BackupManagerTest.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper +package io.github.sds100.keymapper.base import com.github.salomonbrys.kotson.get import com.google.gson.Gson @@ -8,8 +8,14 @@ import io.github.sds100.keymapper.base.actions.sound.SoundsManager import io.github.sds100.keymapper.base.backup.BackupContent import io.github.sds100.keymapper.base.backup.BackupManagerImpl import io.github.sds100.keymapper.base.backup.RestoreType +import io.github.sds100.keymapper.base.repositories.FakePreferenceRepository +import io.github.sds100.keymapper.base.system.files.FakeFileAdapter +import io.github.sds100.keymapper.base.system.files.JavaFile +import io.github.sds100.keymapper.base.utils.TestBuildConfigProvider import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.UuidGenerator import io.github.sds100.keymapper.data.db.AppDatabase import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.data.entities.EntityExtra @@ -18,16 +24,11 @@ import io.github.sds100.keymapper.data.entities.FloatingLayoutEntity import io.github.sds100.keymapper.data.entities.FloatingLayoutEntityWithButtons import io.github.sds100.keymapper.data.entities.GroupEntity import io.github.sds100.keymapper.data.entities.KeyMapEntity -import io.github.sds100.keymapper.data.repositories.FakePreferenceRepository import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository import io.github.sds100.keymapper.data.repositories.GroupRepository -import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.data.repositories.KeyMapRepository -import io.github.sds100.keymapper.system.files.FakeFileAdapter +import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.files.IFile -import io.github.sds100.keymapper.system.files.JavaFile -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.utils.UuidGenerator import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow @@ -112,7 +113,6 @@ class BackupManagerTest { fileAdapter = fakeFileAdapter, keyMapRepository = mockKeyMapRepository, preferenceRepository = fakePreferenceRepository, - throwExceptions = true, dispatchers = dispatcherProvider, soundsManager = mockSoundsManager, uuidGenerator = mockUuidGenerator, @@ -121,6 +121,7 @@ class BackupManagerTest { on { layouts } doReturn MutableStateFlow(State.Data(emptyList())) }, groupRepository = mockGroupRepository, + buildConfigProvider = TestBuildConfigProvider(), ) parser = JsonParser() @@ -167,7 +168,7 @@ class BackupManagerTest { ) val backupContent = BackupContent( - appVersion = Constants.VERSION_CODE, + appVersion = BuildConfig.VERSION_CODE, dbVersion = AppDatabase.DATABASE_VERSION, groups = listOf(childGroup, grandChildGroup, parentGroup1), ) @@ -222,7 +223,7 @@ class BackupManagerTest { ) val backupContent = BackupContent( - appVersion = Constants.VERSION_CODE, + appVersion = BuildConfig.VERSION_CODE, dbVersion = AppDatabase.DATABASE_VERSION, groups = listOf(parentGroup2, grandChildGroup, childGroup, parentGroup1), ) diff --git a/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/ConfigKeyMapUseCaseTest.kt similarity index 99% rename from base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/ConfigKeyMapUseCaseTest.kt index eaa5c8b74a..fb48253648 100644 --- a/base/src/test/java/io/github/sds100/keymapper/ConfigKeyMapUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/ConfigKeyMapUseCaseTest.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper +package io.github.sds100.keymapper.base import android.view.KeyEvent import io.github.sds100.keymapper.base.actions.Action @@ -6,19 +6,19 @@ import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.constraints.Constraint import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCaseController -import io.github.sds100.keymapper.base.keymaps.FingerprintGestureType import io.github.sds100.keymapper.base.keymaps.KeyMap -import io.github.sds100.keymapper.system.inputevents.InputEventUtils +import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType import io.github.sds100.keymapper.base.trigger.AssistantTriggerKey import io.github.sds100.keymapper.base.trigger.AssistantTriggerType import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.base.trigger.Trigger import io.github.sds100.keymapper.base.trigger.TriggerKeyDevice import io.github.sds100.keymapper.base.trigger.TriggerMode -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.base.utils.singleKeyTrigger import io.github.sds100.keymapper.base.utils.triggerKey +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.system.inputevents.InputEventUtils import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher diff --git a/base/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/KeyMapJsonMigrationTest.kt similarity index 99% rename from base/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/KeyMapJsonMigrationTest.kt index d1db1c8e64..b995839e32 100644 --- a/base/src/test/java/io/github/sds100/keymapper/KeyMapJsonMigrationTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/KeyMapJsonMigrationTest.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper +package io.github.sds100.keymapper.base import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.github.salomonbrys.kotson.get @@ -6,12 +6,12 @@ import com.github.salomonbrys.kotson.toJsonArray import com.google.gson.Gson import com.google.gson.JsonArray import com.google.gson.JsonParser +import io.github.sds100.keymapper.base.utils.JsonTestUtils import io.github.sds100.keymapper.data.migration.JsonMigration import io.github.sds100.keymapper.data.migration.Migration10To11 import io.github.sds100.keymapper.data.migration.Migration11To12 import io.github.sds100.keymapper.data.migration.Migration9To10 import io.github.sds100.keymapper.data.migration.MigrationUtils -import io.github.sds100.keymapper.base.utils.JsonTestUtils import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher diff --git a/base/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/LegacyFingerprintMapMigrationTest.kt similarity index 99% rename from base/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/LegacyFingerprintMapMigrationTest.kt index ae24a6d7d4..c0b043b365 100644 --- a/base/src/test/java/io/github/sds100/keymapper/LegacyFingerprintMapMigrationTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/LegacyFingerprintMapMigrationTest.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper +package io.github.sds100.keymapper.base import androidx.arch.core.executor.testing.InstantTaskExecutorRule import androidx.datastore.preferences.core.stringPreferencesKey @@ -8,11 +8,11 @@ import com.google.gson.Gson import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.JsonParser +import io.github.sds100.keymapper.base.utils.JsonTestUtils import io.github.sds100.keymapper.data.migration.JsonMigration import io.github.sds100.keymapper.data.migration.MigrationUtils import io.github.sds100.keymapper.data.migration.fingerprintmaps.FingerprintMapMigration0To1 import io.github.sds100.keymapper.data.migration.fingerprintmaps.FingerprintMapMigration1To2 -import io.github.sds100.keymapper.base.utils.JsonTestUtils import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher diff --git a/base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt b/base/src/test/java/io/github/sds100/keymapper/base/TestDispatcherProvider.kt similarity index 90% rename from base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt rename to base/src/test/java/io/github/sds100/keymapper/base/TestDispatcherProvider.kt index 61d4b43f13..b18d1c9676 100644 --- a/base/src/test/java/io/github/sds100/keymapper/TestDispatcherProvider.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/TestDispatcherProvider.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper +package io.github.sds100.keymapper.base import io.github.sds100.keymapper.common.utils.DispatcherProvider import kotlinx.coroutines.test.TestDispatcher diff --git a/base/src/test/java/io/github/sds100/keymapper/TestLoggingTree.kt b/base/src/test/java/io/github/sds100/keymapper/base/TestLoggingTree.kt similarity index 84% rename from base/src/test/java/io/github/sds100/keymapper/TestLoggingTree.kt rename to base/src/test/java/io/github/sds100/keymapper/base/TestLoggingTree.kt index 29142b095c..629b6a71e5 100644 --- a/base/src/test/java/io/github/sds100/keymapper/TestLoggingTree.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/TestLoggingTree.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper +package io.github.sds100.keymapper.base import timber.log.Timber diff --git a/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/actions/GetActionFailedUseCaseTest.kt similarity index 94% rename from base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/actions/GetActionFailedUseCaseTest.kt index 0394541116..1ec995c4d7 100644 --- a/base/src/test/java/io/github/sds100/keymapper/actions/GetActionFailedUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/actions/GetActionFailedUseCaseTest.kt @@ -1,11 +1,12 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import android.view.KeyEvent +import io.github.sds100.keymapper.base.utils.TestBuildConfigProvider import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.first @@ -42,7 +43,7 @@ class GetActionFailedUseCaseTest { mockPermissionAdapter = mock() useCase = GetActionErrorUseCaseImpl( - packageManager = mock(), + packageManagerAdapter = mock(), inputMethodAdapter = mockInputMethodAdapter, permissionAdapter = mockPermissionAdapter, systemFeatureAdapter = mock(), @@ -50,6 +51,7 @@ class GetActionFailedUseCaseTest { soundsManager = mock(), shizukuAdapter = mockShizukuAdapter, ringtoneAdapter = mock(), + buildConfigProvider = TestBuildConfigProvider(), ) } diff --git a/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCaseTest.kt similarity index 94% rename from base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCaseTest.kt index 836a6b6b3e..f26e7f8889 100644 --- a/base/src/test/java/io/github/sds100/keymapper/actions/PerformActionsUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCaseTest.kt @@ -1,16 +1,16 @@ -package io.github.sds100.keymapper.actions +package io.github.sds100.keymapper.base.actions import android.view.InputDevice import android.view.KeyEvent -import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService -import io.github.sds100.keymapper.system.devices.FakeDevicesAdapter -import io.github.sds100.keymapper.system.devices.InputDeviceInfo +import io.github.sds100.keymapper.base.system.devices.FakeDevicesAdapter import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector -import io.github.sds100.keymapper.system.inputmethod.InputKeyModel -import io.github.sds100.keymapper.system.popup.ToastAdapter +import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.system.devices.InputDeviceInfo +import io.github.sds100.keymapper.system.inputmethod.InputKeyModel +import io.github.sds100.keymapper.system.popup.ToastAdapter import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.test.TestScope @@ -29,8 +29,6 @@ import org.mockito.kotlin.times import org.mockito.kotlin.verify import org.mockito.kotlin.whenever - - @ExperimentalCoroutinesApi @RunWith(MockitoJUnitRunner::class) class PerformActionsUseCaseTest { @@ -53,22 +51,22 @@ class PerformActionsUseCaseTest { useCase = PerformActionsUseCaseImpl( testScope, - accessibilityService = mockAccessibilityService, + service = mockAccessibilityService, inputMethodAdapter = mock(), fileAdapter = mock(), suAdapter = mock { on { isGranted }.then { MutableStateFlow(false) } }, - shellAdapter = mock(), + shell = mock(), intentAdapter = mock(), - getActionError = mock(), - imeInputEventInjector = mockImeInputEventInjector, + getActionErrorUseCase = mock(), + keyMapperImeMessenger = mockImeInputEventInjector, packageManagerAdapter = mock(), appShortcutAdapter = mock(), - popupMessageAdapter = mockToastAdapter, - deviceAdapter = fakeDevicesAdapter, + toastAdapter = mockToastAdapter, + devicesAdapter = fakeDevicesAdapter, phoneAdapter = mock(), - volumeAdapter = mock(), + audioAdapter = mock(), cameraAdapter = mock(), displayAdapter = mock(), lockScreenAdapter = mock(), @@ -79,9 +77,8 @@ class PerformActionsUseCaseTest { nfcAdapter = mock(), openUrlAdapter = mock(), resourceProvider = mock(), - preferenceRepository = mock(), + settingsRepository = mock(), soundsManager = mock(), - shizukuInputEventInjector = mock(), permissionAdapter = mock(), notificationReceiverAdapter = mock(), ringtoneAdapter = mock(), @@ -107,7 +104,7 @@ class PerformActionsUseCaseTest { useCase.perform(action) // THEN - verify(mockToastAdapter, never()).showPopupMessage(anyOrNull()) + verify(mockToastAdapter, never()).show(anyOrNull()) } /** diff --git a/base/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt similarity index 100% rename from base/src/test/java/io/github/sds100/keymapper/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/actions/keyevents/ConfigKeyServiceEventActionViewModelTest.kt diff --git a/base/src/test/java/io/github/sds100/keymapper/constraints/ConstraintSnapshotTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshotTest.kt similarity index 99% rename from base/src/test/java/io/github/sds100/keymapper/constraints/ConstraintSnapshotTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshotTest.kt index 8cdc001af6..9769a7386e 100644 --- a/base/src/test/java/io/github/sds100/keymapper/constraints/ConstraintSnapshotTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshotTest.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.constraints +package io.github.sds100.keymapper.base.constraints import io.github.sds100.keymapper.base.utils.TestConstraintSnapshot import org.hamcrest.MatcherAssert.assertThat diff --git a/base/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/DpadMotionEventTrackerTest.kt similarity index 99% rename from base/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/keymaps/DpadMotionEventTrackerTest.kt index 70384e4a0e..23ce84f14b 100644 --- a/base/src/test/java/io/github/sds100/keymapper/keymaps/DpadMotionEventTrackerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/DpadMotionEventTrackerTest.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.view.InputDevice import android.view.KeyEvent diff --git a/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/KeyMapControllerTest.kt similarity index 99% rename from base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/keymaps/KeyMapControllerTest.kt index 676b7c60c5..928be53228 100644 --- a/base/src/test/java/io/github/sds100/keymapper/keymaps/KeyMapControllerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/KeyMapControllerTest.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import android.view.KeyEvent import androidx.arch.core.executor.testing.InstantTaskExecutorRule @@ -7,7 +7,6 @@ import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.ActionErrorSnapshot import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.actions.RepeatMode -import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.base.constraints.Constraint import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.constraints.ConstraintSnapshot @@ -16,10 +15,7 @@ import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapModel import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.KeyMapController -import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.system.devices.InputDeviceInfo -import io.github.sds100.keymapper.system.inputevents.MyKeyEvent -import io.github.sds100.keymapper.system.inputevents.MyMotionEvent +import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType import io.github.sds100.keymapper.base.trigger.FingerprintTriggerKey import io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource @@ -27,12 +23,18 @@ import io.github.sds100.keymapper.base.trigger.Trigger import io.github.sds100.keymapper.base.trigger.TriggerKey import io.github.sds100.keymapper.base.trigger.TriggerKeyDevice import io.github.sds100.keymapper.base.trigger.TriggerMode -import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.base.utils.TestConstraintSnapshot import io.github.sds100.keymapper.base.utils.parallelTrigger import io.github.sds100.keymapper.base.utils.sequenceTrigger import io.github.sds100.keymapper.base.utils.singleKeyTrigger import io.github.sds100.keymapper.base.utils.triggerKey +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.InputEventType +import io.github.sds100.keymapper.common.utils.withFlag +import io.github.sds100.keymapper.system.camera.CameraLens +import io.github.sds100.keymapper.system.devices.InputDeviceInfo +import io.github.sds100.keymapper.system.inputevents.MyKeyEvent +import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import junitparams.JUnitParamsRunner import junitparams.Parameters import junitparams.naming.TestCaseName @@ -63,7 +65,6 @@ import org.mockito.kotlin.never import org.mockito.kotlin.times import org.mockito.kotlin.verify import org.mockito.kotlin.whenever -import io.github.sds100.keymapper.common.utils.withFlag @ExperimentalCoroutinesApi @RunWith(JUnitParamsRunner::class) diff --git a/base/src/test/java/io/github/sds100/keymapper/keymaps/ProcessKeyMapGroupsForDetectionTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/ProcessKeyMapGroupsForDetectionTest.kt similarity index 99% rename from base/src/test/java/io/github/sds100/keymapper/keymaps/ProcessKeyMapGroupsForDetectionTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/keymaps/ProcessKeyMapGroupsForDetectionTest.kt index 7a42890faa..abcd815259 100644 --- a/base/src/test/java/io/github/sds100/keymapper/keymaps/ProcessKeyMapGroupsForDetectionTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/ProcessKeyMapGroupsForDetectionTest.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.base.constraints.Constraint import io.github.sds100.keymapper.base.constraints.ConstraintMode diff --git a/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt similarity index 98% rename from base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt index d3ea021b91..c418d55b80 100644 --- a/base/src/test/java/io/github/sds100/keymapper/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt @@ -1,16 +1,16 @@ -package io.github.sds100.keymapper.keymaps +package io.github.sds100.keymapper.base.keymaps import io.github.sds100.keymapper.base.actions.Action import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.ActionErrorSnapshot import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.actions.RepeatMode -import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.TriggerKeyMapFromOtherAppsController import io.github.sds100.keymapper.base.trigger.Trigger import io.github.sds100.keymapper.base.utils.TestConstraintSnapshot +import io.github.sds100.keymapper.common.utils.Error import junitparams.JUnitParamsRunner import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.delay diff --git a/base/src/test/java/io/github/sds100/keymapper/data/repositories/FakePreferenceRepository.kt b/base/src/test/java/io/github/sds100/keymapper/base/repositories/FakePreferenceRepository.kt similarity index 87% rename from base/src/test/java/io/github/sds100/keymapper/data/repositories/FakePreferenceRepository.kt rename to base/src/test/java/io/github/sds100/keymapper/base/repositories/FakePreferenceRepository.kt index 5562887634..03cf0533a2 100644 --- a/base/src/test/java/io/github/sds100/keymapper/data/repositories/FakePreferenceRepository.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/repositories/FakePreferenceRepository.kt @@ -1,6 +1,7 @@ -package io.github.sds100.keymapper.data.repositories +package io.github.sds100.keymapper.base.repositories import androidx.datastore.preferences.core.Preferences +import io.github.sds100.keymapper.data.repositories.PreferenceRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.map diff --git a/base/src/test/java/io/github/sds100/keymapper/data/repositories/KeyMapRepositoryTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/repositories/KeyMapRepositoryTest.kt similarity index 92% rename from base/src/test/java/io/github/sds100/keymapper/data/repositories/KeyMapRepositoryTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/repositories/KeyMapRepositoryTest.kt index e18e2ef308..fb53bae60e 100644 --- a/base/src/test/java/io/github/sds100/keymapper/data/repositories/KeyMapRepositoryTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/repositories/KeyMapRepositoryTest.kt @@ -1,10 +1,11 @@ -package io.github.sds100.keymapper.data.repositories +package io.github.sds100.keymapper.base.repositories -import io.github.sds100.keymapper.TestDispatcherProvider +import io.github.sds100.keymapper.base.TestDispatcherProvider +import io.github.sds100.keymapper.base.system.devices.FakeDevicesAdapter import io.github.sds100.keymapper.data.db.dao.KeyMapDao import io.github.sds100.keymapper.data.entities.FingerprintMapEntity import io.github.sds100.keymapper.data.entities.KeyMapEntity -import io.github.sds100.keymapper.system.devices.FakeDevicesAdapter +import io.github.sds100.keymapper.data.repositories.RoomKeyMapRepository import io.github.sds100.keymapper.system.devices.InputDeviceInfo import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt b/base/src/test/java/io/github/sds100/keymapper/base/system/devices/FakeDevicesAdapter.kt similarity index 86% rename from base/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt rename to base/src/test/java/io/github/sds100/keymapper/base/system/devices/FakeDevicesAdapter.kt index 3c28f0de5a..142878867d 100644 --- a/base/src/test/java/io/github/sds100/keymapper/system/devices/FakeDevicesAdapter.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/system/devices/FakeDevicesAdapter.kt @@ -1,8 +1,10 @@ -package io.github.sds100.keymapper.system.devices +package io.github.sds100.keymapper.base.system.devices import io.github.sds100.keymapper.common.utils.Result -import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo +import io.github.sds100.keymapper.system.devices.DevicesAdapter +import io.github.sds100.keymapper.system.devices.InputDeviceInfo import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/base/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt b/base/src/test/java/io/github/sds100/keymapper/base/system/files/FakeFileAdapter.kt similarity index 90% rename from base/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt rename to base/src/test/java/io/github/sds100/keymapper/base/system/files/FakeFileAdapter.kt index 7da65bf04c..6daa728fc6 100644 --- a/base/src/test/java/io/github/sds100/keymapper/system/files/FakeFileAdapter.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/system/files/FakeFileAdapter.kt @@ -1,7 +1,9 @@ -package io.github.sds100.keymapper.system.files +package io.github.sds100.keymapper.base.system.files import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.system.files.FileAdapter +import io.github.sds100.keymapper.system.files.IFile import kotlinx.coroutines.runBlocking import org.junit.rules.TemporaryFolder import java.io.File diff --git a/base/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt b/base/src/test/java/io/github/sds100/keymapper/base/system/files/JavaFile.kt similarity index 94% rename from base/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt rename to base/src/test/java/io/github/sds100/keymapper/base/system/files/JavaFile.kt index 620952cf53..7c7ada3cb5 100644 --- a/base/src/test/java/io/github/sds100/keymapper/system/files/JavaFile.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/system/files/JavaFile.kt @@ -1,8 +1,9 @@ -package io.github.sds100.keymapper.system.files +package io.github.sds100.keymapper.base.system.files import com.anggrayudi.storage.file.recreateFile import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.system.files.IFile import timber.log.Timber import java.io.File import java.io.InputStream diff --git a/base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt similarity index 94% rename from base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt rename to base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt index 8668947995..6493b3cd85 100644 --- a/base/src/test/java/io/github/sds100/keymapper/system/intents/ConfigIntentViewModelTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt @@ -1,14 +1,13 @@ -package io.github.sds100.keymapper.system.intents +package io.github.sds100.keymapper.base.system.intents import android.content.Intent import androidx.arch.core.executor.testing.InstantTaskExecutorRule -import io.github.sds100.keymapper.base.system.intents.ConfigIntentViewModel -import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.base.utils.ui.FakeResourceProvider import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.ShowPopupEvent import io.github.sds100.keymapper.base.utils.ui.onUserResponse +import io.github.sds100.keymapper.common.utils.firstBlocking import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.UnconfinedTestDispatcher diff --git a/base/src/test/java/io/github/sds100/keymapper/util/FlowUtils.kt b/base/src/test/java/io/github/sds100/keymapper/base/utils/FlowUtils.kt similarity index 90% rename from base/src/test/java/io/github/sds100/keymapper/util/FlowUtils.kt rename to base/src/test/java/io/github/sds100/keymapper/base/utils/FlowUtils.kt index 64c8fb04f7..a34dd5b549 100644 --- a/base/src/test/java/io/github/sds100/keymapper/util/FlowUtils.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/utils/FlowUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.utils import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.toList diff --git a/base/src/androidTest/java/io/github/sds100/keymapper/JsonTestUtils.kt b/base/src/test/java/io/github/sds100/keymapper/base/utils/JsonTestUtils.kt similarity index 98% rename from base/src/androidTest/java/io/github/sds100/keymapper/JsonTestUtils.kt rename to base/src/test/java/io/github/sds100/keymapper/base/utils/JsonTestUtils.kt index da16085363..d3754fcc80 100644 --- a/base/src/androidTest/java/io/github/sds100/keymapper/JsonTestUtils.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/utils/JsonTestUtils.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper +package io.github.sds100.keymapper.base.utils import com.github.salomonbrys.kotson.contains import com.github.salomonbrys.kotson.forEach diff --git a/base/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt b/base/src/test/java/io/github/sds100/keymapper/base/utils/KeyMapUtils.kt similarity index 85% rename from base/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt rename to base/src/test/java/io/github/sds100/keymapper/base/utils/KeyMapUtils.kt index 3ee82fc1fe..cacadd68b9 100644 --- a/base/src/test/java/io/github/sds100/keymapper/util/KeyMapUtils.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/utils/KeyMapUtils.kt @@ -1,6 +1,7 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.utils import io.github.sds100.keymapper.base.keymaps.ClickType +import io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.base.trigger.Trigger import io.github.sds100.keymapper.base.trigger.TriggerKey @@ -28,7 +29,7 @@ fun triggerKey( clickType: ClickType = ClickType.SHORT_PRESS, consume: Boolean = true, detectionSource: KeyEventDetectionSource = KeyEventDetectionSource.ACCESSIBILITY_SERVICE, -): _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey = _root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey( +): KeyCodeTriggerKey = KeyCodeTriggerKey( keyCode = keyCode, device = device, clickType = clickType, diff --git a/base/src/test/java/io/github/sds100/keymapper/base/utils/TestBuildConfigProvider.kt b/base/src/test/java/io/github/sds100/keymapper/base/utils/TestBuildConfigProvider.kt new file mode 100644 index 0000000000..0bce5ac12c --- /dev/null +++ b/base/src/test/java/io/github/sds100/keymapper/base/utils/TestBuildConfigProvider.kt @@ -0,0 +1,13 @@ +package io.github.sds100.keymapper.base.utils + +import android.os.Build +import io.github.sds100.keymapper.base.BuildConfig +import io.github.sds100.keymapper.common.BuildConfigProvider + +class TestBuildConfigProvider : BuildConfigProvider { + override val minApi: Int = Build.VERSION_CODES.LOLLIPOP + override val maxApi: Int = 1000 + override val packageName: String = BuildConfig.LIBRARY_PACKAGE_NAME + override val version: String = "1.0.0" + override val versionCode: Int = 1 +} diff --git a/base/src/test/java/io/github/sds100/keymapper/util/TestConstraintSnapshot.kt b/base/src/test/java/io/github/sds100/keymapper/base/utils/TestConstraintSnapshot.kt similarity index 99% rename from base/src/test/java/io/github/sds100/keymapper/util/TestConstraintSnapshot.kt rename to base/src/test/java/io/github/sds100/keymapper/base/utils/TestConstraintSnapshot.kt index 41638e6d35..a01eaf2edb 100644 --- a/base/src/test/java/io/github/sds100/keymapper/util/TestConstraintSnapshot.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/utils/TestConstraintSnapshot.kt @@ -1,10 +1,10 @@ -package io.github.sds100.keymapper.util +package io.github.sds100.keymapper.base.utils import io.github.sds100.keymapper.base.constraints.Constraint import io.github.sds100.keymapper.base.constraints.ConstraintSnapshot +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.system.phone.CallState import timber.log.Timber import java.time.LocalTime diff --git a/base/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt b/base/src/test/java/io/github/sds100/keymapper/base/utils/ui/FakeResourceProvider.kt similarity index 100% rename from base/src/test/java/io/github/sds100/keymapper/util/ui/FakeResourceProvider.kt rename to base/src/test/java/io/github/sds100/keymapper/base/utils/ui/FakeResourceProvider.kt diff --git a/base/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt b/base/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt deleted file mode 100644 index 592a1bc430..0000000000 --- a/base/src/test/java/io/github/sds100/keymapper/util/JsonTestUtils.kt +++ /dev/null @@ -1,85 +0,0 @@ -package io.github.sds100.keymapper.util - -import com.github.salomonbrys.kotson.contains -import com.github.salomonbrys.kotson.forEach -import com.github.salomonbrys.kotson.get -import com.google.gson.JsonArray -import com.google.gson.JsonElement -import com.google.gson.JsonObject -import com.google.gson.JsonPrimitive -import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.core.Is.`is` -import org.junit.Assert - -object JsonTestUtils { - private const val NAME_SEPARATOR = '/' - - fun compareBothWays(element: JsonElement, elementName: String, other: JsonElement, otherName: String) { - compare("", element, elementName, other, otherName) - compare("", other, elementName, element, elementName) - } - - private fun compare(parentNamePath: String = "", element: JsonElement, elementName: String, rootToCompare: JsonElement, rootName: String) { - when (element) { - is JsonObject -> { - element.forEach { name, jsonElement -> - val newPath = if (parentNamePath.isBlank()) { - name - } else { - "$parentNamePath$NAME_SEPARATOR$name" - } - - compare(newPath, jsonElement, elementName, rootToCompare, rootName) - } - } - - is JsonArray -> { - val pathToArrayToCompare = parentNamePath.split(NAME_SEPARATOR) - var arrayToCompare: JsonArray? = null - - var parentElement: JsonElement = rootToCompare - pathToArrayToCompare.forEach { - if (it == "") return@forEach - - parentElement = parentElement[it] - } - - if (parentElement is JsonArray) { - arrayToCompare = parentElement as JsonArray - } - - Assert.assertNotNull("can't find array $elementName/$parentNamePath in $rootName", arrayToCompare) - arrayToCompare ?: return - - element.forEachIndexed { index, arrayElement -> - val validIndex = index <= arrayToCompare.toList().lastIndex - - assertThat("$rootName/${pathToArrayToCompare.last()} doesn't contain $arrayElement at $index index", validIndex) - - compare("", arrayElement, "$elementName/${pathToArrayToCompare.last()}", arrayToCompare[index]!!, "$rootName/${pathToArrayToCompare.last()}") - } - } - - is JsonPrimitive -> { - val names = parentNamePath.split(NAME_SEPARATOR) - var parentElement: JsonElement = rootToCompare - - if (names == listOf("")) { - assertThat("$elementName/:$element doesn't match $rootName/:$parentElement", (parentElement), `is`(element)) - } else { - names.forEachIndexed { index, name -> - if (parentElement is JsonObject) { - assertThat("$elementName/$parentNamePath not found in $rootName", (parentElement as JsonObject).contains(name)) - } - - parentElement = parentElement[name] - - if (index == names.lastIndex) { - assertThat("$elementName/$parentNamePath:$element doesn't match $rootName/$parentNamePath:$parentElement", (parentElement as JsonPrimitive), `is`(element)) - } - } - } - } - } - } -} diff --git a/app/version.properties b/base/version.properties similarity index 100% rename from app/version.properties rename to base/version.properties From c84fa29026ed7eedeeb388b157bae494ce7d3370 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 21 May 2025 20:00:02 +0200 Subject: [PATCH 32/71] #1711 programatically add homefragment to nav app graph --- .../io/github/sds100/keymapper/MainActivity.kt | 18 +++++++++++++++++- app/src/main/res/layout/activity_main.xml | 3 +-- app/src/main/res/navigation/nav_app.xml | 8 +------- base/src/main/res/values/navigation.xml | 4 ++++ 4 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 base/src/main/res/values/navigation.xml diff --git a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt index 95643e8e67..48052b1c6a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt @@ -2,11 +2,13 @@ package io.github.sds100.keymapper import android.os.Bundle import androidx.databinding.DataBindingUtil +import androidx.navigation.fragment.FragmentNavigator +import androidx.navigation.fragment.NavHostFragment import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.R import io.github.sds100.keymapper.base.BaseMainActivity import io.github.sds100.keymapper.base.utils.ui.showPopups import io.github.sds100.keymapper.databinding.ActivityMainBinding +import io.github.sds100.keymapper.home.HomeFragment @AndroidEntryPoint class MainActivity : BaseMainActivity() { @@ -17,6 +19,20 @@ class MainActivity : BaseMainActivity() { val binding = DataBindingUtil.setContentView(this, R.layout.activity_main) + val navController = binding.container.getFragment().navController + val fragmentNavigator = + navController.navigatorProvider.getNavigator(FragmentNavigator::class.java) + + val homeDest = fragmentNavigator.createDestination().apply { + id = R.id.home_fragment + setClassName(HomeFragment::class.java.name) + } + + navController.graph = navController.navInflater.inflate(R.navigation.nav_base_app).apply { + addDestination(homeDest) + setStartDestination(R.id.home_fragment) + } + viewModel.showPopups(this, binding.coordinatorLayout) } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index bab9f10586..1c30b5bf2b 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -13,7 +13,6 @@ android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" android:layout_height="match_parent" - app:defaultNavHost="true" - app:navGraph="@navigation/nav_app" /> + app:defaultNavHost="true" /> \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_app.xml b/app/src/main/res/navigation/nav_app.xml index 0ebeb78f05..4ebe224e43 100644 --- a/app/src/main/res/navigation/nav_app.xml +++ b/app/src/main/res/navigation/nav_app.xml @@ -16,16 +16,10 @@ + app:startDestination="@id/config_key_map_fragment"> - - + + + \ No newline at end of file From f370511dd9f62d59864b13a26d505a1f1f46edfd Mon Sep 17 00:00:00 2001 From: sds100 Date: Thu, 22 May 2025 13:36:32 +0200 Subject: [PATCH 33/71] #1711 navigating to compose screens from view models works --- app/build.gradle.kts | 2 +- .../github/sds100/keymapper/AppHiltModule.kt | 6 + .../github/sds100/keymapper/MainActivity.kt | 3 +- .../{home/HomeFragment.kt => MainFragment.kt} | 64 ++++++++-- .../io/github/sds100/keymapper/MainNavHost.kt | 82 +++++++++++++ .../sds100/keymapper/home/HomeScreen.kt | 28 ----- .../sds100/keymapper/home/HomeViewModel.kt | 5 +- .../keymapper/keymaps/ConfigKeyMapFragment.kt | 111 ------------------ .../keymapper/keymaps/ConfigKeyMapScreen.kt | 10 +- .../keymaps/ConfigKeyMapViewModel.kt | 14 +++ .../utils/navigation/NavDirectionProvider.kt | 15 +-- app/src/main/res/navigation/nav_app.xml | 79 ------------- .../base/actions/ChooseActionFragment.kt | 3 +- .../keymapper/base/home/BaseHomeViewModel.kt | 5 +- .../base/home/HomeKeyMapListScreen.kt | 3 +- .../base/keymaps/ConfigKeyMapViewModel.kt | 35 +++--- .../base/keymaps/KeyMapListViewModel.kt | 28 ++--- .../base/utils/navigation/NavDestination.kt | 25 ++-- .../base/utils/navigation/NavigationUtils.kt | 15 ++- .../utils/navigation/NavigationViewModel.kt | 89 ++++++++++---- gradle/libs.versions.toml | 2 + 21 files changed, 296 insertions(+), 328 deletions(-) rename app/src/main/java/io/github/sds100/keymapper/{home/HomeFragment.kt => MainFragment.kt} (52%) create mode 100644 app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt delete mode 100644 app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt delete mode 100644 app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt delete mode 100644 app/src/main/res/navigation/nav_app.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4c71aa09f8..0bd2c300b0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -217,6 +217,7 @@ dependencies { implementation(libs.androidx.lifecycle.extensions) // Note: Deprecated implementation(libs.androidx.viewpager2) implementation(libs.androidx.core.splashscreen) + implementation(libs.androidx.hilt.navigation.compose) ksp(libs.androidx.room.compiler) // Compose @@ -230,5 +231,4 @@ dependencies { implementation(libs.androidx.compose.material3.adaptive.navigation) implementation(libs.google.accompanist.drawablepainter) implementation(libs.androidx.compose.ui.tooling) - } diff --git a/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt index a96e7b288e..0254016749 100644 --- a/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt +++ b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt @@ -7,6 +7,8 @@ import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.base.utils.navigation.BaseNavDirectionProvider +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.KeyMapperClassProvider import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider @@ -62,4 +64,8 @@ class AppHiltModule { @Provides @Singleton fun providePurchasingManager(): PurchasingManager = PurchasingManagerImpl() + + @Provides + @Singleton + fun provideNavigationProvider(): NavigationViewModel = NavigationViewModelImpl() } diff --git a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt index 48052b1c6a..91c617df60 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt @@ -8,7 +8,6 @@ import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.BaseMainActivity import io.github.sds100.keymapper.base.utils.ui.showPopups import io.github.sds100.keymapper.databinding.ActivityMainBinding -import io.github.sds100.keymapper.home.HomeFragment @AndroidEntryPoint class MainActivity : BaseMainActivity() { @@ -25,7 +24,7 @@ class MainActivity : BaseMainActivity() { val homeDest = fragmentNavigator.createDestination().apply { id = R.id.home_fragment - setClassName(HomeFragment::class.java.name) + setClassName(MainFragment::class.java.name) } navController.graph = navController.navInflater.inflate(R.navigation.nav_base_app).apply { diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt similarity index 52% rename from app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt rename to app/src/main/java/io/github/sds100/keymapper/MainFragment.kt index 818923eedd..db641cdca5 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt @@ -1,4 +1,4 @@ -package io.github.sds100.keymapper.home +package io.github.sds100.keymapper import android.os.Bundle import android.view.LayoutInflater @@ -11,28 +11,32 @@ import androidx.compose.foundation.layout.displayCutout import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.fragment.app.Fragment -import androidx.fragment.app.activityViewModels -import androidx.navigation.findNavController +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import androidx.navigation.compose.rememberNavController import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.base.NavBaseAppDirections import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding +import io.github.sds100.keymapper.base.utils.navigation.NavResult +import io.github.sds100.keymapper.base.utils.navigation.NavigateEvent +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.base.utils.navigation.setupNavigation -import io.github.sds100.keymapper.base.utils.ui.showPopups +import javax.inject.Inject @AndroidEntryPoint -class HomeFragment : Fragment() { +class MainFragment : Fragment() { - private val homeViewModel: HomeViewModel by activityViewModels() + @Inject + lateinit var navigationProvider: NavigationViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - homeViewModel.setupNavigation(this) - homeViewModel.keyMapListViewModel.setupNavigation(this) + navigationProvider.setupNavigation(this) } override fun onCreateView( @@ -46,14 +50,47 @@ class HomeFragment : Fragment() { // is destroyed setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setContent { + val navController = rememberNavController() + val navEvent: NavigateEvent? by navigationProvider.navigate.collectAsStateWithLifecycle( + null, + ) + val navResult: NavResult? by navigationProvider.onNavResult.collectAsStateWithLifecycle( + null, + ) + + LaunchedEffect(navEvent) { + val navEvent = navEvent + if (navEvent == null) { + return@LaunchedEffect + } + + if (!navEvent.destination.isCompose) { + return@LaunchedEffect + } + + navController.navigate(navEvent.destination) + navigationProvider.handledEvent() + } + + LaunchedEffect(navResult) { + val navResult = navResult + + if (navResult == null) { + return@LaunchedEffect + } + + navController.navigateUp() + navigationProvider.handledResult() + } + KeyMapperTheme { - HomeScreen( + MainNavHost( modifier = Modifier .windowInsetsPadding( WindowInsets.systemBars.only(sides = WindowInsetsSides.Horizontal) .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), ), - viewModel = homeViewModel, + navController = navController, finishActivity = requireActivity()::finish, ) } @@ -66,8 +103,9 @@ class HomeFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - homeViewModel.showPopups(this, view) - homeViewModel.keyMapListViewModel.showPopups(this, view) + // TODO +// homeViewModel.showPopups(this, view) +// homeViewModel.keyMapListViewModel.showPopups(this, view) // TODO // homeViewModel.listFloatingLayoutsViewModel.showPopups(this, view) } diff --git a/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt b/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt new file mode 100644 index 0000000000..0c6c90bb09 --- /dev/null +++ b/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt @@ -0,0 +1,82 @@ +package io.github.sds100.keymapper + +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.SnackbarHostState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.navigation.NavHostController +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import io.github.sds100.keymapper.base.home.HomeKeyMapListScreen +import io.github.sds100.keymapper.base.utils.navigation.NavDestination +import io.github.sds100.keymapper.base.utils.navigation.handleRoute +import io.github.sds100.keymapper.home.HomeViewModel +import io.github.sds100.keymapper.keymaps.ConfigKeyMapScreen +import io.github.sds100.keymapper.keymaps.ConfigKeyMapViewModel + +@Composable +fun MainNavHost( + modifier: Modifier = Modifier, + navController: NavHostController, + finishActivity: () -> Unit, +) { + val snackbarState = remember { SnackbarHostState() } + + NavHost( + modifier = modifier, + navController = navController, + startDestination = NavDestination.Home, + ) { + composable { + val viewModel: HomeViewModel = hiltViewModel() + + HomeKeyMapListScreen( + modifier = Modifier.fillMaxSize(), + viewModel = viewModel.keyMapListViewModel, + snackbarState = snackbarState, + onSettingsClick = viewModel::launchSettings, + onAboutClick = viewModel::launchAbout, + finishActivity = finishActivity, + fabBottomPadding = 0.dp, + ) + } + + composable { backStackEntry -> + val viewModel: ConfigKeyMapViewModel = hiltViewModel() + + backStackEntry.handleRoute { args -> + viewModel.loadNewKeyMap(groupUid = args.groupUid) + + if (args.showAdvancedTriggers) { + viewModel.configTriggerViewModel.showAdvancedTriggersBottomSheet = true + } + } + + ConfigKeyMapScreen( + modifier = Modifier.fillMaxSize(), + viewModel = viewModel, + ) + } + + composable { backStackEntry -> + val viewModel: ConfigKeyMapViewModel = hiltViewModel() + + backStackEntry.handleRoute { args -> + viewModel.loadKeyMap(uid = args.keyMapUid) + + if (args.showAdvancedTriggers) { + viewModel.configTriggerViewModel.showAdvancedTriggersBottomSheet = true + } + } + + ConfigKeyMapScreen( + modifier = Modifier.fillMaxSize(), + viewModel = viewModel, + ) + } + } +} + diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt deleted file mode 100644 index bc425a7dc9..0000000000 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeScreen.kt +++ /dev/null @@ -1,28 +0,0 @@ -package io.github.sds100.keymapper.home - -import androidx.compose.material3.SnackbarHostState -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import io.github.sds100.keymapper.base.home.BaseHomeViewModel -import io.github.sds100.keymapper.base.home.HomeKeyMapListScreen - -@Composable -fun HomeScreen( - modifier: Modifier = Modifier, - viewModel: BaseHomeViewModel, - finishActivity: () -> Unit, -) { - val snackbarState = remember { SnackbarHostState() } - - HomeKeyMapListScreen( - modifier = modifier, - viewModel = viewModel.keyMapListViewModel, - snackbarState = snackbarState, - onSettingsClick = viewModel::launchSettings, - onAboutClick = viewModel::launchAbout, - finishActivity = finishActivity, - fabBottomPadding = 0.dp, - ) -} diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt index 91383bea8c..422c14e759 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt @@ -8,10 +8,11 @@ import io.github.sds100.keymapper.base.keymaps.ListKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import javax.inject.Inject @HiltViewModel @@ -26,6 +27,7 @@ class HomeViewModel @Inject constructor( private val sortKeyMaps: SortKeyMapsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val buildConfigProvider: BuildConfigProvider, + navigationViewModel: NavigationViewModel, ) : BaseHomeViewModel( listKeyMaps, pauseKeyMaps, @@ -37,4 +39,5 @@ class HomeViewModel @Inject constructor( sortKeyMaps, showInputMethodPickerUseCase, buildConfigProvider, + navigationViewModel, ) diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt deleted file mode 100644 index 1af123796f..0000000000 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapFragment.kt +++ /dev/null @@ -1,111 +0,0 @@ -package io.github.sds100.keymapper.keymaps - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.WindowInsetsSides -import androidx.compose.foundation.layout.add -import androidx.compose.foundation.layout.displayCutout -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.only -import androidx.compose.foundation.layout.systemBars -import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.ViewCompositionStrategy -import androidx.fragment.app.Fragment -import androidx.fragment.app.activityViewModels -import androidx.navigation.findNavController -import androidx.navigation.fragment.navArgs -import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.utils.navigation.setupNavigation -import io.github.sds100.keymapper.base.utils.ui.showPopups - -@AndroidEntryPoint -class ConfigKeyMapFragment : Fragment() { - - private val args by navArgs() - - val viewModel: ConfigKeyMapViewModel by activityViewModels() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - // only load the keymap if opening this fragment for the first time - if (savedInstanceState == null) { - args.keyMapUid.also { keyMapUid -> - if (keyMapUid == null) { - viewModel.loadNewKeymap( - args.newFloatingButtonTriggerKey, - groupUid = args.groupUid, - ) - } else { - viewModel.loadKeyMap(keyMapUid) - } - } - - if (args.showAdvancedTriggers) { - viewModel.configTriggerViewModel.showAdvancedTriggersBottomSheet = true - } - } - - viewModel.configTriggerViewModel.setupNavigation(this) - viewModel.configActionsViewModel.setupNavigation(this) - viewModel.configConstraintsViewModel.setupNavigation(this) - } - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle?, - ): View { - FragmentComposeBinding.inflate(inflater, container, false).apply { - composeView.apply { - // Dispose of the Composition when the view's LifecycleOwner - // is destroyed - setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) - setContent { - KeyMapperTheme { - ConfigKeyMapScreen( - modifier = Modifier - .windowInsetsPadding( - WindowInsets.systemBars.only(sides = WindowInsetsSides.Horizontal) - .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), - ) - .fillMaxSize(), - viewModel = viewModel, - navigateBack = findNavController()::navigateUp, - ) - } - } - } - return this.root - } - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - viewModel.configTriggerViewModel.showPopups(this, view) - viewModel.configTriggerViewModel.optionsViewModel.showPopups(this, view) - viewModel.configActionsViewModel.showPopups(this, view) - viewModel.configConstraintsViewModel.showPopups(this, view) - } - - override fun onSaveInstanceState(outState: Bundle) { - viewModel.saveState(outState) - - super.onSaveInstanceState(outState) - } - - override fun onViewStateRestored(savedInstanceState: Bundle?) { - super.onViewStateRestored(savedInstanceState) - - savedInstanceState ?: return - - viewModel.restoreState(savedInstanceState) - } -} diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt index 02c9d3f7b5..61e36a3624 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapScreen.kt @@ -21,7 +21,6 @@ import io.github.sds100.keymapper.trigger.TriggerScreen fun ConfigKeyMapScreen( modifier: Modifier = Modifier, viewModel: ConfigKeyMapViewModel, - navigateBack: () -> Unit, ) { val isKeyMapEnabled by viewModel.isEnabled.collectAsStateWithLifecycle() val showActionTapTarget by viewModel.showActionsTapTarget.collectAsStateWithLifecycle() @@ -36,7 +35,7 @@ fun ConfigKeyMapScreen( onDismiss = { showBackDialog = false }, onDiscardClick = { showBackDialog = false - navigateBack() + viewModel.onBackClick() }, ) } @@ -68,13 +67,10 @@ fun ConfigKeyMapScreen( if (viewModel.isKeyMapEdited) { showBackDialog = true } else { - navigateBack() + viewModel.onBackClick() } }, - onDoneClick = { - viewModel.save() - navigateBack() - }, + onDoneClick = viewModel::onDoneClick, snackbarHostState = snackbarHostState, showActionTapTarget = showActionTapTarget, onActionTapTargetCompleted = viewModel::onActionTapTargetCompleted, diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt index 0bd5510764..476a0a2c7a 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt @@ -15,8 +15,10 @@ import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.trigger.ConfigTriggerViewModel +import timber.log.Timber import javax.inject.Inject @HiltViewModel @@ -32,9 +34,11 @@ class ConfigKeyMapViewModel @Inject constructor( setupGuiKeyboardUseCase: SetupGuiKeyboardUseCase, fingerprintGesturesSupportedUseCase: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, + navigationViewModel: NavigationViewModel ) : BaseConfigKeyMapViewModel( config = config, onboarding = onboarding, + navigationViewModel = navigationViewModel ) { override val configActionsViewModel: ConfigActionsViewModel = ConfigActionsViewModel( coroutineScope = viewModelScope, @@ -66,4 +70,14 @@ class ConfigKeyMapViewModel @Inject constructor( displayConstraint = display, resourceProvider = resourceProvider, ) + + init { + Timber.e("INIT VIEW MODEL") + } + + override fun onCleared() { + super.onCleared() + + Timber.e("CLEARED VIEW MODEL") + } } diff --git a/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt b/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt index 12baf963d0..2e2a6179b7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt +++ b/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt @@ -2,28 +2,15 @@ package io.github.sds100.keymapper.utils.navigation import androidx.navigation.NavDirections import dagger.hilt.android.scopes.FragmentScoped -import io.github.sds100.keymapper.NavAppDirections import io.github.sds100.keymapper.base.utils.navigation.BaseNavDirectionProvider import io.github.sds100.keymapper.base.utils.navigation.NavDestination import javax.inject.Inject +// TODO delete @FragmentScoped class NavDirectionProvider @Inject constructor() : BaseNavDirectionProvider() { override fun getDirection(destination: NavDestination<*>, requestKey: String): NavDirections { return when (destination) { - is NavDestination.ConfigKeyMap -> when (destination) { - is NavDestination.ConfigKeyMap.New -> - NavAppDirections.actionToConfigKeymap( - groupUid = destination.groupUid, - showAdvancedTriggers = destination.showAdvancedTriggers, - ) - - is NavDestination.ConfigKeyMap.Open -> - NavAppDirections.actionToConfigKeymap( - keyMapUid = destination.keyMapUid, - showAdvancedTriggers = destination.showAdvancedTriggers, - ) - } else -> super.getDirection(destination, requestKey) } diff --git a/app/src/main/res/navigation/nav_app.xml b/app/src/main/res/navigation/nav_app.xml deleted file mode 100644 index 4ebe224e43..0000000000 --- a/app/src/main/res/navigation/nav_app.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt index 616e52f5e4..3d4946d66b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt @@ -25,14 +25,15 @@ import androidx.navigation.fragment.navArgs import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.navigation.setupNavigation +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.showPopups import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.serialization.json.Json +// TODO move into MainFragment and compose navigation @AndroidEntryPoint class ChooseActionFragment : Fragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt index eae732e333..94b87a9808 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt @@ -18,7 +18,6 @@ import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerU import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.PopupUi @@ -41,10 +40,11 @@ abstract class BaseHomeViewModel( private val sortKeyMaps: SortKeyMapsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val buildConfigProvider: BuildConfigProvider, + navigationViewModel: NavigationViewModel, ) : ViewModel(), ResourceProvider by resourceProvider, PopupViewModel by PopupViewModelImpl(), - NavigationViewModel by NavigationViewModelImpl() { + NavigationViewModel by navigationViewModel { val keyMapListViewModel by lazy { KeyMapListViewModel( @@ -58,6 +58,7 @@ abstract class BaseHomeViewModel( backupRestore, showInputMethodPickerUseCase, onboarding, + navigationViewModel ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt index 91737410a5..eb57a58cea 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt @@ -61,6 +61,7 @@ import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.groups.GroupListItemModel import io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState import io.github.sds100.keymapper.base.keymaps.KeyMapList +import io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.base.sorting.SortBottomSheet import io.github.sds100.keymapper.base.trigger.DpadTriggerSetupBottomSheet @@ -82,7 +83,7 @@ import io.github.sds100.keymapper.system.files.FileUtils @Composable fun HomeKeyMapListScreen( modifier: Modifier = Modifier, - viewModel: io.github.sds100.keymapper.base.keymaps.KeyMapListViewModel, + viewModel: KeyMapListViewModel, snackbarState: SnackbarHostState, onSettingsClick: () -> Unit, onAboutClick: () -> Unit, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt index 2455fe24bc..089a26ec0b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.keymaps -import android.os.Bundle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.base.actions.ConfigActionsViewModel @@ -8,11 +7,8 @@ import io.github.sds100.keymapper.base.constraints.ConfigConstraintsViewModel import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.common.utils.dataOrNull -import io.github.sds100.keymapper.common.utils.firstBlocking -import io.github.sds100.keymapper.common.utils.getJsonSerializable -import io.github.sds100.keymapper.common.utils.ifIsData -import io.github.sds100.keymapper.common.utils.putJsonSerializable import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine @@ -23,11 +19,9 @@ import kotlinx.coroutines.launch abstract class BaseConfigKeyMapViewModel( private val config: ConfigKeyMapUseCase, private val onboarding: OnboardingUseCase, -) : ViewModel() { - - companion object { - private const val STATE_KEY = "config_keymap" - } + navigationViewModel: NavigationViewModel, +) : ViewModel(), + NavigationViewModel by navigationViewModel { abstract val configActionsViewModel: ConfigActionsViewModel abstract val configTriggerViewModel: BaseConfigTriggerViewModel @@ -58,20 +52,15 @@ abstract class BaseConfigKeyMapViewModel( showTapTarget && keyMapState.dataOrNull()?.actionList?.isNotEmpty() ?: false }.stateIn(viewModelScope, SharingStarted.Lazily, false) - fun save() = config.save() + fun onDoneClick() { + config.save() - fun saveState(outState: Bundle) { - config.keyMap.firstBlocking().ifIsData { - outState.putJsonSerializable(STATE_KEY, it) + viewModelScope.launch { + popBackStack() } } - fun restoreState(state: Bundle) { - val keyMap = state.getJsonSerializable(STATE_KEY) ?: KeyMap() - config.restoreState(keyMap) - } - - fun loadNewKeymap(floatingButtonUid: String? = null, groupUid: String?) { + fun loadNewKeyMap(floatingButtonUid: String? = null, groupUid: String?) { config.loadNewKeyMap(groupUid) if (floatingButtonUid != null) { viewModelScope.launch { @@ -86,6 +75,12 @@ abstract class BaseConfigKeyMapViewModel( } } + fun onBackClick() { + viewModelScope.launch { + popBackStack() + } + } + fun onEnabledChanged(enabled: Boolean) { config.setEnabled(enabled) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index 3716e22aef..8dec478dbf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -21,18 +21,18 @@ import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.base.sorting.SortViewModel +import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardState import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.trigger.TriggerError import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.base.utils.ui.DialogResponse -import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider import io.github.sds100.keymapper.base.utils.navigation.NavDestination -import io.github.sds100.keymapper.base.utils.navigation.NavigateEvent import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.navigate +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl @@ -40,7 +40,6 @@ import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.SelectionState import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result @@ -53,7 +52,6 @@ import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState -import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.system.permissions.Permission import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -87,9 +85,10 @@ class KeyMapListViewModel( private val backupRestore: BackupRestoreMappingsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val onboarding: OnboardingUseCase, + private val navigationProvider: NavigationViewModel, ) : PopupViewModel by PopupViewModelImpl(), ResourceProvider by resourceProvider, - NavigationViewModel by NavigationViewModelImpl() { + NavigationViewModel by navigationProvider { private companion object { const val ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM = "accessibility_service_disabled" @@ -107,7 +106,7 @@ class KeyMapListViewModel( private val listItemCreator = KeyMapListItemCreator( listKeyMaps, - resourceProvider + resourceProvider, ) private val constraintUiHelper = ConstraintUiHelper(listKeyMaps, resourceProvider) @@ -351,7 +350,7 @@ class KeyMapListViewModel( KeyMapListState( appBarState, listState, - showCreateKeyMapTapTarget + showCreateKeyMapTapTarget, ) } } @@ -488,7 +487,7 @@ class KeyMapListViewModel( } } else { coroutineScope.launch { - navigate("config_key_map", NavDestination.ConfigKeyMap.Open(uid)) + navigate("config_key_map", NavDestination.OpenKeyMap(uid)) } } } @@ -496,7 +495,6 @@ class KeyMapListViewModel( fun onKeyMapCardLongClick(uid: String) { if (multiSelectProvider.state.value is SelectionState.NotSelecting) { coroutineScope.launch { - val currentGroupUid = listKeyMaps.keyMapGroup.first().group?.uid multiSelectProvider.startSelecting() multiSelectProvider.select(uid) } @@ -534,7 +532,7 @@ class KeyMapListViewModel( TriggerError.ASSISTANT_TRIGGER_NOT_PURCHASED, TriggerError.FLOATING_BUTTONS_NOT_PURCHASED -> { navigate( "purchase_advanced_trigger", - NavDestination.ConfigKeyMap.New( + NavDestination.NewKeyMap( groupUid = null, showAdvancedTriggers = true, ), @@ -891,10 +889,8 @@ class KeyMapListViewModel( val groupUid = listKeyMaps.keyMapGroup.first().group?.uid navigate( - NavigateEvent( - "config_key_map", - NavDestination.ConfigKeyMap.New(groupUid = groupUid), - ), + "config_new_key_map", + NavDestination.NewKeyMap(groupUid = groupUid), ) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt index 80110514cd..c22536b339 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt @@ -5,15 +5,18 @@ import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickCoordinateRe import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickCoordinateResult import io.github.sds100.keymapper.base.actions.tapscreen.PickCoordinateResult import io.github.sds100.keymapper.base.constraints.Constraint -import io.github.sds100.keymapper.system.apps.ActivityInfo import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutResult -import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.base.system.intents.ConfigIntentResult +import io.github.sds100.keymapper.system.apps.ActivityInfo +import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo +import kotlinx.serialization.Serializable -abstract class NavDestination { +@Serializable +sealed class NavDestination(val isCompose: Boolean = false) { abstract val id: String companion object { + const val ID_HOME = "home" const val ID_CHOOSE_APP = "choose_app" const val ID_CHOOSE_APP_SHORTCUT = "choose_app_shortcut" const val ID_KEY_CODE = "key_code" @@ -35,6 +38,11 @@ abstract class NavDestination { const val ID_INTERACT_UI_ELEMENT_ACTION = "interact_ui_element_action" } + @Serializable + data object Home : NavDestination() { + override val id: String = ID_HOME + } + data class ChooseApp( /** * Allow the list to show hidden apps that can't be launched. @@ -100,13 +108,14 @@ abstract class NavDestination { override val id: String = ID_ABOUT } - sealed class ConfigKeyMap : NavDestination() { + @Serializable + data class OpenKeyMap(val keyMapUid: String, val showAdvancedTriggers: Boolean = false) : NavDestination(isCompose = true) { override val id: String = ID_CONFIG_KEY_MAP - abstract val showAdvancedTriggers: Boolean - - data class Open(val keyMapUid: String, override val showAdvancedTriggers: Boolean = false) : ConfigKeyMap() + } - data class New(val groupUid: String?, override val showAdvancedTriggers: Boolean = false) : ConfigKeyMap() + @Serializable + data class NewKeyMap(val groupUid: String?, val showAdvancedTriggers: Boolean = false) : NavDestination(isCompose = true) { + override val id: String = ID_CONFIG_KEY_MAP } data object ChooseFloatingLayout : NavDestination() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt index 7cda6397a8..1a12ad9526 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.utils.navigation import androidx.lifecycle.LifecycleOwner import androidx.navigation.NavBackStackEntry import androidx.navigation.NavController - +import androidx.navigation.toRoute fun NavBackStackEntry.observeLiveData( @@ -35,3 +35,16 @@ fun NavController.setCurrentDestinationLiveData(key: String, value: T) { getBackStackEntry(it).setLiveData(key, value) } } + +inline fun NavBackStackEntry.handleRoute(block: (R) -> Unit) { + if ( + savedStateHandle.contains("handled_args") + ) { + return + } + val args = toRoute() + + block(args) + + savedStateHandle["handled_args"] = true +} \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt index b0f1f33879..fc459813b0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt @@ -10,6 +10,7 @@ import androidx.navigation.fragment.findNavController import dagger.hilt.android.EntryPointAccessors import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.ChooseActionFragment +import io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment import io.github.sds100.keymapper.base.actions.keyevent.ConfigKeyEventActionFragment import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickCoordinateResult import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickDisplayCoordinateFragment @@ -31,43 +32,79 @@ import io.github.sds100.keymapper.base.system.intents.ConfigIntentResult import io.github.sds100.keymapper.common.utils.getJsonSerializable import io.github.sds100.keymapper.system.apps.ActivityInfo import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo -import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharedFlow -import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.dropWhile +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.update import kotlinx.coroutines.runBlocking import kotlinx.serialization.json.Json +import javax.inject.Singleton +@Singleton class NavigationViewModelImpl : NavigationViewModel { - private val _onNavResult by lazy { MutableSharedFlow() } - override val onNavResult by lazy { _onNavResult.asSharedFlow() } + private var currentDestination: NavigateEvent? = null - private val _navigate = MutableSharedFlow() - override val navigate = _navigate.asSharedFlow() + private val _onNavResult = MutableStateFlow(null) + override val onNavResult = _onNavResult.asStateFlow() + + private val _navigate = MutableStateFlow(null) + override val navigate = _navigate.asStateFlow() + + override fun handledEvent() { + _navigate.update { null } + } + + override fun handledResult() { + _onNavResult.update { null } + } override suspend fun navigate(event: NavigateEvent) { // wait for the view to collect so navigating can happen _navigate.subscriptionCount.first { it > 0 } + currentDestination = event _navigate.emit(event) } override fun onNavResult(result: NavResult) { runBlocking { _onNavResult.emit(result) } } + + override suspend fun popBackStack() { + currentDestination?.let { currentDestination -> + _onNavResult.subscriptionCount.first { it > 0 } + _onNavResult.emit(NavResult(currentDestination.key, Unit)) + } + } + + override suspend fun popBackStackWithResult(result: Any?) { + currentDestination?.let { currentDestination -> + _onNavResult.subscriptionCount.first { it > 0 } + _onNavResult.emit(NavResult(currentDestination.key, result)) + } + } } interface NavigationViewModel { - val navigate: SharedFlow - val onNavResult: SharedFlow + val navigate: SharedFlow + val onNavResult: SharedFlow fun onNavResult(result: NavResult) + suspend fun popBackStackWithResult(result: Any?) + suspend fun popBackStack() + fun handledResult() + suspend fun navigate(event: NavigateEvent) + fun handledEvent() } suspend inline fun NavigationViewModel.navigate( @@ -78,11 +115,14 @@ suspend inline fun NavigationViewModel.navigate( /* This ensures only one job for a dialog is active at once by cancelling previous jobs when a new - dialog is shown with the same key + dialog is shown with the same key. + + Must drop the first value because it came from our call to navigate. */ return merge( - navigate.dropWhile { it.key != key }.map { null }, - onNavResult.dropWhile { it.result !is R? && it.key != key }.map { it.result }, + navigate.drop(1).filterNotNull().dropWhile { it.key != key }.map { null }, + onNavResult.filterNotNull().dropWhile { it.result !is R? && it.key != key } + .map { it.result }, ).first() as R? } @@ -129,22 +169,25 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { val navDirectionProvider = EntryPointAccessors.fromFragment(fragment).provider() - navigate.onEach { event -> - val (requestKey, destination) = event + navigate + .filterNotNull() + .filter { !it.destination.isCompose } + .onEach { event -> + val (requestKey, destination) = event - pendingResults[requestKey] = destination.id + pendingResults[requestKey] = destination.id - fragment.clearFragmentResultListener(requestKey) + fragment.clearFragmentResultListener(requestKey) - fragment.setFragmentResultListener(requestKey) { _, bundle -> - pendingResults.remove(event.key) - sendNavResultFromBundle(event.key, event.destination.id, bundle) - } + fragment.setFragmentResultListener(requestKey) { _, bundle -> + pendingResults.remove(event.key) + sendNavResultFromBundle(event.key, event.destination.id, bundle) + } - val direction = navDirectionProvider.getDirection(destination, requestKey) + val direction = navDirectionProvider.getDirection(destination, requestKey) - fragment.findNavController().navigate(direction) - }.launchIn(fragment.lifecycleScope) + fragment.findNavController().navigate(direction) + }.launchIn(fragment.lifecycleScope) } fun NavigationViewModel.sendNavResultFromBundle( @@ -169,7 +212,7 @@ fun NavigationViewModel.sendNavResultFromBundle( NavDestination.ID_KEY_CODE -> { val keyCode = - bundle.getInt(io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment.EXTRA_KEYCODE) + bundle.getInt(ChooseKeyCodeFragment.EXTRA_KEYCODE) onNavResult(NavResult(requestKey, keyCode)) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 96e0aca749..f6565c333a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,6 @@ [versions] compile-sdk = "35" +hilt-navigation-compose = "1.2.0" min-sdk = "21" build-tools = "35.0.0" target-sdk = "35" @@ -72,6 +73,7 @@ ui-tooling = "1.8.1" # android.arch.persistence.room:testing [libraries] # Kotlin +androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hilt-navigation-compose" } dagger-hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "dagger-hilt-android" } dagger-hilt-android-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "dagger-hilt-android" } kotlin-stdlib-jdk8 = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" } From 0710f01e14dd4c8f53432de83adece376a6eeeb6 Mon Sep 17 00:00:00 2001 From: sds100 Date: Thu, 22 May 2025 18:16:12 +0200 Subject: [PATCH 34/71] #1711 working navigation between and data passing between compose destinations and fragments --- .../github/sds100/keymapper/AppHiltModule.kt | 10 - .../github/sds100/keymapper/MainFragment.kt | 74 ++++-- .../io/github/sds100/keymapper/MainNavHost.kt | 24 +- .../keymaps/ConfigKeyMapViewModel.kt | 13 +- .../trigger/ConfigTriggerViewModel.kt | 3 + .../utils/navigation/NavDirectionProvider.kt | 18 -- .../keymapper/base/BaseSingletonHiltModule.kt | 8 +- .../base/actions/ChooseActionFragment.kt | 102 --------- .../base/actions/ChooseActionScreen.kt | 7 +- .../base/actions/ChooseActionViewModel.kt | 37 +-- .../base/actions/ConfigActionsViewModel.kt | 3 +- .../base/actions/CreateActionDelegate.kt | 13 +- .../actions/keyevent/ChooseKeyCodeFragment.kt | 4 +- .../keyevent/ChooseKeyCodeViewModel.kt | 10 +- .../constraints/ConfigConstraintsViewModel.kt | 7 +- .../base/system/apps/ChooseAppFragment.kt | 2 +- .../trigger/BaseConfigTriggerViewModel.kt | 3 +- .../navigation/BaseNavDirectionProvider.kt | 89 -------- .../base/utils/navigation/NavDestination.kt | 21 +- .../base/utils/navigation/NavResult.kt | 2 +- .../utils/navigation/NavigationViewModel.kt | 212 ++++++++++++------ base/src/main/res/navigation/nav_base_app.xml | 16 -- 22 files changed, 295 insertions(+), 383 deletions(-) delete mode 100644 app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/BaseNavDirectionProvider.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt index 0254016749..8cad2170bb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt +++ b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt @@ -6,16 +6,12 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import io.github.sds100.keymapper.base.purchasing.PurchasingManager -import io.github.sds100.keymapper.base.utils.navigation.BaseNavDirectionProvider -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.KeyMapperClassProvider import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.purchasing.PurchasingManagerImpl import io.github.sds100.keymapper.system.accessibility.MyAccessibilityService -import io.github.sds100.keymapper.utils.navigation.NavDirectionProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope import javax.inject.Singleton @@ -58,14 +54,8 @@ class AppHiltModule { } } - @Provides - fun provideNavDirectionProvider(): BaseNavDirectionProvider = NavDirectionProvider() - @Provides @Singleton fun providePurchasingManager(): PurchasingManager = PurchasingManagerImpl() - @Provides - @Singleton - fun provideNavigationProvider(): NavigationViewModel = NavigationViewModelImpl() } diff --git a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt index db641cdca5..13606c6ade 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt @@ -17,13 +17,14 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.fragment.app.Fragment import androidx.lifecycle.compose.collectAsStateWithLifecycle +import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.utils.navigation.NavResult import io.github.sds100.keymapper.base.utils.navigation.NavigateEvent -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.navigation.setupNavigation import javax.inject.Inject @@ -31,7 +32,7 @@ import javax.inject.Inject class MainFragment : Fragment() { @Inject - lateinit var navigationProvider: NavigationViewModel + lateinit var navigationProvider: NavigationViewModelImpl override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -51,36 +52,67 @@ class MainFragment : Fragment() { setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setContent { val navController = rememberNavController() - val navEvent: NavigateEvent? by navigationProvider.navigate.collectAsStateWithLifecycle( - null, - ) - val navResult: NavResult? by navigationProvider.onNavResult.collectAsStateWithLifecycle( + val navEvent: NavigateEvent? by navigationProvider.navigate + .collectAsStateWithLifecycle(null) + + val returnResult: String? by navigationProvider.onReturnResult + .collectAsStateWithLifecycle(null) + + val currentEntry by navController.currentBackStackEntryAsState() + + val popBackStack by navigationProvider.popBackStack.collectAsStateWithLifecycle( null, ) - LaunchedEffect(navEvent) { - val navEvent = navEvent - if (navEvent == null) { - return@LaunchedEffect - } + LaunchedEffect(key1 = popBackStack) { + popBackStack ?: return@LaunchedEffect - if (!navEvent.destination.isCompose) { - return@LaunchedEffect - } + navController.navigateUp() + navigationProvider.handledPop() + } - navController.navigate(navEvent.destination) - navigationProvider.handledEvent() + LaunchedEffect(returnResult) { + val result = returnResult ?: return@LaunchedEffect + + // Set the result in previous screen. + navController.previousBackStackEntry + ?.savedStateHandle + ?.set("result", result) + + navController.navigateUp() + navigationProvider.handledReturnResult() } - LaunchedEffect(navResult) { - val navResult = navResult + LaunchedEffect(currentEntry) { + val currentEntry = currentEntry ?: return@LaunchedEffect + + val requestKey = + currentEntry.savedStateHandle.remove("request_key") + + // If the current screen has a result then handle it. + val data = currentEntry.savedStateHandle.remove("result") - if (navResult == null) { + if (requestKey != null && data != null) { + navigationProvider.onNavResult(NavResult(requestKey, data)) + navigationProvider.handledNavResult() + } + } + + LaunchedEffect(navEvent) { + val navEvent = navEvent ?: return@LaunchedEffect + + if (!navEvent.destination.isCompose) { return@LaunchedEffect } - navController.navigateUp() - navigationProvider.handledResult() + // Store the request key before navigating. + navController.currentBackStackEntry + ?.savedStateHandle + ?.set("request_key", navEvent.key) + + navController.navigate(navEvent.destination) + + navigationProvider.handledEvent() } KeyMapperTheme { diff --git a/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt b/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt index 0c6c90bb09..760ccad553 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt @@ -1,6 +1,13 @@ package io.github.sds100.keymapper +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides +import androidx.compose.foundation.layout.add +import androidx.compose.foundation.layout.displayCutout import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.only +import androidx.compose.foundation.layout.systemBars +import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.material3.SnackbarHostState import androidx.compose.runtime.Composable import androidx.compose.runtime.remember @@ -10,6 +17,8 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable +import io.github.sds100.keymapper.base.actions.ChooseActionScreen +import io.github.sds100.keymapper.base.actions.ChooseActionViewModel import io.github.sds100.keymapper.base.home.HomeKeyMapListScreen import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.handleRoute @@ -77,6 +86,19 @@ fun MainNavHost( viewModel = viewModel, ) } + + composable { + val viewModel: ChooseActionViewModel = hiltViewModel() + + ChooseActionScreen( + modifier = Modifier + .fillMaxSize() + .windowInsetsPadding( + WindowInsets.systemBars.only(sides = WindowInsetsSides.Horizontal) + .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), + ), + viewModel = viewModel, + ) + } } } - diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt index 476a0a2c7a..a0480b314e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt @@ -48,6 +48,7 @@ class ConfigKeyMapViewModel @Inject constructor( config = config, onboarding = onboarding, resourceProvider = resourceProvider, + navigationViewModel = navigationViewModel ) override val configTriggerViewModel: ConfigTriggerViewModel = ConfigTriggerViewModel( @@ -61,6 +62,7 @@ class ConfigKeyMapViewModel @Inject constructor( setupGuiKeyboard = setupGuiKeyboardUseCase, fingerprintGesturesSupported = fingerprintGesturesSupportedUseCase, resourceProvider = resourceProvider, + navigationViewModel = navigationViewModel ) override val configConstraintsViewModel: ConfigConstraintsViewModel = @@ -69,15 +71,6 @@ class ConfigKeyMapViewModel @Inject constructor( config = config, displayConstraint = display, resourceProvider = resourceProvider, + navigationViewModel = navigationViewModel ) - - init { - Timber.e("INIT VIEW MODEL") - } - - override fun onCleared() { - super.onCleared() - - Timber.e("CLEARED VIEW MODEL") - } } diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt index 1264107d0a..840c81e19c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt @@ -9,6 +9,7 @@ import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import javax.inject.Inject @@ -24,6 +25,7 @@ class ConfigTriggerViewModel @Inject constructor( private val setupGuiKeyboard: SetupGuiKeyboardUseCase, private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, + navigationViewModel: NavigationViewModel ) : BaseConfigTriggerViewModel( coroutineScope = coroutineScope, onboarding = onboarding, @@ -35,6 +37,7 @@ class ConfigTriggerViewModel @Inject constructor( setupGuiKeyboard = setupGuiKeyboard, fingerprintGesturesSupported = fingerprintGesturesSupported, resourceProvider = resourceProvider, + navigationViewModel = navigationViewModel ) { override fun onEditFloatingButtonClick() {} diff --git a/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt b/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt deleted file mode 100644 index 2e2a6179b7..0000000000 --- a/app/src/main/java/io/github/sds100/keymapper/utils/navigation/NavDirectionProvider.kt +++ /dev/null @@ -1,18 +0,0 @@ -package io.github.sds100.keymapper.utils.navigation - -import androidx.navigation.NavDirections -import dagger.hilt.android.scopes.FragmentScoped -import io.github.sds100.keymapper.base.utils.navigation.BaseNavDirectionProvider -import io.github.sds100.keymapper.base.utils.navigation.NavDestination -import javax.inject.Inject - -// TODO delete -@FragmentScoped -class NavDirectionProvider @Inject constructor() : BaseNavDirectionProvider() { - override fun getDirection(destination: NavDestination<*>, requestKey: String): NavDirections { - return when (destination) { - - else -> super.getDirection(destination, requestKey) - } - } -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt index 284488ab17..69a88eeade 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt @@ -38,6 +38,8 @@ import io.github.sds100.keymapper.base.system.notifications.ManageNotificationsU import io.github.sds100.keymapper.base.system.notifications.ManageNotificationsUseCaseImpl import io.github.sds100.keymapper.base.trigger.RecordTriggerController import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProviderImpl import io.github.sds100.keymapper.common.utils.DefaultUuidGenerator @@ -127,5 +129,9 @@ abstract class BaseSingletonHiltModule { @Binds @Singleton - abstract fun provideUuidGenerator(impl: DefaultUuidGenerator): UuidGenerator + abstract fun bindUuidGenerator(impl: DefaultUuidGenerator): UuidGenerator + + @Binds + @Singleton + abstract fun bindNavigationProvider(impl: NavigationViewModelImpl): NavigationViewModel } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt deleted file mode 100644 index 3d4946d66b..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionFragment.kt +++ /dev/null @@ -1,102 +0,0 @@ -package io.github.sds100.keymapper.base.actions - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.WindowInsetsSides -import androidx.compose.foundation.layout.add -import androidx.compose.foundation.layout.displayCutout -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.only -import androidx.compose.foundation.layout.systemBars -import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.ViewCompositionStrategy -import androidx.core.os.bundleOf -import androidx.fragment.app.Fragment -import androidx.fragment.app.setFragmentResult -import androidx.fragment.app.viewModels -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.withStateAtLeast -import androidx.navigation.fragment.findNavController -import androidx.navigation.fragment.navArgs -import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.utils.navigation.setupNavigation -import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showPopups -import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.launch -import kotlinx.serialization.json.Json - -// TODO move into MainFragment and compose navigation -@AndroidEntryPoint -class ChooseActionFragment : Fragment() { - - companion object { - const val EXTRA_ACTION = "extra_action" - } - - private val args: ChooseActionFragmentArgs by navArgs() - - private val viewModel by viewModels() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - viewModel.setupNavigation(this) - - launchRepeatOnLifecycle(Lifecycle.State.CREATED) { - viewModel.returnAction.collectLatest { action -> - viewLifecycleScope.launch { - withStateAtLeast(Lifecycle.State.RESUMED) { - setFragmentResult( - args.requestKey, - bundleOf(EXTRA_ACTION to Json.encodeToString(action)), - ) - findNavController().navigateUp() - } - } - } - } - } - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle?, - ): View { - FragmentComposeBinding.inflate(inflater, container, false).apply { - composeView.apply { - // Dispose of the Composition when the view's LifecycleOwner - // is destroyed - setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) - setContent { - KeyMapperTheme { - ChooseActionScreen( - modifier = Modifier - .fillMaxSize() - .windowInsetsPadding( - WindowInsets.systemBars.only(sides = WindowInsetsSides.Horizontal) - .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), - ), - viewModel = viewModel, - onNavigateBack = findNavController()::navigateUp, - ) - } - } - } - return this.root - } - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - viewModel.showPopups(this, view) - } -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt index 9f2578cf92..fce1f2f42c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionScreen.kt @@ -20,7 +20,6 @@ import androidx.compose.material.icons.rounded.Bluetooth import androidx.compose.material.icons.rounded.Wifi import androidx.compose.material3.BottomAppBar import androidx.compose.material3.CircularProgressIndicator -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface @@ -40,20 +39,19 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SearchAppBarActions import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemFixedHeight import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemGroup import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemHeader import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.update @Composable fun ChooseActionScreen( modifier: Modifier = Modifier, viewModel: ChooseActionViewModel, - onNavigateBack: () -> Unit, ) { val state by viewModel.groups.collectAsStateWithLifecycle() val query by viewModel.searchQuery.collectAsStateWithLifecycle() @@ -69,11 +67,10 @@ fun ChooseActionScreen( onQueryChange = { newQuery -> viewModel.searchQuery.update { newQuery } }, onCloseSearch = { viewModel.searchQuery.update { null } }, onClickAction = viewModel::onListItemClick, - onNavigateBack = onNavigateBack, + onNavigateBack = viewModel::onNavigateBack, ) } -@OptIn(ExperimentalMaterial3Api::class) @Composable private fun ChooseActionScreen( modifier: Modifier = Modifier, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index 752c4427fe..c727f3c6a2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -2,22 +2,23 @@ package io.github.sds100.keymapper.base.actions import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.containsQuery import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemGroup import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.system.SystemError +import io.github.sds100.keymapper.system.permissions.Permission import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted @@ -25,21 +26,20 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.shareIn import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import kotlinx.serialization.json.Json import javax.inject.Inject @HiltViewModel class ChooseActionViewModel @Inject constructor( private val useCase: CreateActionUseCase, - private val resourceProvider: ResourceProvider + private val resourceProvider: ResourceProvider, + private val navigationViewModel: NavigationViewModel, ) : ViewModel(), ResourceProvider by resourceProvider, PopupViewModel by PopupViewModelImpl(), - NavigationViewModel by NavigationViewModelImpl() { + NavigationViewModel by navigationViewModel { companion object { private val CATEGORY_ORDER = arrayOf( @@ -65,9 +65,6 @@ class ChooseActionViewModel @Inject constructor( private val allGroupedListItems: List by lazy { buildListGroups() } - val returnAction = createActionDelegate.actionResult.filterNotNull() - .shareIn(viewModelScope, SharingStarted.Eagerly) - val searchQuery = MutableStateFlow(null) val groups: StateFlow>> = @@ -86,6 +83,14 @@ class ChooseActionViewModel @Inject constructor( State.Data(groups) }.flowOn(Dispatchers.Default).stateIn(viewModelScope, SharingStarted.Eagerly, State.Loading) + init { + viewModelScope.launch { + createActionDelegate.actionResult.filterNotNull().collect { action -> + popBackStackWithResult(Json.encodeToString(action)) + } + } + } + fun onListItemClick(id: String) { viewModelScope.launch { val actionId = ActionId.valueOf(id) @@ -99,6 +104,12 @@ class ChooseActionViewModel @Inject constructor( } } + fun onNavigateBack() { + viewModelScope.launch { + popBackStack() + } + } + private fun buildListGroups(): List = buildList { val listItems = buildListItems(ActionId.entries) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index 41af224b2f..96c852c903 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -51,10 +51,11 @@ class ConfigActionsViewModel constructor( private val config: ConfigKeyMapUseCase, private val onboarding: OnboardingUseCase, resourceProvider: ResourceProvider, + navigationViewModel: NavigationViewModel ) : ActionOptionsBottomSheetCallback, ResourceProvider by resourceProvider, PopupViewModel by PopupViewModelImpl(), - NavigationViewModel by NavigationViewModelImpl() { + NavigationViewModel by navigationViewModel { val createActionDelegate = CreateActionDelegate(coroutineScope, createAction, this, this, this) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index a4ad4c8ace..928968f299 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -12,13 +12,13 @@ import io.github.sds100.keymapper.base.system.intents.ConfigIntentResult import io.github.sds100.keymapper.base.utils.DndModeStrings import io.github.sds100.keymapper.base.utils.RingerModeStrings import io.github.sds100.keymapper.base.utils.VolumeStreamStrings -import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.navigate +import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.system.camera.CameraLens @@ -37,11 +37,11 @@ class CreateActionDelegate( private val coroutineScope: CoroutineScope, private val useCase: CreateActionUseCase, popupViewModel: PopupViewModel, - navigationViewModelImpl: NavigationViewModel, + navigationViewModel: NavigationViewModel, resourceProvider: ResourceProvider, ) : ResourceProvider by resourceProvider, PopupViewModel by popupViewModel, - NavigationViewModel by navigationViewModelImpl { + NavigationViewModel by navigationViewModel { val actionResult: MutableStateFlow = MutableStateFlow(null) var enableFlashlightActionState: EnableFlashlightActionState? by mutableStateOf(null) @@ -446,7 +446,7 @@ class CreateActionDelegate( ActionId.DISABLE_FLASHLIGHT, -> { - val items = useCase.getFlashlightLenses().map {lens -> + val items = useCase.getFlashlightLenses().map { lens -> when (lens) { CameraLens.FRONT -> lens to getString(R.string.lens_front) CameraLens.BACK -> lens to getString(R.string.lens_back) @@ -488,8 +488,7 @@ class CreateActionDelegate( ActionId.KEY_CODE -> { val keyCode = - navigate("choose_key_code", NavDestination.ChooseKeyCode) - ?: return null + navigate("choose_key_code", NavDestination.ChooseKeyCode) ?: return null return ActionData.InputKeyEvent(keyCode = keyCode) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt index 1b76ea794c..20ee488091 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeFragment.kt @@ -6,12 +6,12 @@ import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyRecyclerView import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBinding +import io.github.sds100.keymapper.base.simple import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.base.simple import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest @@ -36,7 +36,7 @@ class ChooseKeyCodeFragment : SimpleRecyclerViewFragment() { RecyclerViewUtils.applySimpleListItemDecorations(binding.epoxyRecyclerView) - viewLifecycleOwner.launchRepeatOnLifecycle(Lifecycle.State.RESUMED) { + viewLifecycleOwner.launchRepeatOnLifecycle(Lifecycle.State.CREATED) { viewModel.returnResult.collectLatest { returnResult(EXTRA_KEYCODE to it) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt index ad4b34732c..06cadc7ada 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -4,7 +4,6 @@ import android.view.KeyEvent import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.utils.filterByQuery import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem import io.github.sds100.keymapper.base.utils.ui.PopupViewModel @@ -13,8 +12,9 @@ import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.inputevents.InputEventUtils import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.combine @@ -44,8 +44,8 @@ class ChooseKeyCodeViewModel @Inject constructor() : }.let { emit(it) } } - private val _returnResult = MutableStateFlow(null) - val returnResult: StateFlow = _returnResult.asStateFlow() + private val _returnResult = MutableSharedFlow() + val returnResult = _returnResult.asSharedFlow() init { viewModelScope.launch { @@ -66,7 +66,7 @@ class ChooseKeyCodeViewModel @Inject constructor() : fun onListItemClick(id: String) { viewModelScope.launch { - _returnResult.emit(ActionData.InputKeyEvent(keyCode = id.toInt())) + _returnResult.emit(id.toInt()) } } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index d11b8cfa0a..9309ddbae2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -9,7 +9,6 @@ import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.isFixable import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl @@ -35,16 +34,16 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -import javax.inject.Inject -class ConfigConstraintsViewModel constructor( +class ConfigConstraintsViewModel( private val coroutineScope: CoroutineScope, private val config: ConfigKeyMapUseCase, private val displayConstraint: DisplayConstraintUseCase, resourceProvider: ResourceProvider, + navigationViewModel: NavigationViewModel, ) : ResourceProvider by resourceProvider, PopupViewModel by PopupViewModelImpl(), - NavigationViewModel by NavigationViewModelImpl() { + NavigationViewModel by navigationViewModel { private val uiHelper = ConstraintUiHelper(displayConstraint, resourceProvider) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt index 77d05cc577..60de372248 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppFragment.kt @@ -46,7 +46,7 @@ class ChooseAppFragment : RecyclerViewFragment, requestKey: String): NavDirections { - return when (destination) { - is NavDestination.ChooseApp -> NavBaseAppDirections.chooseApp( - destination.allowHiddenApps, - requestKey, - ) - - NavDestination.ChooseAppShortcut -> NavBaseAppDirections.chooseAppShortcut(requestKey) - NavDestination.ChooseKeyCode -> NavBaseAppDirections.chooseKeyCode(requestKey) - is NavDestination.ConfigKeyEventAction -> { - val json = destination.action?.let { - Json.encodeToString(it) - } - - NavBaseAppDirections.configKeyEvent(requestKey, json) - } - - is NavDestination.PickCoordinate -> { - val json = destination.result?.let { - Json.encodeToString(it) - } - - NavBaseAppDirections.pickDisplayCoordinate(requestKey, json) - } - - is NavDestination.PickSwipeCoordinate -> { - val json = destination.result?.let { - Json.encodeToString(it) - } - - NavBaseAppDirections.swipePickDisplayCoordinate(requestKey, json) - } - - is NavDestination.PickPinchCoordinate -> { - val json = destination.result?.let { - Json.encodeToString(it) - } - - NavBaseAppDirections.pinchPickDisplayCoordinate(requestKey, json) - } - - is NavDestination.ConfigIntent -> { - val json = destination.result?.let { - Json.encodeToString(it) - } - - NavBaseAppDirections.configIntent(requestKey, json) - } - - is NavDestination.ChooseActivity -> NavBaseAppDirections.chooseActivity(requestKey) - is NavDestination.ChooseSound -> NavBaseAppDirections.chooseSoundFile(requestKey) - NavDestination.ChooseAction -> NavBaseAppDirections.toChooseActionFragment(requestKey) - is NavDestination.ChooseConstraint -> NavBaseAppDirections.chooseConstraint( - requestKey = requestKey, - ) - - is NavDestination.ChooseBluetoothDevice -> NavBaseAppDirections.chooseBluetoothDevice( - requestKey, - ) - - NavDestination.About -> NavBaseAppDirections.actionGlobalAboutFragment() - NavDestination.Settings -> NavBaseAppDirections.toSettingsFragment() - - NavDestination.ShizukuSettings -> NavBaseAppDirections.toShizukuSettingsFragment() - is NavDestination.InteractUiElement -> NavBaseAppDirections.interactUiElement( - requestKey = requestKey, - action = destination.action?.let { Json.encodeToString(destination.action) }, - ) - - else -> throw IllegalArgumentException("Can not find a direction for this destination: $destination") - } - } -} - -@EntryPoint -@InstallIn(FragmentComponent::class) -interface NavDirectionsProviderEntryPoint { - fun provider(): BaseNavDirectionProvider -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt index c22536b339..40e6764ab3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt @@ -43,6 +43,7 @@ sealed class NavDestination(val isCompose: Boolean = false) { override val id: String = ID_HOME } + @Serializable data class ChooseApp( /** * Allow the list to show hidden apps that can't be launched. @@ -52,58 +53,72 @@ sealed class NavDestination(val isCompose: Boolean = false) { override val id: String = ID_CHOOSE_APP } + @Serializable data object ChooseAppShortcut : NavDestination() { override val id: String = ID_CHOOSE_APP_SHORTCUT } + @Serializable data object ChooseKeyCode : NavDestination() { override val id: String = ID_KEY_CODE } + @Serializable data class ConfigKeyEventAction(val action: ActionData.InputKeyEvent? = null) : NavDestination() { override val id: String = ID_KEY_EVENT } + @Serializable data class PickCoordinate(val result: PickCoordinateResult? = null) : NavDestination() { override val id: String = ID_PICK_COORDINATE } + @Serializable data class PickSwipeCoordinate(val result: SwipePickCoordinateResult? = null) : NavDestination() { override val id: String = ID_PICK_SWIPE_COORDINATE } + @Serializable data class PickPinchCoordinate(val result: PinchPickCoordinateResult? = null) : NavDestination() { override val id: String = ID_PICK_PINCH_COORDINATE } + @Serializable data class ConfigIntent(val result: ConfigIntentResult? = null) : NavDestination() { override val id: String = ID_CONFIG_INTENT } + @Serializable data object ChooseActivity : NavDestination() { override val id: String = ID_CHOOSE_ACTIVITY } + @Serializable data object ChooseSound : NavDestination() { override val id: String = ID_CHOOSE_SOUND } - data object ChooseAction : NavDestination() { + @Serializable + data object ChooseAction : NavDestination(isCompose = true) { override val id: String = ID_CHOOSE_ACTION } + @Serializable data object ChooseConstraint : NavDestination() { override val id: String = ID_CHOOSE_CONSTRAINT } + @Serializable data object ChooseBluetoothDevice : NavDestination() { override val id: String = ID_CHOOSE_BLUETOOTH_DEVICE } + @Serializable data object Settings : NavDestination() { override val id: String = ID_SETTINGS } + @Serializable data object About : NavDestination() { override val id: String = ID_ABOUT } @@ -118,18 +133,22 @@ sealed class NavDestination(val isCompose: Boolean = false) { override val id: String = ID_CONFIG_KEY_MAP } + @Serializable data object ChooseFloatingLayout : NavDestination() { override val id: String = "choose_floating_layout" } + @Serializable data object ShizukuSettings : NavDestination() { override val id: String = ID_SHIZUKU_SETTINGS } + @Serializable data class ConfigFloatingButton(val buttonUid: String?) : NavDestination() { override val id: String = ID_CONFIG_FLOATING_BUTTON } + @Serializable data class InteractUiElement(val action: ActionData.InteractUiElement?) : NavDestination() { override val id: String = ID_INTERACT_UI_ELEMENT_ACTION } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavResult.kt index d809597e3f..5c72ffa2e2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavResult.kt @@ -1,4 +1,4 @@ package io.github.sds100.keymapper.base.utils.navigation -data class NavResult(val key: String, val result: Any?) +data class NavResult(val key: String, val data: String?) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt index fc459813b0..52f03f1370 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt @@ -6,34 +6,25 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.clearFragmentResultListener import androidx.fragment.app.setFragmentResultListener import androidx.lifecycle.lifecycleScope +import androidx.navigation.NavDirections import androidx.navigation.fragment.findNavController -import dagger.hilt.android.EntryPointAccessors -import io.github.sds100.keymapper.base.actions.ActionData -import io.github.sds100.keymapper.base.actions.ChooseActionFragment +import io.github.sds100.keymapper.base.NavBaseAppDirections import io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment import io.github.sds100.keymapper.base.actions.keyevent.ConfigKeyEventActionFragment -import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickCoordinateResult import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickDisplayCoordinateFragment import io.github.sds100.keymapper.base.actions.sound.ChooseSoundFileFragment -import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickCoordinateResult import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickDisplayCoordinateFragment -import io.github.sds100.keymapper.base.actions.tapscreen.PickCoordinateResult import io.github.sds100.keymapper.base.actions.tapscreen.PickDisplayCoordinateFragment import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementFragment import io.github.sds100.keymapper.base.constraints.ChooseConstraintFragment -import io.github.sds100.keymapper.base.constraints.Constraint import io.github.sds100.keymapper.base.system.apps.ChooseActivityFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutFragment -import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutResult import io.github.sds100.keymapper.base.system.bluetooth.ChooseBluetoothDeviceFragment import io.github.sds100.keymapper.base.system.intents.ConfigIntentFragment -import io.github.sds100.keymapper.base.system.intents.ConfigIntentResult -import io.github.sds100.keymapper.common.utils.getJsonSerializable -import io.github.sds100.keymapper.system.apps.ActivityInfo import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.dropWhile @@ -47,23 +38,38 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.update import kotlinx.coroutines.runBlocking import kotlinx.serialization.json.Json +import timber.log.Timber +import javax.inject.Inject import javax.inject.Singleton +// TODO rename @Singleton -class NavigationViewModelImpl : NavigationViewModel { - private var currentDestination: NavigateEvent? = null - +class NavigationViewModelImpl @Inject constructor() : NavigationViewModel { private val _onNavResult = MutableStateFlow(null) override val onNavResult = _onNavResult.asStateFlow() private val _navigate = MutableStateFlow(null) override val navigate = _navigate.asStateFlow() + private val _onReturnResult = MutableStateFlow(null) + override val onReturnResult: StateFlow = _onReturnResult.asStateFlow() + + private val _popBackStack = MutableStateFlow(null) + val popBackStack: StateFlow = _popBackStack.asStateFlow() + + fun handledPop() { + _popBackStack.update { null } + } + + override fun handledReturnResult() { + _onReturnResult.update { null } + } + override fun handledEvent() { _navigate.update { null } } - override fun handledResult() { + override fun handledNavResult() { _onNavResult.update { null } } @@ -71,7 +77,6 @@ class NavigationViewModelImpl : NavigationViewModel { // wait for the view to collect so navigating can happen _navigate.subscriptionCount.first { it > 0 } - currentDestination = event _navigate.emit(event) } @@ -80,31 +85,32 @@ class NavigationViewModelImpl : NavigationViewModel { } override suspend fun popBackStack() { - currentDestination?.let { currentDestination -> - _onNavResult.subscriptionCount.first { it > 0 } - _onNavResult.emit(NavResult(currentDestination.key, Unit)) - } + _popBackStack.value = Unit } - override suspend fun popBackStackWithResult(result: Any?) { - currentDestination?.let { currentDestination -> - _onNavResult.subscriptionCount.first { it > 0 } - _onNavResult.emit(NavResult(currentDestination.key, result)) - } + /** + * @param data The data in String or JSON format to return. + */ + override suspend fun popBackStackWithResult(data: String) { + _onReturnResult.subscriptionCount.first { it > 0 } + _onReturnResult.emit(data) } } interface NavigationViewModel { - val navigate: SharedFlow - val onNavResult: SharedFlow + val navigate: StateFlow + suspend fun navigate(event: NavigateEvent) + fun handledEvent() + val onNavResult: StateFlow fun onNavResult(result: NavResult) - suspend fun popBackStackWithResult(result: Any?) - suspend fun popBackStack() - fun handledResult() + fun handledNavResult() - suspend fun navigate(event: NavigateEvent) - fun handledEvent() + val onReturnResult: StateFlow + fun handledReturnResult() + + suspend fun popBackStackWithResult(data: String) + suspend fun popBackStack() } suspend inline fun NavigationViewModel.navigate( @@ -121,9 +127,10 @@ suspend inline fun NavigationViewModel.navigate( */ return merge( navigate.drop(1).filterNotNull().dropWhile { it.key != key }.map { null }, - onNavResult.filterNotNull().dropWhile { it.result !is R? && it.key != key } - .map { it.result }, - ).first() as R? + onNavResult.filterNotNull() + .dropWhile { it.key != key } + .map { result -> result.data?.let { Json.decodeFromString(it) } }, + ).first() } /** @@ -166,9 +173,6 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { } } - val navDirectionProvider = - EntryPointAccessors.fromFragment(fragment).provider() - navigate .filterNotNull() .filter { !it.destination.isCompose } @@ -182,14 +186,88 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { fragment.setFragmentResultListener(requestKey) { _, bundle -> pendingResults.remove(event.key) sendNavResultFromBundle(event.key, event.destination.id, bundle) + handledNavResult() } - val direction = navDirectionProvider.getDirection(destination, requestKey) + val direction = getDirection(destination, requestKey) fragment.findNavController().navigate(direction) + handledEvent() }.launchIn(fragment.lifecycleScope) } +private fun getDirection(destination: NavDestination<*>, requestKey: String): NavDirections { + return when (destination) { + is NavDestination.ChooseApp -> NavBaseAppDirections.chooseApp( + destination.allowHiddenApps, + requestKey, + ) + + NavDestination.ChooseAppShortcut -> NavBaseAppDirections.chooseAppShortcut(requestKey) + NavDestination.ChooseKeyCode -> NavBaseAppDirections.chooseKeyCode(requestKey) + is NavDestination.ConfigKeyEventAction -> { + val json = destination.action?.let { + Json.encodeToString(it) + } + + NavBaseAppDirections.configKeyEvent(requestKey, json) + } + + is NavDestination.PickCoordinate -> { + val json = destination.result?.let { + Json.encodeToString(it) + } + + NavBaseAppDirections.pickDisplayCoordinate(requestKey, json) + } + + is NavDestination.PickSwipeCoordinate -> { + val json = destination.result?.let { + Json.encodeToString(it) + } + + NavBaseAppDirections.swipePickDisplayCoordinate(requestKey, json) + } + + is NavDestination.PickPinchCoordinate -> { + val json = destination.result?.let { + Json.encodeToString(it) + } + + NavBaseAppDirections.pinchPickDisplayCoordinate(requestKey, json) + } + + is NavDestination.ConfigIntent -> { + val json = destination.result?.let { + Json.encodeToString(it) + } + + NavBaseAppDirections.configIntent(requestKey, json) + } + + is NavDestination.ChooseActivity -> NavBaseAppDirections.chooseActivity(requestKey) + is NavDestination.ChooseSound -> NavBaseAppDirections.chooseSoundFile(requestKey) + is NavDestination.ChooseConstraint -> NavBaseAppDirections.chooseConstraint( + requestKey = requestKey, + ) + + is NavDestination.ChooseBluetoothDevice -> NavBaseAppDirections.chooseBluetoothDevice( + requestKey, + ) + + NavDestination.About -> NavBaseAppDirections.actionGlobalAboutFragment() + NavDestination.Settings -> NavBaseAppDirections.toSettingsFragment() + + NavDestination.ShizukuSettings -> NavBaseAppDirections.toShizukuSettingsFragment() + is NavDestination.InteractUiElement -> NavBaseAppDirections.interactUiElement( + requestKey = requestKey, + action = destination.action?.let { Json.encodeToString(destination.action) }, + ) + + else -> throw IllegalArgumentException("Can not find a direction for this destination: $destination") + } +} + fun NavigationViewModel.sendNavResultFromBundle( requestKey: String, destinationId: String, @@ -199,98 +277,84 @@ fun NavigationViewModel.sendNavResultFromBundle( NavDestination.ID_CHOOSE_APP -> { val packageName = bundle.getString(ChooseAppFragment.EXTRA_PACKAGE_NAME) - onNavResult(NavResult(requestKey, packageName!!)) + onNavResult(NavResult(requestKey, Json.encodeToString(packageName!!))) } NavDestination.ID_CHOOSE_APP_SHORTCUT -> { - val result = bundle.getJsonSerializable( - ChooseAppShortcutFragment.EXTRA_RESULT, - ) + val json = bundle.getString(ChooseAppShortcutFragment.EXTRA_RESULT) - onNavResult(NavResult(requestKey, result)) + onNavResult(NavResult(requestKey, json)) } NavDestination.ID_KEY_CODE -> { - val keyCode = - bundle.getInt(ChooseKeyCodeFragment.EXTRA_KEYCODE) + val keyCode = bundle.getInt(ChooseKeyCodeFragment.EXTRA_KEYCODE) - onNavResult(NavResult(requestKey, keyCode)) + onNavResult(NavResult(requestKey, Json.encodeToString(keyCode))) } NavDestination.ID_KEY_EVENT -> { val json = bundle.getString(ConfigKeyEventActionFragment.EXTRA_RESULT)!! - val keyEventAction = Json.decodeFromString(json) - onNavResult(NavResult(requestKey, keyEventAction)) + onNavResult(NavResult(requestKey, json)) } NavDestination.ID_PICK_COORDINATE -> { val json = bundle.getString(PickDisplayCoordinateFragment.EXTRA_RESULT)!! - val result = Json.decodeFromString(json) - onNavResult(NavResult(requestKey, result)) + onNavResult(NavResult(requestKey, json)) } NavDestination.ID_PICK_SWIPE_COORDINATE -> { val json = bundle.getString(SwipePickDisplayCoordinateFragment.EXTRA_RESULT)!! - val result = Json.decodeFromString(json) - onNavResult(NavResult(requestKey, result)) + onNavResult(NavResult(requestKey, json)) } NavDestination.ID_PICK_PINCH_COORDINATE -> { val json = bundle.getString(PinchPickDisplayCoordinateFragment.EXTRA_RESULT)!! - val result = Json.decodeFromString(json) - onNavResult(NavResult(requestKey, result)) + onNavResult(NavResult(requestKey, json)) } NavDestination.ID_CONFIG_INTENT -> { val json = bundle.getString(ConfigIntentFragment.EXTRA_RESULT)!! - val result = Json.decodeFromString(json) - onNavResult(NavResult(requestKey, result)) + onNavResult(NavResult(requestKey, json)) } NavDestination.ID_CHOOSE_ACTIVITY -> { val json = bundle.getString(ChooseActivityFragment.EXTRA_RESULT)!! - val result = Json.decodeFromString(json) - onNavResult(NavResult(requestKey, result)) + onNavResult(NavResult(requestKey, json)) } NavDestination.ID_CHOOSE_SOUND -> { val json = bundle.getString(ChooseSoundFileFragment.EXTRA_RESULT)!! - val result = Json.decodeFromString(json) - onNavResult(NavResult(requestKey, result)) - } - - NavDestination.ID_CHOOSE_ACTION -> { - val json = bundle.getString(ChooseActionFragment.EXTRA_ACTION)!! - val action = Json.decodeFromString(json) - - onNavResult(NavResult(requestKey, action)) + onNavResult(NavResult(requestKey, json)) } NavDestination.ID_CHOOSE_CONSTRAINT -> { val json = bundle.getString(ChooseConstraintFragment.EXTRA_CONSTRAINT)!! - val constraint = Json.decodeFromString(json) - onNavResult(NavResult(requestKey, constraint)) + onNavResult(NavResult(requestKey, json)) } NavDestination.ID_CHOOSE_BLUETOOTH_DEVICE -> { val address = bundle.getString(ChooseBluetoothDeviceFragment.EXTRA_ADDRESS)!! val name = bundle.getString(ChooseBluetoothDeviceFragment.EXTRA_NAME)!! - onNavResult(NavResult(requestKey, BluetoothDeviceInfo(address, name))) + onNavResult( + NavResult( + requestKey, + Json.encodeToString(BluetoothDeviceInfo(address, name)), + ), + ) } NavDestination.ID_INTERACT_UI_ELEMENT_ACTION -> { val json = bundle.getString(InteractUiElementFragment.EXTRA_ACTION)!! - val result = Json.decodeFromString(json) - onNavResult(NavResult(requestKey, result)) + onNavResult(NavResult(requestKey, json)) } } } diff --git a/base/src/main/res/navigation/nav_base_app.xml b/base/src/main/res/navigation/nav_base_app.xml index 43d52ea28b..b3e22e581c 100644 --- a/base/src/main/res/navigation/nav_base_app.xml +++ b/base/src/main/res/navigation/nav_base_app.xml @@ -19,14 +19,6 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nav_base_app"> - - - - - From 6a28a91322dbfee8202d06a0b593ac7cf33f2266 Mon Sep 17 00:00:00 2001 From: sds100 Date: Thu, 22 May 2025 18:29:04 +0200 Subject: [PATCH 35/71] #1711 inject popupviewmodel --- .../io/github/sds100/keymapper/MainFragment.kt | 12 +++++++----- .../sds100/keymapper/home/HomeViewModel.kt | 3 +++ .../keymapper/keymaps/ConfigKeyMapViewModel.kt | 17 +++++++++++------ .../keymapper/trigger/ConfigTriggerViewModel.kt | 7 +++++-- .../keymapper/base/BaseSingletonHiltModule.kt | 6 ++++++ .../base/actions/ChooseActionViewModel.kt | 10 +++++----- .../base/actions/ConfigActionsViewModel.kt | 5 +++-- .../constraints/ConfigConstraintsViewModel.kt | 3 ++- .../keymapper/base/home/BaseHomeViewModel.kt | 7 ++++--- .../base/keymaps/ConfigKeyMapViewModel.kt | 5 ++++- .../base/keymaps/KeyMapListViewModel.kt | 3 ++- .../base/trigger/BaseConfigTriggerViewModel.kt | 5 +++-- .../keymapper/base/utils/ui/PopupViewModel.kt | 10 +++++++++- 13 files changed, 64 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt index 13606c6ade..bb12c6d858 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt @@ -26,6 +26,8 @@ import io.github.sds100.keymapper.base.utils.navigation.NavResult import io.github.sds100.keymapper.base.utils.navigation.NavigateEvent import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.navigation.setupNavigation +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.showPopups import javax.inject.Inject @AndroidEntryPoint @@ -34,10 +36,14 @@ class MainFragment : Fragment() { @Inject lateinit var navigationProvider: NavigationViewModelImpl + @Inject + lateinit var popupViewModel: PopupViewModelImpl + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) navigationProvider.setupNavigation(this) + } override fun onCreateView( @@ -135,10 +141,6 @@ class MainFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - // TODO -// homeViewModel.showPopups(this, view) -// homeViewModel.keyMapListViewModel.showPopups(this, view) - // TODO -// homeViewModel.listFloatingLayoutsViewModel.showPopups(this, view) + popupViewModel.showPopups(this, view) } } diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt index 422c14e759..02b8fee0d6 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt @@ -11,6 +11,7 @@ import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.BuildConfigProvider import javax.inject.Inject @@ -28,6 +29,7 @@ class HomeViewModel @Inject constructor( private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val buildConfigProvider: BuildConfigProvider, navigationViewModel: NavigationViewModel, + popupViewModel: PopupViewModel ) : BaseHomeViewModel( listKeyMaps, pauseKeyMaps, @@ -40,4 +42,5 @@ class HomeViewModel @Inject constructor( showInputMethodPickerUseCase, buildConfigProvider, navigationViewModel, + popupViewModel ) diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt index a0480b314e..7ef14ab1c1 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt @@ -16,9 +16,9 @@ import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.trigger.ConfigTriggerViewModel -import timber.log.Timber import javax.inject.Inject @HiltViewModel @@ -34,11 +34,13 @@ class ConfigKeyMapViewModel @Inject constructor( setupGuiKeyboardUseCase: SetupGuiKeyboardUseCase, fingerprintGesturesSupportedUseCase: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, - navigationViewModel: NavigationViewModel + navigationViewModel: NavigationViewModel, + popupViewModel: PopupViewModel, ) : BaseConfigKeyMapViewModel( config = config, onboarding = onboarding, - navigationViewModel = navigationViewModel + navigationViewModel = navigationViewModel, + popupViewModel = popupViewModel, ) { override val configActionsViewModel: ConfigActionsViewModel = ConfigActionsViewModel( coroutineScope = viewModelScope, @@ -48,7 +50,8 @@ class ConfigKeyMapViewModel @Inject constructor( config = config, onboarding = onboarding, resourceProvider = resourceProvider, - navigationViewModel = navigationViewModel + navigationViewModel = navigationViewModel, + popupViewModel = popupViewModel, ) override val configTriggerViewModel: ConfigTriggerViewModel = ConfigTriggerViewModel( @@ -62,7 +65,8 @@ class ConfigKeyMapViewModel @Inject constructor( setupGuiKeyboard = setupGuiKeyboardUseCase, fingerprintGesturesSupported = fingerprintGesturesSupportedUseCase, resourceProvider = resourceProvider, - navigationViewModel = navigationViewModel + navigationViewModel = navigationViewModel, + popupViewModel = popupViewModel, ) override val configConstraintsViewModel: ConfigConstraintsViewModel = @@ -71,6 +75,7 @@ class ConfigKeyMapViewModel @Inject constructor( config = config, displayConstraint = display, resourceProvider = resourceProvider, - navigationViewModel = navigationViewModel + navigationViewModel = navigationViewModel, + popupViewModel = popupViewModel, ) } diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt index 840c81e19c..9140d115b2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt @@ -10,6 +10,7 @@ import io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import javax.inject.Inject @@ -25,7 +26,8 @@ class ConfigTriggerViewModel @Inject constructor( private val setupGuiKeyboard: SetupGuiKeyboardUseCase, private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, - navigationViewModel: NavigationViewModel + navigationViewModel: NavigationViewModel, + popupViewModel: PopupViewModel, ) : BaseConfigTriggerViewModel( coroutineScope = coroutineScope, onboarding = onboarding, @@ -37,7 +39,8 @@ class ConfigTriggerViewModel @Inject constructor( setupGuiKeyboard = setupGuiKeyboard, fingerprintGesturesSupported = fingerprintGesturesSupported, resourceProvider = resourceProvider, - navigationViewModel = navigationViewModel + navigationViewModel = navigationViewModel, + popupViewModel = popupViewModel, ) { override fun onEditFloatingButtonClick() {} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt index 69a88eeade..4501892f70 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt @@ -40,6 +40,8 @@ import io.github.sds100.keymapper.base.trigger.RecordTriggerController import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProviderImpl import io.github.sds100.keymapper.common.utils.DefaultUuidGenerator @@ -134,4 +136,8 @@ abstract class BaseSingletonHiltModule { @Binds @Singleton abstract fun bindNavigationProvider(impl: NavigationViewModelImpl): NavigationViewModel + + @Binds + @Singleton + abstract fun bindPopupViewModel(impl: PopupViewModelImpl): PopupViewModel } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index c727f3c6a2..e0e8d01ceb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -10,7 +10,6 @@ import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemGroup @@ -34,11 +33,12 @@ import javax.inject.Inject @HiltViewModel class ChooseActionViewModel @Inject constructor( private val useCase: CreateActionUseCase, - private val resourceProvider: ResourceProvider, - private val navigationViewModel: NavigationViewModel, + resourceProvider: ResourceProvider, + navigationViewModel: NavigationViewModel, + popupViewModel: PopupViewModel, ) : ViewModel(), ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl(), + PopupViewModel by popupViewModel, NavigationViewModel by navigationViewModel { companion object { @@ -97,7 +97,7 @@ class ChooseActionViewModel @Inject constructor( val approvedMessage = showMessageForAction(actionId) if (!approvedMessage) { - showMessageForAction(actionId) + return@launch } createActionDelegate.createAction(actionId) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index 96c852c903..15be5fa0be 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -51,10 +51,11 @@ class ConfigActionsViewModel constructor( private val config: ConfigKeyMapUseCase, private val onboarding: OnboardingUseCase, resourceProvider: ResourceProvider, - navigationViewModel: NavigationViewModel + navigationViewModel: NavigationViewModel, + popupViewModel: PopupViewModel, ) : ActionOptionsBottomSheetCallback, ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl(), + PopupViewModel by popupViewModel, NavigationViewModel by navigationViewModel { val createActionDelegate = diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index 9309ddbae2..81f0550c19 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -41,8 +41,9 @@ class ConfigConstraintsViewModel( private val displayConstraint: DisplayConstraintUseCase, resourceProvider: ResourceProvider, navigationViewModel: NavigationViewModel, + popupViewModel: PopupViewModel, ) : ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl(), + PopupViewModel by popupViewModel, NavigationViewModel by navigationViewModel { private val uiHelper = ConstraintUiHelper(displayConstraint, resourceProvider) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt index 94b87a9808..424a218c67 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt @@ -22,7 +22,6 @@ import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showPopup import io.github.sds100.keymapper.common.BuildConfigProvider @@ -41,9 +40,10 @@ abstract class BaseHomeViewModel( private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val buildConfigProvider: BuildConfigProvider, navigationViewModel: NavigationViewModel, + popupViewModel: PopupViewModel, ) : ViewModel(), ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl(), + PopupViewModel by popupViewModel, NavigationViewModel by navigationViewModel { val keyMapListViewModel by lazy { @@ -58,7 +58,8 @@ abstract class BaseHomeViewModel( backupRestore, showInputMethodPickerUseCase, onboarding, - navigationViewModel + navigationViewModel, + popupViewModel, ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt index 089a26ec0b..2f9b92c864 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt @@ -8,6 +8,7 @@ import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.common.utils.dataOrNull import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow @@ -20,8 +21,10 @@ abstract class BaseConfigKeyMapViewModel( private val config: ConfigKeyMapUseCase, private val onboarding: OnboardingUseCase, navigationViewModel: NavigationViewModel, + popupViewModel: PopupViewModel, ) : ViewModel(), - NavigationViewModel by navigationViewModel { + NavigationViewModel by navigationViewModel, + PopupViewModel by popupViewModel { abstract val configActionsViewModel: ConfigActionsViewModel abstract val configTriggerViewModel: BaseConfigTriggerViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index 8dec478dbf..18afa737e3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -86,7 +86,8 @@ class KeyMapListViewModel( private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val onboarding: OnboardingUseCase, private val navigationProvider: NavigationViewModel, -) : PopupViewModel by PopupViewModelImpl(), + private val popupViewModel: PopupViewModel +) : PopupViewModel by popupViewModel, ResourceProvider by resourceProvider, NavigationViewModel by navigationProvider { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index 5934e11bfb..322cbe16b6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -74,9 +74,10 @@ abstract class BaseConfigTriggerViewModel( private val setupGuiKeyboard: SetupGuiKeyboardUseCase, private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, - navigationViewModel: NavigationViewModel + navigationViewModel: NavigationViewModel, + popupViewModel: PopupViewModel, ) : ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl(), + PopupViewModel by popupViewModel, NavigationViewModel by navigationViewModel { companion object { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt index 62186d97cf..38b4d63594 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt @@ -24,8 +24,13 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.runBlocking +import timber.log.Timber +import javax.inject.Inject +import javax.inject.Singleton -class PopupViewModelImpl : PopupViewModel { +// TODO Rename DialogProvider +@Singleton +class PopupViewModelImpl @Inject constructor() : PopupViewModel { private val _onUserResponse by lazy { MutableSharedFlow() } override val onUserResponse by lazy { _onUserResponse.asSharedFlow() } @@ -35,12 +40,15 @@ class PopupViewModelImpl : PopupViewModel { override suspend fun showPopup(event: ShowPopupEvent) { // wait for the view to collect so no dialogs are missed + Timber.e("SHOW POPUP ${event}") getUserResponse.subscriptionCount.first { it > 0 } getUserResponse.emit(event) } override fun onUserResponse(event: OnPopupResponseEvent) { + Timber.e("ON USER RESPONSE ${event}") + runBlocking { _onUserResponse.emit(event) } } } From 236f70169d7a71f87479069bd6407fb62c13b440 Mon Sep 17 00:00:00 2001 From: sds100 Date: Fri, 23 May 2025 22:55:52 +0200 Subject: [PATCH 36/71] #1711 move InteractUiElementScreen into compose navigation --- .../github/sds100/keymapper/MainFragment.kt | 1 - .../io/github/sds100/keymapper/MainNavHost.kt | 32 +++++- .../accessibility/MyAccessibilityService.kt | 4 +- .../keymapper/base/actions/ActionData.kt | 3 +- .../base/actions/CreateActionDelegate.kt | 3 +- .../uielement/InteractUiElementFragment.kt | 100 ------------------ .../uielement/InteractUiElementScreen.kt | 3 +- .../uielement/InteractUiElementViewModel.kt | 24 +++-- .../base/utils/navigation/NavDestination.kt | 2 +- .../base/utils/navigation/NavigationUtils.kt | 3 +- .../utils/navigation/NavigationViewModel.kt | 11 -- .../keymapper/base/utils/ui/PopupViewModel.kt | 4 - 12 files changed, 53 insertions(+), 137 deletions(-) delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt index bb12c6d858..66a0a04f94 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt @@ -43,7 +43,6 @@ class MainFragment : Fragment() { super.onCreate(savedInstanceState) navigationProvider.setupNavigation(this) - } override fun onCreateView( diff --git a/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt b/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt index 760ccad553..fe6e408178 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt @@ -1,5 +1,6 @@ package io.github.sds100.keymapper +import androidx.compose.animation.AnimatedContentTransitionScope import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsetsSides import androidx.compose.foundation.layout.add @@ -19,12 +20,15 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import io.github.sds100.keymapper.base.actions.ChooseActionScreen import io.github.sds100.keymapper.base.actions.ChooseActionViewModel +import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementScreen +import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementViewModel import io.github.sds100.keymapper.base.home.HomeKeyMapListScreen import io.github.sds100.keymapper.base.utils.navigation.NavDestination -import io.github.sds100.keymapper.base.utils.navigation.handleRoute +import io.github.sds100.keymapper.base.utils.navigation.handleRouteArgs import io.github.sds100.keymapper.home.HomeViewModel import io.github.sds100.keymapper.keymaps.ConfigKeyMapScreen import io.github.sds100.keymapper.keymaps.ConfigKeyMapViewModel +import kotlinx.serialization.json.Json @Composable fun MainNavHost( @@ -38,6 +42,10 @@ fun MainNavHost( modifier = modifier, navController = navController, startDestination = NavDestination.Home, + enterTransition = { slideIntoContainer(towards = AnimatedContentTransitionScope.SlideDirection.Left) }, + exitTransition = { slideOutOfContainer(towards = AnimatedContentTransitionScope.SlideDirection.Right) }, + popEnterTransition = { slideIntoContainer(towards = AnimatedContentTransitionScope.SlideDirection.Right) }, + popExitTransition = { slideOutOfContainer(towards = AnimatedContentTransitionScope.SlideDirection.Right) }, ) { composable { val viewModel: HomeViewModel = hiltViewModel() @@ -56,7 +64,7 @@ fun MainNavHost( composable { backStackEntry -> val viewModel: ConfigKeyMapViewModel = hiltViewModel() - backStackEntry.handleRoute { args -> + backStackEntry.handleRouteArgs { args -> viewModel.loadNewKeyMap(groupUid = args.groupUid) if (args.showAdvancedTriggers) { @@ -73,7 +81,7 @@ fun MainNavHost( composable { backStackEntry -> val viewModel: ConfigKeyMapViewModel = hiltViewModel() - backStackEntry.handleRoute { args -> + backStackEntry.handleRouteArgs { args -> viewModel.loadKeyMap(uid = args.keyMapUid) if (args.showAdvancedTriggers) { @@ -100,5 +108,23 @@ fun MainNavHost( viewModel = viewModel, ) } + + composable { backStackEntry -> + val viewModel: InteractUiElementViewModel = hiltViewModel() + + backStackEntry.handleRouteArgs { destination -> + destination.actionJson?.let { viewModel.loadAction(Json.decodeFromString(it)) } + } + + InteractUiElementScreen( + modifier = Modifier + .fillMaxSize() + .windowInsetsPadding( + WindowInsets.systemBars.only(sides = WindowInsetsSides.Horizontal) + .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), + ), + viewModel = viewModel, + ) + } } } diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt index 58f079d5e5..1472e38be9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt @@ -97,8 +97,8 @@ class MyAccessibilityService : BaseAccessibilityService() { controller = AccessibilityServiceController( coroutineScope = coroutineScope, accessibilityService = this, - inputEvents = accessibilityServiceAdapter.eventReceiver, - outputEvents = accessibilityServiceAdapter.eventsToService, + inputEvents = accessibilityServiceAdapter.eventsToService, + outputEvents = accessibilityServiceAdapter.eventReceiver, detectConstraintsUseCase = detectConstraintsUseCaseFactory.create(this), performActionsUseCase = performActionsUseCaseFactory.create( accessibilityService = this, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt index ef2ddd5384..44f7dea393 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt @@ -1,15 +1,16 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.common.utils.NodeInteractionType +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.common.utils.PinchScreenType import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.system.intents.IntentExtraModel import io.github.sds100.keymapper.system.intents.IntentTarget import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.system.volume.DndMode import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.VolumeStream +import kotlinx.parcelize.IgnoredOnParcel import kotlinx.serialization.Serializable @Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index 928968f299..42552df114 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -32,6 +32,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch +import kotlinx.serialization.json.Json class CreateActionDelegate( private val coroutineScope: CoroutineScope, @@ -805,7 +806,7 @@ class CreateActionDelegate( return navigate( "config_interact_ui_element_action", - NavDestination.InteractUiElement(oldAction), + NavDestination.InteractUiElement(oldAction?.let { Json.encodeToString(it) }), ) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt deleted file mode 100644 index 2503c669ba..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementFragment.kt +++ /dev/null @@ -1,100 +0,0 @@ -package io.github.sds100.keymapper.base.actions.uielement - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.WindowInsetsSides -import androidx.compose.foundation.layout.add -import androidx.compose.foundation.layout.displayCutout -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.only -import androidx.compose.foundation.layout.systemBars -import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.ViewCompositionStrategy -import androidx.core.os.bundleOf -import androidx.fragment.app.Fragment -import androidx.fragment.app.setFragmentResult -import androidx.fragment.app.viewModels -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.withStateAtLeast -import androidx.navigation.fragment.findNavController -import androidx.navigation.fragment.navArgs -import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showPopups -import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.launch -import kotlinx.serialization.json.Json - -@AndroidEntryPoint -class InteractUiElementFragment : Fragment() { - - companion object { - const val EXTRA_ACTION = "extra_action" - } - - private val args: InteractUiElementFragmentArgs by navArgs() - - private val viewModel: InteractUiElementViewModel by viewModels() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - args.action?.let { argsAction -> viewModel.loadAction(Json.decodeFromString(argsAction)) } - - launchRepeatOnLifecycle(Lifecycle.State.CREATED) { - viewModel.returnAction.collectLatest { action -> - viewLifecycleScope.launch { - withStateAtLeast(Lifecycle.State.RESUMED) { - setFragmentResult( - args.requestKey, - bundleOf(EXTRA_ACTION to Json.encodeToString(action)), - ) - findNavController().navigateUp() - } - } - } - } - } - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle?, - ): View { - FragmentComposeBinding.inflate(inflater, container, false).apply { - composeView.apply { - // Dispose of the Composition when the view's LifecycleOwner - // is destroyed - setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) - setContent { - KeyMapperTheme { - InteractUiElementScreen( - modifier = Modifier - .fillMaxSize() - .windowInsetsPadding( - WindowInsets.systemBars.only(sides = WindowInsetsSides.Horizontal) - .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), - ), - viewModel = viewModel, - navigateBack = findNavController()::navigateUp, - ) - } - } - } - return this.root - } - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - viewModel.showPopups(this, view) - } -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt index 5e211b73c5..30c0d792c5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementScreen.kt @@ -93,7 +93,6 @@ private const val DEST_SELECT_ELEMENT = "select_element" fun InteractUiElementScreen( modifier: Modifier = Modifier, viewModel: InteractUiElementViewModel, - navigateBack: () -> Unit, ) { val navController = rememberNavController() @@ -108,7 +107,7 @@ fun InteractUiElementScreen( val onBackClick = { if (!navController.navigateUp()) { - navigateBack() + viewModel.onBackClick() } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt index d22553641a..c37406a0e7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt @@ -9,8 +9,8 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.system.accessibility.RecordAccessibilityNodeState import io.github.sds100.keymapper.base.utils.containsQuery +import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @@ -28,12 +28,9 @@ import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filterNotNull @@ -43,20 +40,21 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch +import kotlinx.serialization.json.Json import java.util.Locale import javax.inject.Inject @HiltViewModel class InteractUiElementViewModel @Inject constructor( private val useCase: InteractUiElementUseCase, - private val resourceProvider: ResourceProvider, + resourceProvider: ResourceProvider, + popupViewModel: PopupViewModel, + navigationViewModel: NavigationViewModel, ) : ViewModel(), - PopupViewModel by PopupViewModelImpl(), + NavigationViewModel by navigationViewModel, + PopupViewModel by popupViewModel, ResourceProvider by resourceProvider { - private val _returnAction: MutableSharedFlow = MutableSharedFlow() - val returnAction: SharedFlow = _returnAction.asSharedFlow() - val recordState: StateFlow> = combine( useCase.recordState, useCase.interactionCount, @@ -253,7 +251,13 @@ class InteractUiElementViewModel @Inject constructor( ) viewModelScope.launch { - _returnAction.emit(action) + popBackStackWithResult(Json.encodeToString(action)) + } + } + + fun onBackClick() { + viewModelScope.launch { + popBackStack() } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt index 40e6764ab3..ccfde47ab6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt @@ -149,7 +149,7 @@ sealed class NavDestination(val isCompose: Boolean = false) { } @Serializable - data class InteractUiElement(val action: ActionData.InteractUiElement?) : NavDestination() { + data class InteractUiElement(val actionJson: String?) : NavDestination(isCompose = true) { override val id: String = ID_INTERACT_UI_ELEMENT_ACTION } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt index 1a12ad9526..926269c378 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt @@ -36,12 +36,13 @@ fun NavController.setCurrentDestinationLiveData(key: String, value: T) { } } -inline fun NavBackStackEntry.handleRoute(block: (R) -> Unit) { +inline fun NavBackStackEntry.handleRouteArgs(block: (R) -> Unit) { if ( savedStateHandle.contains("handled_args") ) { return } + val args = toRoute() block(args) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt index 52f03f1370..0bb67322a6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt @@ -15,7 +15,6 @@ import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickDisplayCoord import io.github.sds100.keymapper.base.actions.sound.ChooseSoundFileFragment import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickDisplayCoordinateFragment import io.github.sds100.keymapper.base.actions.tapscreen.PickDisplayCoordinateFragment -import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementFragment import io.github.sds100.keymapper.base.constraints.ChooseConstraintFragment import io.github.sds100.keymapper.base.system.apps.ChooseActivityFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppFragment @@ -38,7 +37,6 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.update import kotlinx.coroutines.runBlocking import kotlinx.serialization.json.Json -import timber.log.Timber import javax.inject.Inject import javax.inject.Singleton @@ -259,10 +257,6 @@ private fun getDirection(destination: NavDestination<*>, requestKey: String): Na NavDestination.Settings -> NavBaseAppDirections.toSettingsFragment() NavDestination.ShizukuSettings -> NavBaseAppDirections.toShizukuSettingsFragment() - is NavDestination.InteractUiElement -> NavBaseAppDirections.interactUiElement( - requestKey = requestKey, - action = destination.action?.let { Json.encodeToString(destination.action) }, - ) else -> throw IllegalArgumentException("Can not find a direction for this destination: $destination") } @@ -351,10 +345,5 @@ fun NavigationViewModel.sendNavResultFromBundle( ), ) } - - NavDestination.ID_INTERACT_UI_ELEMENT_ACTION -> { - val json = bundle.getString(InteractUiElementFragment.EXTRA_ACTION)!! - onNavResult(NavResult(requestKey, json)) - } } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt index 38b4d63594..8fb4ad286e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt @@ -24,7 +24,6 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.runBlocking -import timber.log.Timber import javax.inject.Inject import javax.inject.Singleton @@ -40,15 +39,12 @@ class PopupViewModelImpl @Inject constructor() : PopupViewModel { override suspend fun showPopup(event: ShowPopupEvent) { // wait for the view to collect so no dialogs are missed - Timber.e("SHOW POPUP ${event}") getUserResponse.subscriptionCount.first { it > 0 } getUserResponse.emit(event) } override fun onUserResponse(event: OnPopupResponseEvent) { - Timber.e("ON USER RESPONSE ${event}") - runBlocking { _onUserResponse.emit(event) } } } From b198196a0d09ed8f0c2a306f71a5f080013cd439 Mon Sep 17 00:00:00 2001 From: sds100 Date: Fri, 23 May 2025 23:06:06 +0200 Subject: [PATCH 37/71] #1711 move choose constraint screen into compose navigation --- .../io/github/sds100/keymapper/MainNavHost.kt | 32 +++--- .../keymapper/base/BaseViewModelHiltModule.kt | 6 ++ .../constraints/ChooseConstraintFragment.kt | 101 ------------------ .../constraints/ChooseConstraintScreen.kt | 3 +- .../constraints/ChooseConstraintViewModel.kt | 42 ++++---- .../constraints/CreateConstraintUseCase.kt | 3 +- .../base/utils/navigation/NavDestination.kt | 2 +- .../utils/navigation/NavigationViewModel.kt | 10 -- base/src/main/res/navigation/nav_base_app.xml | 40 ------- 9 files changed, 47 insertions(+), 192 deletions(-) delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt b/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt index fe6e408178..19a7a1a28e 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt @@ -1,14 +1,7 @@ package io.github.sds100.keymapper import androidx.compose.animation.AnimatedContentTransitionScope -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.WindowInsetsSides -import androidx.compose.foundation.layout.add -import androidx.compose.foundation.layout.displayCutout import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.only -import androidx.compose.foundation.layout.systemBars -import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.material3.SnackbarHostState import androidx.compose.runtime.Composable import androidx.compose.runtime.remember @@ -22,6 +15,8 @@ import io.github.sds100.keymapper.base.actions.ChooseActionScreen import io.github.sds100.keymapper.base.actions.ChooseActionViewModel import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementScreen import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementViewModel +import io.github.sds100.keymapper.base.constraints.ChooseConstraintScreen +import io.github.sds100.keymapper.base.constraints.ChooseConstraintViewModel import io.github.sds100.keymapper.base.home.HomeKeyMapListScreen import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.handleRouteArgs @@ -99,12 +94,7 @@ fun MainNavHost( val viewModel: ChooseActionViewModel = hiltViewModel() ChooseActionScreen( - modifier = Modifier - .fillMaxSize() - .windowInsetsPadding( - WindowInsets.systemBars.only(sides = WindowInsetsSides.Horizontal) - .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), - ), + modifier = Modifier.fillMaxSize(), viewModel = viewModel, ) } @@ -117,12 +107,16 @@ fun MainNavHost( } InteractUiElementScreen( - modifier = Modifier - .fillMaxSize() - .windowInsetsPadding( - WindowInsets.systemBars.only(sides = WindowInsetsSides.Horizontal) - .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), - ), + modifier = Modifier.fillMaxSize(), + viewModel = viewModel, + ) + } + + composable { + val viewModel: ChooseConstraintViewModel = hiltViewModel() + + ChooseConstraintScreen( + modifier = Modifier.fillMaxSize(), viewModel = viewModel, ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt index 0723f9d50c..526b59f6e7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseViewModelHiltModule.kt @@ -15,6 +15,8 @@ import io.github.sds100.keymapper.base.actions.sound.ChooseSoundFileUseCase import io.github.sds100.keymapper.base.actions.sound.ChooseSoundFileUseCaseImpl import io.github.sds100.keymapper.base.backup.BackupRestoreMappingsUseCase import io.github.sds100.keymapper.base.backup.BackupRestoreMappingsUseCaseImpl +import io.github.sds100.keymapper.base.constraints.CreateConstraintUseCase +import io.github.sds100.keymapper.base.constraints.CreateConstraintUseCaseImpl import io.github.sds100.keymapper.base.home.ShowHomeScreenAlertsUseCase import io.github.sds100.keymapper.base.home.ShowHomeScreenAlertsUseCaseImpl import io.github.sds100.keymapper.base.keymaps.CreateKeyMapShortcutUseCase @@ -104,4 +106,8 @@ abstract class BaseViewModelHiltModule { @Binds @ViewModelScoped abstract fun bindCreateActionUseCase(impl: CreateActionUseCaseImpl): CreateActionUseCase + + @Binds + @ViewModelScoped + abstract fun bindCreateConstraintUseCase(impl: CreateConstraintUseCaseImpl): CreateConstraintUseCase } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt deleted file mode 100644 index fc45b4640e..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintFragment.kt +++ /dev/null @@ -1,101 +0,0 @@ -package io.github.sds100.keymapper.base.constraints - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.WindowInsetsSides -import androidx.compose.foundation.layout.add -import androidx.compose.foundation.layout.displayCutout -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.only -import androidx.compose.foundation.layout.systemBars -import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.ViewCompositionStrategy -import androidx.core.os.bundleOf -import androidx.fragment.app.Fragment -import androidx.fragment.app.setFragmentResult -import androidx.fragment.app.viewModels -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.withStateAtLeast -import androidx.navigation.fragment.findNavController -import androidx.navigation.fragment.navArgs -import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.navigation.setupNavigation -import io.github.sds100.keymapper.base.utils.ui.showPopups -import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.launch -import kotlinx.serialization.json.Json - -@AndroidEntryPoint -class ChooseConstraintFragment : Fragment() { - - companion object { - const val EXTRA_CONSTRAINT = "extra_constraint" - } - - private val navArgs by navArgs() - - private val viewModel: ChooseConstraintViewModel by viewModels() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - viewModel.setupNavigation(this) - - launchRepeatOnLifecycle(Lifecycle.State.CREATED) { - viewModel.returnResult.collectLatest { constraint -> - viewLifecycleScope.launch { - withStateAtLeast(Lifecycle.State.RESUMED) { - setFragmentResult( - navArgs.requestKey, - bundleOf(EXTRA_CONSTRAINT to Json.encodeToString(constraint)), - ) - findNavController().navigateUp() - } - } - } - } - } - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle?, - ): View { - FragmentComposeBinding.inflate(inflater, container, false).apply { - composeView.apply { - // Dispose of the Composition when the view's LifecycleOwner - // is destroyed - setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) - setContent { - KeyMapperTheme { - ChooseConstraintScreen( - modifier = Modifier - .fillMaxSize() - .windowInsetsPadding( - WindowInsets.systemBars.only(sides = WindowInsetsSides.Horizontal) - .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), - ), - viewModel = viewModel, - onNavigateBack = findNavController()::navigateUp, - ) - } - } - } - return this.root - } - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - viewModel.showPopups(this, view) - } -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt index 5e2ac4ff08..bfaeaa36a9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintScreen.kt @@ -57,7 +57,6 @@ import kotlinx.coroutines.flow.update fun ChooseConstraintScreen( modifier: Modifier = Modifier, viewModel: ChooseConstraintViewModel, - onNavigateBack: () -> Unit, ) { val listItems by viewModel.listItems.collectAsStateWithLifecycle() val query by viewModel.searchQuery.collectAsStateWithLifecycle() @@ -71,7 +70,7 @@ fun ChooseConstraintScreen( onQueryChange = { newQuery -> viewModel.searchQuery.update { newQuery } }, onCloseSearch = { viewModel.searchQuery.update { null } }, onClickAction = viewModel::onListItemClick, - onNavigateBack = onNavigateBack, + onNavigateBack = viewModel::onNavigateBack, ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt index bdedb536e3..e6d17d26cc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt @@ -4,20 +4,18 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.containsQuery import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel -import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.common.utils.State @@ -27,20 +25,24 @@ import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import kotlinx.serialization.json.Json +import javax.inject.Inject -class ChooseConstraintViewModel( +@HiltViewModel +class ChooseConstraintViewModel @Inject constructor( private val useCase: CreateConstraintUseCase, + popupViewModel: PopupViewModel, + navigationViewModel: NavigationViewModel, resourceProvider: ResourceProvider, ) : ViewModel(), ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl(), - NavigationViewModel by NavigationViewModelImpl() { + PopupViewModel by popupViewModel, + NavigationViewModel by navigationViewModel { companion object { private val ALL_CONSTRAINTS_ORDERED: Array = arrayOf( @@ -92,7 +94,6 @@ class ChooseConstraintViewModel( } private val _returnResult = MutableSharedFlow() - val returnResult = _returnResult.asSharedFlow() private val allListItems: List by lazy { buildListItems() } @@ -106,6 +107,14 @@ class ChooseConstraintViewModel( var timeConstraintState: Constraint.Time? by mutableStateOf(null) + init { + viewModelScope.launch { + _returnResult.collect { constraint -> + popBackStackWithResult(Json.encodeToString(constraint)) + } + } + } + fun onDoneConfigTimeConstraintClick() { timeConstraintState?.let { constraint -> viewModelScope.launch { @@ -115,6 +124,12 @@ class ChooseConstraintViewModel( } } + fun onNavigateBack() { + viewModelScope.launch { + popBackStack() + } + } + fun onListItemClick(id: String) { viewModelScope.launch { when (val constraintType = ConstraintId.valueOf(id)) { @@ -420,13 +435,4 @@ class ChooseConstraintViewModel( _returnResult.emit(constraint) } - - @Suppress("UNCHECKED_CAST") - class Factory( - private val isSupported: CreateConstraintUseCase, - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = ChooseConstraintViewModel(isSupported, resourceProvider) as T - } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt index 71a43a32bb..668eccded1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt @@ -13,8 +13,9 @@ import io.github.sds100.keymapper.system.network.NetworkAdapter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map +import javax.inject.Inject -class CreateConstraintUseCaseImpl( +class CreateConstraintUseCaseImpl @Inject constructor( private val networkAdapter: NetworkAdapter, private val inputMethodAdapter: InputMethodAdapter, private val preferenceRepository: PreferenceRepository, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt index ccfde47ab6..d71f000c59 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt @@ -104,7 +104,7 @@ sealed class NavDestination(val isCompose: Boolean = false) { } @Serializable - data object ChooseConstraint : NavDestination() { + data object ChooseConstraint : NavDestination(isCompose = true) { override val id: String = ID_CHOOSE_CONSTRAINT } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt index 0bb67322a6..3db3992863 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt @@ -15,7 +15,6 @@ import io.github.sds100.keymapper.base.actions.pinchscreen.PinchPickDisplayCoord import io.github.sds100.keymapper.base.actions.sound.ChooseSoundFileFragment import io.github.sds100.keymapper.base.actions.swipescreen.SwipePickDisplayCoordinateFragment import io.github.sds100.keymapper.base.actions.tapscreen.PickDisplayCoordinateFragment -import io.github.sds100.keymapper.base.constraints.ChooseConstraintFragment import io.github.sds100.keymapper.base.system.apps.ChooseActivityFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppFragment import io.github.sds100.keymapper.base.system.apps.ChooseAppShortcutFragment @@ -245,9 +244,6 @@ private fun getDirection(destination: NavDestination<*>, requestKey: String): Na is NavDestination.ChooseActivity -> NavBaseAppDirections.chooseActivity(requestKey) is NavDestination.ChooseSound -> NavBaseAppDirections.chooseSoundFile(requestKey) - is NavDestination.ChooseConstraint -> NavBaseAppDirections.chooseConstraint( - requestKey = requestKey, - ) is NavDestination.ChooseBluetoothDevice -> NavBaseAppDirections.chooseBluetoothDevice( requestKey, @@ -328,12 +324,6 @@ fun NavigationViewModel.sendNavResultFromBundle( onNavResult(NavResult(requestKey, json)) } - NavDestination.ID_CHOOSE_CONSTRAINT -> { - val json = bundle.getString(ChooseConstraintFragment.EXTRA_CONSTRAINT)!! - - onNavResult(NavResult(requestKey, json)) - } - NavDestination.ID_CHOOSE_BLUETOOTH_DEVICE -> { val address = bundle.getString(ChooseBluetoothDeviceFragment.EXTRA_ADDRESS)!! val name = bundle.getString(ChooseBluetoothDeviceFragment.EXTRA_NAME)!! diff --git a/base/src/main/res/navigation/nav_base_app.xml b/base/src/main/res/navigation/nav_base_app.xml index b3e22e581c..07927d58f1 100644 --- a/base/src/main/res/navigation/nav_base_app.xml +++ b/base/src/main/res/navigation/nav_base_app.xml @@ -250,24 +250,6 @@ app:argType="string" /> - - - - - - - --> - - - - - - - - \ No newline at end of file From 6e04b60d5c0078daf7e30ba6b55e67830e66b7a4 Mon Sep 17 00:00:00 2001 From: sds100 Date: Fri, 23 May 2025 23:23:59 +0200 Subject: [PATCH 38/71] #1711 rename NavigationViewModel to NavigationProvider and document how it works --- .../github/sds100/keymapper/MainFragment.kt | 12 ++-- .../sds100/keymapper/home/HomeViewModel.kt | 6 +- .../keymaps/ConfigKeyMapViewModel.kt | 12 ++-- .../trigger/ConfigTriggerViewModel.kt | 6 +- .../keymapper/base/ActivityViewModel.kt | 6 +- .../keymapper/base/BaseSingletonHiltModule.kt | 6 +- .../base/actions/ChooseActionViewModel.kt | 6 +- .../base/actions/ConfigActionsViewModel.kt | 29 ++++----- .../base/actions/CreateActionDelegate.kt | 6 +- .../keyevent/ConfigKeyEventActionFragment.kt | 4 +- .../keyevent/ConfigKeyEventActionViewModel.kt | 10 +-- .../uielement/InteractUiElementViewModel.kt | 6 +- .../constraints/ChooseConstraintViewModel.kt | 6 +- .../constraints/ConfigConstraintsViewModel.kt | 7 +-- .../keymapper/base/home/BaseHomeViewModel.kt | 8 +-- .../base/keymaps/ConfigKeyMapViewModel.kt | 6 +- .../base/keymaps/KeyMapListViewModel.kt | 7 +-- .../system/intents/ConfigIntentFragment.kt | 4 +- .../system/intents/ConfigIntentViewModel.kt | 6 +- .../trigger/BaseConfigTriggerViewModel.kt | 8 +-- ...tionViewModel.kt => NavigationProvider.kt} | 62 +++++++++++++------ 21 files changed, 121 insertions(+), 102 deletions(-) rename base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/{NavigationViewModel.kt => NavigationProvider.kt} (81%) diff --git a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt index 66a0a04f94..8941610952 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt @@ -24,8 +24,8 @@ import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding import io.github.sds100.keymapper.base.utils.navigation.NavResult import io.github.sds100.keymapper.base.utils.navigation.NavigateEvent -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl -import io.github.sds100.keymapper.base.utils.navigation.setupNavigation +import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl +import io.github.sds100.keymapper.base.utils.navigation.setupFragmentNavigation import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.showPopups import javax.inject.Inject @@ -34,7 +34,7 @@ import javax.inject.Inject class MainFragment : Fragment() { @Inject - lateinit var navigationProvider: NavigationViewModelImpl + lateinit var navigationProvider: NavigationProviderImpl @Inject lateinit var popupViewModel: PopupViewModelImpl @@ -42,7 +42,7 @@ class MainFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - navigationProvider.setupNavigation(this) + navigationProvider.setupFragmentNavigation(this) } override fun onCreateView( @@ -57,7 +57,7 @@ class MainFragment : Fragment() { setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setContent { val navController = rememberNavController() - val navEvent: NavigateEvent? by navigationProvider.navigate + val navEvent: NavigateEvent? by navigationProvider.onNavigate .collectAsStateWithLifecycle(null) val returnResult: String? by navigationProvider.onReturnResult @@ -117,7 +117,7 @@ class MainFragment : Fragment() { navController.navigate(navEvent.destination) - navigationProvider.handledEvent() + navigationProvider.handledNavigateRequest() } KeyMapperTheme { diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt index 02b8fee0d6..4d425b60bb 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.BuildConfigProvider @@ -28,7 +28,7 @@ class HomeViewModel @Inject constructor( private val sortKeyMaps: SortKeyMapsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val buildConfigProvider: BuildConfigProvider, - navigationViewModel: NavigationViewModel, + navigationProvider: NavigationProvider, popupViewModel: PopupViewModel ) : BaseHomeViewModel( listKeyMaps, @@ -41,6 +41,6 @@ class HomeViewModel @Inject constructor( sortKeyMaps, showInputMethodPickerUseCase, buildConfigProvider, - navigationViewModel, + navigationProvider, popupViewModel ) diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt index 7ef14ab1c1..416e126401 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt @@ -15,7 +15,7 @@ import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.trigger.ConfigTriggerViewModel @@ -34,12 +34,12 @@ class ConfigKeyMapViewModel @Inject constructor( setupGuiKeyboardUseCase: SetupGuiKeyboardUseCase, fingerprintGesturesSupportedUseCase: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, - navigationViewModel: NavigationViewModel, + navigationProvider: NavigationProvider, popupViewModel: PopupViewModel, ) : BaseConfigKeyMapViewModel( config = config, onboarding = onboarding, - navigationViewModel = navigationViewModel, + navigationProvider = navigationProvider, popupViewModel = popupViewModel, ) { override val configActionsViewModel: ConfigActionsViewModel = ConfigActionsViewModel( @@ -50,7 +50,7 @@ class ConfigKeyMapViewModel @Inject constructor( config = config, onboarding = onboarding, resourceProvider = resourceProvider, - navigationViewModel = navigationViewModel, + navigationProvider = navigationProvider, popupViewModel = popupViewModel, ) @@ -65,7 +65,7 @@ class ConfigKeyMapViewModel @Inject constructor( setupGuiKeyboard = setupGuiKeyboardUseCase, fingerprintGesturesSupported = fingerprintGesturesSupportedUseCase, resourceProvider = resourceProvider, - navigationViewModel = navigationViewModel, + navigationProvider = navigationProvider, popupViewModel = popupViewModel, ) @@ -75,7 +75,7 @@ class ConfigKeyMapViewModel @Inject constructor( config = config, displayConstraint = display, resourceProvider = resourceProvider, - navigationViewModel = navigationViewModel, + navigationProvider = navigationProvider, popupViewModel = popupViewModel, ) } diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt index 9140d115b2..2f62114ede 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt @@ -9,7 +9,7 @@ import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope @@ -26,7 +26,7 @@ class ConfigTriggerViewModel @Inject constructor( private val setupGuiKeyboard: SetupGuiKeyboardUseCase, private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, - navigationViewModel: NavigationViewModel, + navigationProvider: NavigationProvider, popupViewModel: PopupViewModel, ) : BaseConfigTriggerViewModel( coroutineScope = coroutineScope, @@ -39,7 +39,7 @@ class ConfigTriggerViewModel @Inject constructor( setupGuiKeyboard = setupGuiKeyboard, fingerprintGesturesSupported = fingerprintGesturesSupported, resourceProvider = resourceProvider, - navigationViewModel = navigationViewModel, + navigationProvider = navigationProvider, popupViewModel = popupViewModel, ) { override fun onEditFloatingButtonClick() {} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt index 7cb21877ff..8ea338a5fe 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt @@ -4,8 +4,8 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider +import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider @@ -19,7 +19,7 @@ class ActivityViewModel @Inject constructor( ) : ViewModel(), ResourceProvider by resourceProvider, PopupViewModel by PopupViewModelImpl(), - NavigationViewModel by NavigationViewModelImpl() { + NavigationProvider by NavigationProviderImpl() { var handledActivityLaunchIntent: Boolean = false var previousNightMode: Int? = null diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt index 4501892f70..a3ca645362 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt @@ -38,8 +38,8 @@ import io.github.sds100.keymapper.base.system.notifications.ManageNotificationsU import io.github.sds100.keymapper.base.system.notifications.ManageNotificationsUseCaseImpl import io.github.sds100.keymapper.base.trigger.RecordTriggerController import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider +import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider @@ -135,7 +135,7 @@ abstract class BaseSingletonHiltModule { @Binds @Singleton - abstract fun bindNavigationProvider(impl: NavigationViewModelImpl): NavigationViewModel + abstract fun bindNavigationProvider(impl: NavigationProviderImpl): NavigationProvider @Binds @Singleton diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index e0e8d01ceb..43d515676f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -6,7 +6,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.containsQuery import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel @@ -34,12 +34,12 @@ import javax.inject.Inject class ChooseActionViewModel @Inject constructor( private val useCase: CreateActionUseCase, resourceProvider: ResourceProvider, - navigationViewModel: NavigationViewModel, + navigationProvider: NavigationProvider, popupViewModel: PopupViewModel, ) : ViewModel(), ResourceProvider by resourceProvider, PopupViewModel by popupViewModel, - NavigationViewModel by navigationViewModel { + NavigationProvider by navigationProvider { companion object { private val CATEGORY_ORDER = arrayOf( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index 15be5fa0be..915a82f38b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -1,33 +1,31 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase -import io.github.sds100.keymapper.system.SystemError -import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.isFixable -import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.base.utils.navigation.NavDestination +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider +import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.ChooseAppStoreModel import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.LinkType -import io.github.sds100.keymapper.base.utils.navigation.NavDestination -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.system.SystemError +import io.github.sds100.keymapper.system.permissions.Permission import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted @@ -41,9 +39,8 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import javax.inject.Inject -class ConfigActionsViewModel constructor( +class ConfigActionsViewModel( private val coroutineScope: CoroutineScope, private val displayAction: DisplayActionUseCase, private val createAction: CreateActionUseCase, @@ -51,12 +48,12 @@ class ConfigActionsViewModel constructor( private val config: ConfigKeyMapUseCase, private val onboarding: OnboardingUseCase, resourceProvider: ResourceProvider, - navigationViewModel: NavigationViewModel, + navigationProvider: NavigationProvider, popupViewModel: PopupViewModel, ) : ActionOptionsBottomSheetCallback, ResourceProvider by resourceProvider, PopupViewModel by popupViewModel, - NavigationViewModel by navigationViewModel { + NavigationProvider by navigationProvider { val createActionDelegate = CreateActionDelegate(coroutineScope, createAction, this, this, this) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index 42552df114..9d15d06ff4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -13,7 +13,7 @@ import io.github.sds100.keymapper.base.utils.DndModeStrings import io.github.sds100.keymapper.base.utils.RingerModeStrings import io.github.sds100.keymapper.base.utils.VolumeStreamStrings import io.github.sds100.keymapper.base.utils.navigation.NavDestination -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.PopupUi @@ -38,11 +38,11 @@ class CreateActionDelegate( private val coroutineScope: CoroutineScope, private val useCase: CreateActionUseCase, popupViewModel: PopupViewModel, - navigationViewModel: NavigationViewModel, + navigationProvider: NavigationProvider, resourceProvider: ResourceProvider, ) : ResourceProvider by resourceProvider, PopupViewModel by popupViewModel, - NavigationViewModel by navigationViewModel { + NavigationProvider by navigationProvider { val actionResult: MutableStateFlow = MutableStateFlow(null) var enableFlashlightActionState: EnableFlashlightActionState? by mutableStateOf(null) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt index cad126de9d..4f2b33a30b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionFragment.kt @@ -19,9 +19,9 @@ import androidx.navigation.fragment.navArgs import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.databinding.FragmentConfigKeyEventBinding +import io.github.sds100.keymapper.base.utils.navigation.setupFragmentNavigation import io.github.sds100.keymapper.base.utils.ui.configuredCheckBox import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.navigation.setupNavigation import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.common.utils.putJsonSerializable import kotlinx.coroutines.flow.collectLatest @@ -57,7 +57,7 @@ class ConfigKeyEventActionFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - viewModel.setupNavigation(this) + viewModel.setupFragmentNavigation(this) if (args.keyEventAction != null) { viewModel.loadAction(Json.decodeFromString(args.keyEventAction!!)) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt index 14d8709373..300c6dbf52 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -9,12 +9,12 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.utils.InputEventStrings import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem import io.github.sds100.keymapper.base.utils.navigation.NavDestination -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider +import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl import io.github.sds100.keymapper.base.utils.navigation.navigate +import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem +import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.Success @@ -45,7 +45,7 @@ class ConfigKeyEventActionViewModel @Inject constructor( private val resourceProvider: ResourceProvider ) : ViewModel(), ResourceProvider by resourceProvider, - NavigationViewModel by NavigationViewModelImpl() { + NavigationProvider by NavigationProviderImpl() { private val keyEventState = MutableStateFlow(KeyEventState()) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt index c37406a0e7..497f608f14 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt @@ -9,7 +9,7 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.system.accessibility.RecordAccessibilityNodeState import io.github.sds100.keymapper.base.utils.containsQuery -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper @@ -49,9 +49,9 @@ class InteractUiElementViewModel @Inject constructor( private val useCase: InteractUiElementUseCase, resourceProvider: ResourceProvider, popupViewModel: PopupViewModel, - navigationViewModel: NavigationViewModel, + navigationProvider: NavigationProvider, ) : ViewModel(), - NavigationViewModel by navigationViewModel, + NavigationProvider by navigationProvider, PopupViewModel by popupViewModel, ResourceProvider by resourceProvider { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt index e6d17d26cc..5db130784c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.containsQuery import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.navigation.NavDestination -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel @@ -37,12 +37,12 @@ import javax.inject.Inject class ChooseConstraintViewModel @Inject constructor( private val useCase: CreateConstraintUseCase, popupViewModel: PopupViewModel, - navigationViewModel: NavigationViewModel, + navigationProvider: NavigationProvider, resourceProvider: ResourceProvider, ) : ViewModel(), ResourceProvider by resourceProvider, PopupViewModel by popupViewModel, - NavigationViewModel by navigationViewModel { + NavigationProvider by navigationProvider { companion object { private val ALL_CONSTRAINTS_ORDERED: Array = arrayOf( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index 81f0550c19..312c38d0a7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -8,10 +8,9 @@ import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.isFixable import io.github.sds100.keymapper.base.utils.navigation.NavDestination -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @@ -40,11 +39,11 @@ class ConfigConstraintsViewModel( private val config: ConfigKeyMapUseCase, private val displayConstraint: DisplayConstraintUseCase, resourceProvider: ResourceProvider, - navigationViewModel: NavigationViewModel, + navigationProvider: NavigationProvider, popupViewModel: PopupViewModel, ) : ResourceProvider by resourceProvider, PopupViewModel by popupViewModel, - NavigationViewModel by navigationViewModel { + NavigationProvider by navigationProvider { private val uiHelper = ConstraintUiHelper(displayConstraint, resourceProvider) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt index 424a218c67..2c1cae764f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt @@ -17,7 +17,7 @@ import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.utils.navigation.NavDestination -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.PopupUi @@ -39,12 +39,12 @@ abstract class BaseHomeViewModel( private val sortKeyMaps: SortKeyMapsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val buildConfigProvider: BuildConfigProvider, - navigationViewModel: NavigationViewModel, + navigationProvider: NavigationProvider, popupViewModel: PopupViewModel, ) : ViewModel(), ResourceProvider by resourceProvider, PopupViewModel by popupViewModel, - NavigationViewModel by navigationViewModel { + NavigationProvider by navigationProvider { val keyMapListViewModel by lazy { KeyMapListViewModel( @@ -58,7 +58,7 @@ abstract class BaseHomeViewModel( backupRestore, showInputMethodPickerUseCase, onboarding, - navigationViewModel, + navigationProvider, popupViewModel, ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt index 2f9b92c864..333c2ac974 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt @@ -7,7 +7,7 @@ import io.github.sds100.keymapper.base.constraints.ConfigConstraintsViewModel import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.ui.PopupViewModel import io.github.sds100.keymapper.common.utils.dataOrNull import kotlinx.coroutines.flow.SharingStarted @@ -20,10 +20,10 @@ import kotlinx.coroutines.launch abstract class BaseConfigKeyMapViewModel( private val config: ConfigKeyMapUseCase, private val onboarding: OnboardingUseCase, - navigationViewModel: NavigationViewModel, + navigationProvider: NavigationProvider, popupViewModel: PopupViewModel, ) : ViewModel(), - NavigationViewModel by navigationViewModel, + NavigationProvider by navigationProvider, PopupViewModel by popupViewModel { abstract val configActionsViewModel: ConfigActionsViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index 18afa737e3..bc990dc7eb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -29,13 +29,12 @@ import io.github.sds100.keymapper.base.trigger.TriggerError import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.navigation.NavDestination -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.SelectionState import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper @@ -85,11 +84,11 @@ class KeyMapListViewModel( private val backupRestore: BackupRestoreMappingsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val onboarding: OnboardingUseCase, - private val navigationProvider: NavigationViewModel, + private val navigationProvider: NavigationProvider, private val popupViewModel: PopupViewModel ) : PopupViewModel by popupViewModel, ResourceProvider by resourceProvider, - NavigationViewModel by navigationProvider { + NavigationProvider by navigationProvider { private companion object { const val ID_ACCESSIBILITY_SERVICE_DISABLED_LIST_ITEM = "accessibility_service_disabled" diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt index 7f46dbbcf9..92bbad4d14 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt @@ -23,8 +23,8 @@ import io.github.sds100.keymapper.base.databinding.FragmentConfigIntentBinding import io.github.sds100.keymapper.base.databinding.ListItemIntentExtraBoolBinding import io.github.sds100.keymapper.base.intentExtraBool import io.github.sds100.keymapper.base.intentExtraGeneric +import io.github.sds100.keymapper.base.utils.navigation.setupFragmentNavigation import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.navigation.setupNavigation import io.github.sds100.keymapper.base.utils.ui.showPopups import io.github.sds100.keymapper.system.intents.BoolIntentExtraListItem import io.github.sds100.keymapper.system.intents.GenericIntentExtraListItem @@ -70,7 +70,7 @@ class ConfigIntentFragment : Fragment() { viewModel.loadResult(Json.decodeFromString(it)) } - viewModel.setupNavigation(this) + viewModel.setupFragmentNavigation(this) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt index 227ccd5e7c..f51bc6d04e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt @@ -12,8 +12,8 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.getExampleStringRes import io.github.sds100.keymapper.base.utils.getLabelStringRes import io.github.sds100.keymapper.base.utils.navigation.NavDestination -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider +import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem @@ -67,7 +67,7 @@ class ConfigIntentViewModel @Inject constructor( ) : ViewModel(), ResourceProvider by resourceProvider, PopupViewModel by PopupViewModelImpl(), - NavigationViewModel by NavigationViewModelImpl() { + NavigationProvider by NavigationProviderImpl() { companion object { private val EXTRA_TYPES = arrayOf( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index 322cbe16b6..89669e8337 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -23,14 +23,12 @@ import io.github.sds100.keymapper.base.purchasing.ProductId import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType import io.github.sds100.keymapper.base.utils.InputEventStrings +import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.LinkType -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModel -import io.github.sds100.keymapper.base.utils.navigation.NavigationViewModelImpl import io.github.sds100.keymapper.base.utils.ui.PopupUi import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @@ -74,11 +72,11 @@ abstract class BaseConfigTriggerViewModel( private val setupGuiKeyboard: SetupGuiKeyboardUseCase, private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, - navigationViewModel: NavigationViewModel, + navigationProvider: NavigationProvider, popupViewModel: PopupViewModel, ) : ResourceProvider by resourceProvider, PopupViewModel by popupViewModel, - NavigationViewModel by navigationViewModel { + NavigationProvider by navigationProvider { companion object { private const val DEVICE_ID_ANY = "any" diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationProvider.kt similarity index 81% rename from base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationProvider.kt index 3db3992863..a0fa0048e1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationProvider.kt @@ -39,15 +39,41 @@ import kotlinx.serialization.json.Json import javax.inject.Inject import javax.inject.Singleton -// TODO rename +/** + * This class handles communication of navigation requests and results between view models, + * fragments, and Compose destinations. The aim of this class is to enable a way + * for "synchronous" communication between destinations with suspending functions. + * + * The flow is generally this: + * 1. The view model calls [navigate] which then emits a value in the [onNavigate] flow. The + * [navigate] function will suspend until a result is returned. This is being observed in the + * fragment and in the Compose NavHost. The [setupFragmentNavigation] method + * sets up result passing between fragment destinations in a synchronous manner. + * 2. They check the [NavDestination.isCompose] flag to know whether to handle it. They handle + * navigating to the destination and then call [handledNavigateRequest] to clear the state flow. The + * current destination has now changed. + * 3. The result is handled differently depending on whether it is a fragment destination or + * composable. + * + * If it is a fragment then the view model has its own flow to expose results to its + * corresponding fragment. The fragment will observe it and then call setFragmentResult and then + * navigateUp on the nav controller. The [setupFragmentNavigation] registers a listener + * and will update the [onNavResult] flow with the result, which has been observed by the + * [navigate] function the entire time. The origin view model now has the result. + * + * The view model in the new destination calls [popBackStack], or + * [popBackStackWithResult] which then sends the result value into [onReturnResult]. The NavHost + * observes this, calls [handledReturnResult], then sends the result to [onNavResult], which + * the [navigate] function has been observing. The origin view model now has the result. + */ @Singleton -class NavigationViewModelImpl @Inject constructor() : NavigationViewModel { +class NavigationProviderImpl @Inject constructor() : NavigationProvider { + private val _onNavigate = MutableStateFlow(null) + override val onNavigate = _onNavigate.asStateFlow() + private val _onNavResult = MutableStateFlow(null) override val onNavResult = _onNavResult.asStateFlow() - private val _navigate = MutableStateFlow(null) - override val navigate = _navigate.asStateFlow() - private val _onReturnResult = MutableStateFlow(null) override val onReturnResult: StateFlow = _onReturnResult.asStateFlow() @@ -62,8 +88,8 @@ class NavigationViewModelImpl @Inject constructor() : NavigationViewModel { _onReturnResult.update { null } } - override fun handledEvent() { - _navigate.update { null } + override fun handledNavigateRequest() { + _onNavigate.update { null } } override fun handledNavResult() { @@ -72,9 +98,9 @@ class NavigationViewModelImpl @Inject constructor() : NavigationViewModel { override suspend fun navigate(event: NavigateEvent) { // wait for the view to collect so navigating can happen - _navigate.subscriptionCount.first { it > 0 } + _onNavigate.subscriptionCount.first { it > 0 } - _navigate.emit(event) + _onNavigate.emit(event) } override fun onNavResult(result: NavResult) { @@ -94,10 +120,10 @@ class NavigationViewModelImpl @Inject constructor() : NavigationViewModel { } } -interface NavigationViewModel { - val navigate: StateFlow +interface NavigationProvider { + val onNavigate: StateFlow suspend fun navigate(event: NavigateEvent) - fun handledEvent() + fun handledNavigateRequest() val onNavResult: StateFlow fun onNavResult(result: NavResult) @@ -110,7 +136,7 @@ interface NavigationViewModel { suspend fun popBackStack() } -suspend inline fun NavigationViewModel.navigate( +suspend inline fun NavigationProvider.navigate( key: String, destination: NavDestination, ): R? { @@ -123,7 +149,7 @@ suspend inline fun NavigationViewModel.navigate( Must drop the first value because it came from our call to navigate. */ return merge( - navigate.drop(1).filterNotNull().dropWhile { it.key != key }.map { null }, + onNavigate.drop(1).filterNotNull().dropWhile { it.key != key }.map { null }, onNavResult.filterNotNull() .dropWhile { it.key != key } .map { result -> result.data?.let { Json.decodeFromString(it) } }, @@ -133,7 +159,7 @@ suspend inline fun NavigationViewModel.navigate( /** * Must call in fragment's onCreate */ -fun NavigationViewModel.setupNavigation(fragment: Fragment) { +fun NavigationProvider.setupFragmentNavigation(fragment: Fragment) { val navigationSavedStateKey = "navigation:${this.javaClass.name}" val pendingResultsKeysExtra = "pending_results_keys" @@ -170,7 +196,7 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { } } - navigate + onNavigate .filterNotNull() .filter { !it.destination.isCompose } .onEach { event -> @@ -189,7 +215,7 @@ fun NavigationViewModel.setupNavigation(fragment: Fragment) { val direction = getDirection(destination, requestKey) fragment.findNavController().navigate(direction) - handledEvent() + handledNavigateRequest() }.launchIn(fragment.lifecycleScope) } @@ -258,7 +284,7 @@ private fun getDirection(destination: NavDestination<*>, requestKey: String): Na } } -fun NavigationViewModel.sendNavResultFromBundle( +fun NavigationProvider.sendNavResultFromBundle( requestKey: String, destinationId: String, bundle: Bundle, From 5cfbb0353ccc13985564d667d21de642a927bba3 Mon Sep 17 00:00:00 2001 From: sds100 Date: Fri, 23 May 2025 23:34:50 +0200 Subject: [PATCH 39/71] #1711 move MainNavHost into base module --- .../github/sds100/keymapper/MainFragment.kt | 154 ++++++++++-------- .../io/github/sds100/keymapper/MainNavHost.kt | 124 -------------- base/build.gradle.kts | 1 + .../sds100/keymapper/base/BaseMainNavHost.kt | 59 +++++++ .../utils/navigation/NavigationProvider.kt | 75 +++++++++ 5 files changed, 219 insertions(+), 194 deletions(-) delete mode 100644 app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/BaseMainNavHost.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt index 8941610952..7c19780cc8 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt @@ -8,26 +8,37 @@ import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsetsSides import androidx.compose.foundation.layout.add import androidx.compose.foundation.layout.displayCutout +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.getValue +import androidx.compose.material3.SnackbarHostState +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ViewCompositionStrategy +import androidx.compose.ui.unit.dp import androidx.fragment.app.Fragment -import androidx.lifecycle.compose.collectAsStateWithLifecycle -import androidx.navigation.compose.currentBackStackEntryAsState +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.navigation.NavGraphBuilder +import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.base.BaseMainNavHost +import io.github.sds100.keymapper.base.actions.ChooseActionScreen +import io.github.sds100.keymapper.base.actions.ChooseActionViewModel import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.databinding.FragmentComposeBinding -import io.github.sds100.keymapper.base.utils.navigation.NavResult -import io.github.sds100.keymapper.base.utils.navigation.NavigateEvent +import io.github.sds100.keymapper.base.home.HomeKeyMapListScreen +import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl +import io.github.sds100.keymapper.base.utils.navigation.SetupNavigation +import io.github.sds100.keymapper.base.utils.navigation.handleRouteArgs import io.github.sds100.keymapper.base.utils.navigation.setupFragmentNavigation import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.home.HomeViewModel +import io.github.sds100.keymapper.keymaps.ConfigKeyMapScreen +import io.github.sds100.keymapper.keymaps.ConfigKeyMapViewModel import javax.inject.Inject @AndroidEntryPoint @@ -57,78 +68,19 @@ class MainFragment : Fragment() { setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setContent { val navController = rememberNavController() - val navEvent: NavigateEvent? by navigationProvider.onNavigate - .collectAsStateWithLifecycle(null) - - val returnResult: String? by navigationProvider.onReturnResult - .collectAsStateWithLifecycle(null) - - val currentEntry by navController.currentBackStackEntryAsState() - - val popBackStack by navigationProvider.popBackStack.collectAsStateWithLifecycle( - null, - ) - - LaunchedEffect(key1 = popBackStack) { - popBackStack ?: return@LaunchedEffect - - navController.navigateUp() - navigationProvider.handledPop() - } - - LaunchedEffect(returnResult) { - val result = returnResult ?: return@LaunchedEffect - - // Set the result in previous screen. - navController.previousBackStackEntry - ?.savedStateHandle - ?.set("result", result) - - navController.navigateUp() - navigationProvider.handledReturnResult() - } - - LaunchedEffect(currentEntry) { - val currentEntry = currentEntry ?: return@LaunchedEffect - - val requestKey = - currentEntry.savedStateHandle.remove("request_key") - - // If the current screen has a result then handle it. - val data = currentEntry.savedStateHandle.remove("result") - - if (requestKey != null && data != null) { - navigationProvider.onNavResult(NavResult(requestKey, data)) - navigationProvider.handledNavResult() - } - } - - LaunchedEffect(navEvent) { - val navEvent = navEvent ?: return@LaunchedEffect - - if (!navEvent.destination.isCompose) { - return@LaunchedEffect - } - - // Store the request key before navigating. - navController.currentBackStackEntry - ?.savedStateHandle - ?.set("request_key", navEvent.key) - - navController.navigate(navEvent.destination) - - navigationProvider.handledNavigateRequest() - } + SetupNavigation(navigationProvider, navController) KeyMapperTheme { - MainNavHost( + BaseMainNavHost( modifier = Modifier .windowInsetsPadding( WindowInsets.systemBars.only(sides = WindowInsetsSides.Horizontal) .add(WindowInsets.displayCutout.only(sides = WindowInsetsSides.Horizontal)), ), navController = navController, - finishActivity = requireActivity()::finish, + composableDestinations = { + composableDestinations() + }, ) } } @@ -142,4 +94,66 @@ class MainFragment : Fragment() { popupViewModel.showPopups(this, view) } + + private fun NavGraphBuilder.composableDestinations() { + composable { + val snackbarState = remember { SnackbarHostState() } + val viewModel: HomeViewModel = hiltViewModel() + + HomeKeyMapListScreen( + modifier = Modifier.fillMaxSize(), + viewModel = viewModel.keyMapListViewModel, + snackbarState = snackbarState, + onSettingsClick = viewModel::launchSettings, + onAboutClick = viewModel::launchAbout, + finishActivity = { + requireActivity().finish() + }, + fabBottomPadding = 0.dp, + ) + } + + composable { backStackEntry -> + val viewModel: ConfigKeyMapViewModel = hiltViewModel() + + backStackEntry.handleRouteArgs { args -> + viewModel.loadNewKeyMap(groupUid = args.groupUid) + + if (args.showAdvancedTriggers) { + viewModel.configTriggerViewModel.showAdvancedTriggersBottomSheet = true + } + } + + ConfigKeyMapScreen( + modifier = Modifier.fillMaxSize(), + viewModel = viewModel, + ) + } + + composable { backStackEntry -> + val viewModel: ConfigKeyMapViewModel = hiltViewModel() + + backStackEntry.handleRouteArgs { args -> + viewModel.loadKeyMap(uid = args.keyMapUid) + + if (args.showAdvancedTriggers) { + viewModel.configTriggerViewModel.showAdvancedTriggersBottomSheet = true + } + } + + ConfigKeyMapScreen( + modifier = Modifier.fillMaxSize(), + viewModel = viewModel, + ) + } + + composable { + val viewModel: ChooseActionViewModel = hiltViewModel() + + ChooseActionScreen( + modifier = Modifier.fillMaxSize(), + viewModel = viewModel, + ) + } + } } diff --git a/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt b/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt deleted file mode 100644 index 19a7a1a28e..0000000000 --- a/app/src/main/java/io/github/sds100/keymapper/MainNavHost.kt +++ /dev/null @@ -1,124 +0,0 @@ -package io.github.sds100.keymapper - -import androidx.compose.animation.AnimatedContentTransitionScope -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material3.SnackbarHostState -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel -import androidx.navigation.NavHostController -import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable -import io.github.sds100.keymapper.base.actions.ChooseActionScreen -import io.github.sds100.keymapper.base.actions.ChooseActionViewModel -import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementScreen -import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementViewModel -import io.github.sds100.keymapper.base.constraints.ChooseConstraintScreen -import io.github.sds100.keymapper.base.constraints.ChooseConstraintViewModel -import io.github.sds100.keymapper.base.home.HomeKeyMapListScreen -import io.github.sds100.keymapper.base.utils.navigation.NavDestination -import io.github.sds100.keymapper.base.utils.navigation.handleRouteArgs -import io.github.sds100.keymapper.home.HomeViewModel -import io.github.sds100.keymapper.keymaps.ConfigKeyMapScreen -import io.github.sds100.keymapper.keymaps.ConfigKeyMapViewModel -import kotlinx.serialization.json.Json - -@Composable -fun MainNavHost( - modifier: Modifier = Modifier, - navController: NavHostController, - finishActivity: () -> Unit, -) { - val snackbarState = remember { SnackbarHostState() } - - NavHost( - modifier = modifier, - navController = navController, - startDestination = NavDestination.Home, - enterTransition = { slideIntoContainer(towards = AnimatedContentTransitionScope.SlideDirection.Left) }, - exitTransition = { slideOutOfContainer(towards = AnimatedContentTransitionScope.SlideDirection.Right) }, - popEnterTransition = { slideIntoContainer(towards = AnimatedContentTransitionScope.SlideDirection.Right) }, - popExitTransition = { slideOutOfContainer(towards = AnimatedContentTransitionScope.SlideDirection.Right) }, - ) { - composable { - val viewModel: HomeViewModel = hiltViewModel() - - HomeKeyMapListScreen( - modifier = Modifier.fillMaxSize(), - viewModel = viewModel.keyMapListViewModel, - snackbarState = snackbarState, - onSettingsClick = viewModel::launchSettings, - onAboutClick = viewModel::launchAbout, - finishActivity = finishActivity, - fabBottomPadding = 0.dp, - ) - } - - composable { backStackEntry -> - val viewModel: ConfigKeyMapViewModel = hiltViewModel() - - backStackEntry.handleRouteArgs { args -> - viewModel.loadNewKeyMap(groupUid = args.groupUid) - - if (args.showAdvancedTriggers) { - viewModel.configTriggerViewModel.showAdvancedTriggersBottomSheet = true - } - } - - ConfigKeyMapScreen( - modifier = Modifier.fillMaxSize(), - viewModel = viewModel, - ) - } - - composable { backStackEntry -> - val viewModel: ConfigKeyMapViewModel = hiltViewModel() - - backStackEntry.handleRouteArgs { args -> - viewModel.loadKeyMap(uid = args.keyMapUid) - - if (args.showAdvancedTriggers) { - viewModel.configTriggerViewModel.showAdvancedTriggersBottomSheet = true - } - } - - ConfigKeyMapScreen( - modifier = Modifier.fillMaxSize(), - viewModel = viewModel, - ) - } - - composable { - val viewModel: ChooseActionViewModel = hiltViewModel() - - ChooseActionScreen( - modifier = Modifier.fillMaxSize(), - viewModel = viewModel, - ) - } - - composable { backStackEntry -> - val viewModel: InteractUiElementViewModel = hiltViewModel() - - backStackEntry.handleRouteArgs { destination -> - destination.actionJson?.let { viewModel.loadAction(Json.decodeFromString(it)) } - } - - InteractUiElementScreen( - modifier = Modifier.fillMaxSize(), - viewModel = viewModel, - ) - } - - composable { - val viewModel: ChooseConstraintViewModel = hiltViewModel() - - ChooseConstraintScreen( - modifier = Modifier.fillMaxSize(), - viewModel = viewModel, - ) - } - } -} diff --git a/base/build.gradle.kts b/base/build.gradle.kts index 4cc085992f..2840058789 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -118,6 +118,7 @@ dependencies { implementation(libs.androidx.viewpager2) implementation(libs.androidx.datastore.preferences) implementation(libs.androidx.core.splashscreen) + implementation(libs.androidx.hilt.navigation.compose) // Compose implementation(platform(libs.androidx.compose.bom)) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseMainNavHost.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainNavHost.kt new file mode 100644 index 0000000000..4589823952 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseMainNavHost.kt @@ -0,0 +1,59 @@ +package io.github.sds100.keymapper.base + +import androidx.compose.animation.AnimatedContentTransitionScope +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavHostController +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementScreen +import io.github.sds100.keymapper.base.actions.uielement.InteractUiElementViewModel +import io.github.sds100.keymapper.base.constraints.ChooseConstraintScreen +import io.github.sds100.keymapper.base.constraints.ChooseConstraintViewModel +import io.github.sds100.keymapper.base.utils.navigation.NavDestination +import io.github.sds100.keymapper.base.utils.navigation.handleRouteArgs +import kotlinx.serialization.json.Json + +@Composable +fun BaseMainNavHost( + modifier: Modifier = Modifier, + navController: NavHostController, + composableDestinations: NavGraphBuilder.() -> Unit = {}, +) { + NavHost( + modifier = modifier, + navController = navController, + startDestination = NavDestination.Home, + enterTransition = { slideIntoContainer(towards = AnimatedContentTransitionScope.SlideDirection.Left) }, + exitTransition = { slideOutOfContainer(towards = AnimatedContentTransitionScope.SlideDirection.Right) }, + popEnterTransition = { slideIntoContainer(towards = AnimatedContentTransitionScope.SlideDirection.Right) }, + popExitTransition = { slideOutOfContainer(towards = AnimatedContentTransitionScope.SlideDirection.Right) }, + ) { + composable { backStackEntry -> + val viewModel: InteractUiElementViewModel = hiltViewModel() + + backStackEntry.handleRouteArgs { destination -> + destination.actionJson?.let { viewModel.loadAction(Json.decodeFromString(it)) } + } + + InteractUiElementScreen( + modifier = Modifier.fillMaxSize(), + viewModel = viewModel, + ) + } + + composable { + val viewModel: ChooseConstraintViewModel = hiltViewModel() + + ChooseConstraintScreen( + modifier = Modifier.fillMaxSize(), + viewModel = viewModel, + ) + } + + composableDestinations() + } +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationProvider.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationProvider.kt index a0fa0048e1..0cea5a666a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationProvider.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationProvider.kt @@ -1,12 +1,18 @@ package io.github.sds100.keymapper.base.utils.navigation import android.os.Bundle +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue import androidx.core.os.bundleOf import androidx.fragment.app.Fragment import androidx.fragment.app.clearFragmentResultListener import androidx.fragment.app.setFragmentResultListener +import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.lifecycleScope import androidx.navigation.NavDirections +import androidx.navigation.NavHostController +import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.fragment.findNavController import io.github.sds100.keymapper.base.NavBaseAppDirections import io.github.sds100.keymapper.base.actions.keyevent.ChooseKeyCodeFragment @@ -156,6 +162,75 @@ suspend inline fun NavigationProvider.navigate( ).first() } +@Composable +fun SetupNavigation( + navigationProvider: NavigationProviderImpl, + navController: NavHostController, +) { + val navEvent: NavigateEvent? by navigationProvider.onNavigate + .collectAsStateWithLifecycle(null) + + val returnResult: String? by navigationProvider.onReturnResult + .collectAsStateWithLifecycle(null) + + val currentEntry by navController.currentBackStackEntryAsState() + + val popBackStack by navigationProvider.popBackStack.collectAsStateWithLifecycle( + null, + ) + + LaunchedEffect(key1 = popBackStack) { + popBackStack ?: return@LaunchedEffect + + navController.navigateUp() + navigationProvider.handledPop() + } + + LaunchedEffect(returnResult) { + val result = returnResult ?: return@LaunchedEffect + + // Set the result in previous screen. + navController.previousBackStackEntry + ?.savedStateHandle + ?.set("result", result) + + navController.navigateUp() + navigationProvider.handledReturnResult() + } + + LaunchedEffect(currentEntry) { + val currentEntry = currentEntry ?: return@LaunchedEffect + + val requestKey = + currentEntry.savedStateHandle.remove("request_key") + + // If the current screen has a result then handle it. + val data = currentEntry.savedStateHandle.remove("result") + + if (requestKey != null && data != null) { + navigationProvider.onNavResult(NavResult(requestKey, data)) + navigationProvider.handledNavResult() + } + } + + LaunchedEffect(navEvent) { + val navEvent = navEvent ?: return@LaunchedEffect + + if (!navEvent.destination.isCompose) { + return@LaunchedEffect + } + + // Store the request key before navigating. + navController.currentBackStackEntry + ?.savedStateHandle + ?.set("request_key", navEvent.key) + + navController.navigate(navEvent.destination) + + navigationProvider.handledNavigateRequest() + } +} + /** * Must call in fragment's onCreate */ From 260a3233073e2b675e4bfd1072d9cfdea928fd0b Mon Sep 17 00:00:00 2001 From: sds100 Date: Sun, 25 May 2025 15:08:48 +0200 Subject: [PATCH 40/71] name project "KeyMapperFoss" --- settings.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index 77ec0ecd1e..266e977f2e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -22,7 +22,7 @@ dependencyResolutionManagement { } } -rootProject.name = "KeyMapper" +rootProject.name = "KeyMapperFoss" include(":app") include(":systemstubs") include(":base") From 00aef7e905ce2390fd13eacedd9f83b12f94a335 Mon Sep 17 00:00:00 2001 From: sds100 Date: Sun, 25 May 2025 15:13:31 +0200 Subject: [PATCH 41/71] delete empty string translation files --- base/src/main/res/values-ar/strings.xml | 74 -------------------- base/src/main/res/values-cs/strings.xml | 74 -------------------- base/src/main/res/values-de/strings.xml | 74 -------------------- base/src/main/res/values-es/strings.xml | 74 -------------------- base/src/main/res/values-fr/strings.xml | 74 -------------------- base/src/main/res/values-hu/strings.xml | 75 --------------------- base/src/main/res/values-id/strings.xml | 74 -------------------- base/src/main/res/values-ka/strings.xml | 74 -------------------- base/src/main/res/values-ko/strings.xml | 74 -------------------- base/src/main/res/values-pl/strings.xml | 74 -------------------- base/src/main/res/values-pt/strings.xml | 74 -------------------- base/src/main/res/values-ru/strings.xml | 74 -------------------- base/src/main/res/values-sk/strings.xml | 74 -------------------- base/src/main/res/values-uk/strings.xml | 74 -------------------- base/src/main/res/values-vi/strings.xml | 74 -------------------- base/src/main/res/values-zh-rCN/strings.xml | 74 -------------------- base/src/main/res/values-zh-rTW/strings.xml | 74 -------------------- 17 files changed, 1259 deletions(-) delete mode 100644 base/src/main/res/values-ar/strings.xml delete mode 100644 base/src/main/res/values-cs/strings.xml delete mode 100644 base/src/main/res/values-de/strings.xml delete mode 100644 base/src/main/res/values-es/strings.xml delete mode 100644 base/src/main/res/values-fr/strings.xml delete mode 100644 base/src/main/res/values-hu/strings.xml delete mode 100644 base/src/main/res/values-id/strings.xml delete mode 100644 base/src/main/res/values-ka/strings.xml delete mode 100644 base/src/main/res/values-ko/strings.xml delete mode 100644 base/src/main/res/values-pl/strings.xml delete mode 100644 base/src/main/res/values-pt/strings.xml delete mode 100644 base/src/main/res/values-ru/strings.xml delete mode 100644 base/src/main/res/values-sk/strings.xml delete mode 100644 base/src/main/res/values-uk/strings.xml delete mode 100644 base/src/main/res/values-vi/strings.xml delete mode 100644 base/src/main/res/values-zh-rCN/strings.xml delete mode 100644 base/src/main/res/values-zh-rTW/strings.xml diff --git a/base/src/main/res/values-ar/strings.xml b/base/src/main/res/values-ar/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-ar/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-cs/strings.xml b/base/src/main/res/values-cs/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-cs/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-de/strings.xml b/base/src/main/res/values-de/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-de/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-es/strings.xml b/base/src/main/res/values-es/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-es/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-fr/strings.xml b/base/src/main/res/values-fr/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-fr/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-hu/strings.xml b/base/src/main/res/values-hu/strings.xml deleted file mode 100644 index 96247417f6..0000000000 --- a/base/src/main/res/values-hu/strings.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - Engedd el a kulcsokat! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-id/strings.xml b/base/src/main/res/values-id/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-id/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-ka/strings.xml b/base/src/main/res/values-ka/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-ka/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-ko/strings.xml b/base/src/main/res/values-ko/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-ko/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-pl/strings.xml b/base/src/main/res/values-pl/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-pl/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-pt/strings.xml b/base/src/main/res/values-pt/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-pt/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-ru/strings.xml b/base/src/main/res/values-ru/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-ru/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-sk/strings.xml b/base/src/main/res/values-sk/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-sk/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-uk/strings.xml b/base/src/main/res/values-uk/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-uk/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-vi/strings.xml b/base/src/main/res/values-vi/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-vi/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-zh-rCN/strings.xml b/base/src/main/res/values-zh-rCN/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-zh-rCN/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/src/main/res/values-zh-rTW/strings.xml b/base/src/main/res/values-zh-rTW/strings.xml deleted file mode 100644 index 1d669e715e..0000000000 --- a/base/src/main/res/values-zh-rTW/strings.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 6e8ae6fd46134c0434905ed5aceb05694f971225 Mon Sep 17 00:00:00 2001 From: sds100 Date: Sun, 25 May 2025 16:30:41 +0200 Subject: [PATCH 42/71] #1711 building full app works --- .../api/LaunchKeyMapShortcutActivity.kt | 1 + app/build.gradle.kts | 31 +------------- app/src/main/AndroidManifest.xml | 14 +++++++ .../github/sds100/keymapper/MainActivity.kt | 2 +- base/src/debug/res/values/strings.xml | 2 +- base/src/main/AndroidManifest.xml | 28 ++++++++++--- .../keymapper/base/logging/LogFragment.kt | 2 - .../base/utils/ui/BindingAdapters.kt | 5 ++- .../src/main/res/layout/activity_main.xml | 0 gradle/libs.versions.toml | 4 -- system/src/ci/res/values/strings.xml | 4 ++ system/src/debug/res/values/strings.xml | 4 ++ system/src/main/AndroidManifest.xml | 42 +++---------------- system/src/main/res/values/strings.xml | 4 ++ .../src/main/res/xml/device_admin.xml | 0 .../src/main/res/xml/input_method.xml | 0 .../src/main/res/xml/keyboard_layouts.xml | 0 17 files changed, 61 insertions(+), 82 deletions(-) rename {app => base}/src/main/res/layout/activity_main.xml (100%) create mode 100644 system/src/ci/res/values/strings.xml create mode 100644 system/src/debug/res/values/strings.xml create mode 100644 system/src/main/res/values/strings.xml rename {base => system}/src/main/res/xml/device_admin.xml (100%) rename {base => system}/src/main/res/xml/input_method.xml (100%) rename {base => system}/src/main/res/xml/keyboard_layouts.xml (100%) diff --git a/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt index 978d9e9050..24522fbf9a 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt @@ -7,6 +7,7 @@ import androidx.activity.ComponentActivity import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import javax.inject.Inject +import io.github.sds100.keymapper.base.R // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API /** diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0bd2c300b0..7faae3cf31 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -36,12 +36,6 @@ android { vectorDrawables.useSupportLibrary = true testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - - javaCompileOptions { - annotationProcessorOptions { - arguments["room.schemaLocation"] = "$projectDir/schemas" - } - } } signingConfigs { @@ -96,29 +90,8 @@ android { } } - flavorDimensions.add("pro") - productFlavors { - create("free") { - dimension = "pro" - } - create("pro") { - dimension = "pro" - val localPropertiesFile = rootProject.file("local.properties") - val keyName = "REVENUECAT_API_KEY" - if (localPropertiesFile.exists()) { - val localProperties = Properties().apply { - FileInputStream(localPropertiesFile).use { fis -> load(fis) } - } - if (localProperties.containsKey(keyName)) { - buildConfigField("String", keyName, "${localProperties[keyName]}") - } - } - } - } - buildFeatures { dataBinding = true - viewBinding = true aidl = true buildConfig = true compose = true @@ -190,8 +163,6 @@ dependencies { implementation(libs.github.mflisar.dragselectrecyclerview) implementation(libs.google.flexbox) implementation(libs.lsposed.hiddenapibypass) - "proImplementation"(libs.revenuecat.purchases) - "proImplementation"(libs.airbnb.lottie.compose) implementation(libs.squareup.okhttp) coreLibraryDesugaring(libs.desugar.jdk.libs) implementation(libs.canopas.introshowcaseview) @@ -217,7 +188,6 @@ dependencies { implementation(libs.androidx.lifecycle.extensions) // Note: Deprecated implementation(libs.androidx.viewpager2) implementation(libs.androidx.core.splashscreen) - implementation(libs.androidx.hilt.navigation.compose) ksp(libs.androidx.room.compiler) // Compose @@ -229,6 +199,7 @@ dependencies { implementation(libs.androidx.compose.material.icons.extended) implementation(libs.androidx.compose.material3.adaptive) implementation(libs.androidx.compose.material3.adaptive.navigation) + implementation(libs.androidx.hilt.navigation.compose) implementation(libs.google.accompanist.drawablepainter) implementation(libs.androidx.compose.ui.tooling) } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fb8fd62232..fd3a99ee47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,5 +45,19 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt index 91c617df60..a3939b3fcc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt @@ -7,7 +7,7 @@ import androidx.navigation.fragment.NavHostFragment import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.BaseMainActivity import io.github.sds100.keymapper.base.utils.ui.showPopups -import io.github.sds100.keymapper.databinding.ActivityMainBinding +import io.github.sds100.keymapper.base.databinding.ActivityMainBinding @AndroidEntryPoint class MainActivity : BaseMainActivity() { diff --git a/base/src/debug/res/values/strings.xml b/base/src/debug/res/values/strings.xml index 0e97b14435..bc42450e26 100644 --- a/base/src/debug/res/values/strings.xml +++ b/base/src/debug/res/values/strings.xml @@ -1,5 +1,5 @@ - Key Mapper Debug + Key Mapper Debug Key Mapper Debug Basic Input Method \ No newline at end of file diff --git a/base/src/main/AndroidManifest.xml b/base/src/main/AndroidManifest.xml index 97e12d4562..bf276a36b2 100644 --- a/base/src/main/AndroidManifest.xml +++ b/base/src/main/AndroidManifest.xml @@ -83,13 +83,29 @@ - + android:icon="@drawable/ic_tile_pause" + android:label="@string/tile_pause_title" + android:permission="android.permission.BIND_QUICK_SETTINGS_TILE" + tools:targetApi="24"> + + + + + + + + + + () { dragSelectTouchListener = DragSelectTouchListener() .withSelectListener(dragSelectionProcessor) - binding.epoxyRecyclerView.addOnItemTouchListener(dragSelectTouchListener) - binding.epoxyRecyclerView.setController(recyclerViewController) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/BindingAdapters.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/BindingAdapters.kt index 4fb88c53fc..2d49556745 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/BindingAdapters.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/BindingAdapters.kt @@ -107,9 +107,10 @@ fun View.enabled(isEnabled: Boolean) { } } +// TODO check this is correct fun TintType.toColor(ctx: Context): Int? = when (this) { TintType.None -> null - TintType.OnSurface -> ctx.styledColor(R.attr.colorOnSurface) - TintType.Error -> ctx.styledColor(R.attr.colorError) + TintType.OnSurface -> ctx.color(R.color.md_theme_onSurface) + TintType.Error -> ctx.color(R.color.md_theme_error) is TintType.Color -> this.color } diff --git a/app/src/main/res/layout/activity_main.xml b/base/src/main/res/layout/activity_main.xml similarity index 100% rename from app/src/main/res/layout/activity_main.xml rename to base/src/main/res/layout/activity_main.xml diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f6565c333a..334bbf4e0e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -51,7 +51,6 @@ ksp-gradle-plugin = "2.1.0-1.0.28" ktlint-gradle = "12.1.0" #leakcanary = "2.6" # Commented out in original file lingala-zip4j = "2.8.0" -lottie-compose = "6.6.3" material = "1.13.0-alpha13" mflisar-dragselectrecyclerview = "0.3" @@ -61,7 +60,6 @@ mockito-inline = "5.2.0" mockito-kotlin = "4.0.0" okhttp = "4.12.0" -revenuecat-purchases = "8.17.1" robolectric = "4.14.1" shizuku = "13.1.5" splitties = "3.0.0" @@ -139,7 +137,6 @@ squareup-okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref airbnb-epoxy = { group = "com.airbnb.android", name = "epoxy", version.ref = "epoxy" } airbnb-epoxy-databinding = { group = "com.airbnb.android", name = "epoxy-databinding", version.ref = "epoxy" } airbnb-epoxy-processor = { group = "com.airbnb.android", name = "epoxy-processor", version.ref = "epoxy" } -airbnb-lottie-compose = { group = "com.airbnb.android", name = "lottie-compose", version.ref = "lottie-compose" } # Splitties splitties-alertdialog-appcompat-coroutines = { group = "com.louiscad.splitties", name = "splitties-alertdialog-appcompat-coroutines", version.ref = "splitties" } @@ -172,7 +169,6 @@ jakewharton-timber = { group = "com.jakewharton.timber", name = "timber", versio kotson = { group = "com.github.salomonbrys.kotson", name = "kotson", version.ref = "kotson" } lsposed-hiddenapibypass = { group = "org.lsposed.hiddenapibypass", name = "hiddenapibypass", version.ref = "hiddenapibypass" } net-lingala-zip4j = { group = "net.lingala.zip4j", name = "zip4j", version.ref = "lingala-zip4j" } -revenuecat-purchases = { group = "com.revenuecat.purchases", name = "purchases", version.ref = "revenuecat-purchases" } # Gradle Plugins - Aliases for buildscript dependencies / plugins block # These are referenced in build.gradle.kts files' plugins blocks by their ID. diff --git a/system/src/ci/res/values/strings.xml b/system/src/ci/res/values/strings.xml new file mode 100644 index 0000000000..2364c4723b --- /dev/null +++ b/system/src/ci/res/values/strings.xml @@ -0,0 +1,4 @@ + + + Key Mapper CI Basic Input Method + \ No newline at end of file diff --git a/system/src/debug/res/values/strings.xml b/system/src/debug/res/values/strings.xml new file mode 100644 index 0000000000..634c8afe28 --- /dev/null +++ b/system/src/debug/res/values/strings.xml @@ -0,0 +1,4 @@ + + + Key Mapper Debug Basic Input Method + \ No newline at end of file diff --git a/system/src/main/AndroidManifest.xml b/system/src/main/AndroidManifest.xml index 6c9774f45d..cf384912b2 100644 --- a/system/src/main/AndroidManifest.xml +++ b/system/src/main/AndroidManifest.xml @@ -52,20 +52,6 @@ - - - - - - - - - - - - - - - - - - - + android:multiprocess="false" + android:permission="android.permission.INTERACT_ACROSS_USERS_FULL" /> + + Key Mapper Basic Input Method + \ No newline at end of file diff --git a/base/src/main/res/xml/device_admin.xml b/system/src/main/res/xml/device_admin.xml similarity index 100% rename from base/src/main/res/xml/device_admin.xml rename to system/src/main/res/xml/device_admin.xml diff --git a/base/src/main/res/xml/input_method.xml b/system/src/main/res/xml/input_method.xml similarity index 100% rename from base/src/main/res/xml/input_method.xml rename to system/src/main/res/xml/input_method.xml diff --git a/base/src/main/res/xml/keyboard_layouts.xml b/system/src/main/res/xml/keyboard_layouts.xml similarity index 100% rename from base/src/main/res/xml/keyboard_layouts.xml rename to system/src/main/res/xml/keyboard_layouts.xml From 835900bfd699dacc0ad17e15d368eb3b41a4e1af Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 28 May 2025 18:26:57 +0200 Subject: [PATCH 43/71] #1711 WIP: refactor floating buttons code --- .idea/.name | 1 + .idea/material_theme_project_new.xml | 13 + .idea/navEditor.xml | 257 ++++++++++++++++++ app/build.gradle.kts | 6 +- base/build.gradle.kts | 6 +- .../keymapper/base/home/BaseHomeViewModel.kt | 40 --- .../keymapper/base/home/HomeDestination.kt | 7 - .../base/keymaps/DisplayKeyMapUseCase.kt | 14 +- .../detection/ButtonPressedCallback.kt | 6 + .../base/purchasing/PurchasingManager.kt | 2 +- .../sds100/keymapper/base/utils/ErrorUtils.kt | 16 -- .../base/utils/navigation/NavDestination.kt | 13 +- systemstubs/build.gradle.kts | 6 +- 13 files changed, 295 insertions(+), 92 deletions(-) create mode 100644 .idea/.name create mode 100644 .idea/material_theme_project_new.xml create mode 100644 .idea/navEditor.xml delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/home/HomeDestination.kt create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ButtonPressedCallback.kt diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000000..74b4435ffe --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +KeyMapperFoss \ No newline at end of file diff --git a/.idea/material_theme_project_new.xml b/.idea/material_theme_project_new.xml new file mode 100644 index 0000000000..fd844d9451 --- /dev/null +++ b/.idea/material_theme_project_new.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/.idea/navEditor.xml b/.idea/navEditor.xml new file mode 100644 index 0000000000..7dbf723192 --- /dev/null +++ b/.idea/navEditor.xml @@ -0,0 +1,257 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7faae3cf31..22eb153d21 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -99,12 +99,12 @@ android { compileOptions { isCoreLibraryDesugaringEnabled = true - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { - jvmTarget = "17" + jvmTarget = "11" } kapt { diff --git a/base/build.gradle.kts b/base/build.gradle.kts index 2840058789..31553fdd9b 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -54,12 +54,12 @@ android { compileOptions { isCoreLibraryDesugaringEnabled = true - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { - jvmTarget = "17" + jvmTarget = "11" } kapt { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt index 2c1cae764f..867abe09f5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt @@ -38,7 +38,6 @@ abstract class BaseHomeViewModel( private val setupGuiKeyboard: SetupGuiKeyboardUseCase, private val sortKeyMaps: SortKeyMapsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, - private val buildConfigProvider: BuildConfigProvider, navigationProvider: NavigationProvider, popupViewModel: PopupViewModel, ) : ViewModel(), @@ -91,38 +90,6 @@ abstract class BaseHomeViewModel( } } - private fun buildNavBarItems( - showFloatingLayouts: Boolean, - viewedAdvancedTriggers: Boolean, - ): List { - val items = mutableListOf() - items.add( - HomeNavBarItem( - HomeDestination.KeyMaps, - getString(R.string.home_nav_bar_key_maps), - icon = Icons.Outlined.Keyboard, - badge = null, - ), - ) - - if (showFloatingLayouts && Build.VERSION.SDK_INT >= buildConfigProvider.minApi) { - items.add( - HomeNavBarItem( - HomeDestination.FloatingButtons, - getString(R.string.home_nav_bar_floating_buttons), - icon = Icons.Outlined.BubbleChart, - badge = if (viewedAdvancedTriggers) { - null - } else { - getString(R.string.button_advanced_triggers_badge) - }, - ), - ) - } - - return items - } - private suspend fun showWhatsNewDialog() { val dialog = PopupUi.Dialog( title = getString(R.string.whats_new), @@ -170,10 +137,3 @@ data class HomeWarningListItem( val id: String, val text: String, ) - -data class HomeNavBarItem( - val destination: HomeDestination, - val label: String, - val icon: ImageVector, - val badge: String? = null, -) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeDestination.kt deleted file mode 100644 index 35c0f3e1ea..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeDestination.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.github.sds100.keymapper.base.home - -// TODO Move this out of FOSS -sealed class HomeDestination(val route: String) { - data object KeyMaps : HomeDestination("key_maps") - data object FloatingButtons : HomeDestination("floating_buttons") -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index ab85dca722..2da6a8feab 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -1,7 +1,6 @@ package io.github.sds100.keymapper.base.keymaps import android.graphics.drawable.Drawable -import dagger.hilt.android.scopes.ActivityScoped import dagger.hilt.android.scopes.ViewModelScoped import io.github.sds100.keymapper.base.actions.DisplayActionUseCase import io.github.sds100.keymapper.base.actions.GetActionErrorUseCase @@ -81,12 +80,12 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( .first() } - send(value) - } catch (_: TimeoutCancellationException) { - } + send(value) + } catch (_: TimeoutCancellationException) { + } - purchasingManager.purchases.collect(this::send) - } + purchasingManager.purchases.collect(this::send) + } /** * Cache the data required for checking errors to reduce the latency of repeatedly checking @@ -163,7 +162,8 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( override fun getAppIcon(packageName: String): Result = packageManagerAdapter.getAppIcon(packageName) - override fun getInputMethodLabel(imeId: String): Result = inputMethodAdapter.getInfoById(imeId).then { Success(it.label) } + override fun getInputMethodLabel(imeId: String): Result = + inputMethodAdapter.getInfoById(imeId).then { Success(it.label) } override suspend fun fixError(error: Error) { when (error) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ButtonPressedCallback.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ButtonPressedCallback.kt new file mode 100644 index 0000000000..8f5a1dd416 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ButtonPressedCallback.kt @@ -0,0 +1,6 @@ +package io.github.sds100.keymapper.base.keymaps.detection + +interface ButtonPressedCallback { + fun onDownEvent(button: T) + fun onUpEvent(button: T) +} \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt index e88f8eed04..b9f6239df8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.purchasing -import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.Result import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt index a0ab5cd701..04e77abfbc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt @@ -2,8 +2,6 @@ package io.github.sds100.keymapper.base.utils import android.content.pm.PackageManager import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.purchasing.ProductId -import io.github.sds100.keymapper.base.purchasing.PurchasingError import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.utils.BuildUtils import io.github.sds100.keymapper.common.utils.Error @@ -171,20 +169,6 @@ fun Error.getFullMessage(resourceProvider: ResourceProvider): String { Error.GestureStrokeCountTooHigh -> resourceProvider.getString(R.string.trigger_error_gesture_stroke_count_too_high) Error.GestureDurationTooHigh -> resourceProvider.getString(R.string.trigger_error_gesture_duration_too_high) - PurchasingError.PurchasingProcessError.Cancelled -> resourceProvider.getString(R.string.purchasing_error_cancelled) - PurchasingError.PurchasingProcessError.NetworkError -> resourceProvider.getString(R.string.purchasing_error_network) - PurchasingError.PurchasingProcessError.ProductNotFound -> resourceProvider.getString(R.string.purchasing_error_product_not_found) - PurchasingError.PurchasingProcessError.StoreProblem -> resourceProvider.getString(R.string.purchasing_error_store_problem) - PurchasingError.PurchasingProcessError.PaymentPending -> resourceProvider.getString(R.string.purchasing_error_payment_pending) - PurchasingError.PurchasingProcessError.PurchaseInvalid -> resourceProvider.getString(R.string.purchasing_error_purchase_invalid) - is PurchasingError.PurchasingProcessError.Unexpected -> this.message - - is PurchasingError.ProductNotPurchased -> when (this.product) { - ProductId.ASSISTANT_TRIGGER -> resourceProvider.getString(R.string.purchasing_error_assistant_not_purchased_home_screen) - ProductId.FLOATING_BUTTONS -> resourceProvider.getString(R.string.purchasing_error_floating_buttons_not_purchased_home_screen) - } - - PurchasingError.PurchasingNotImplemented -> resourceProvider.getString(R.string.purchasing_error_not_implemented) Error.DpadTriggerImeNotSelected -> resourceProvider.getString(R.string.trigger_error_dpad_ime_not_selected) Error.InvalidBackup -> resourceProvider.getString(R.string.error_invalid_backup) Error.MalformedUrl -> resourceProvider.getString(R.string.error_malformed_url) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt index d71f000c59..13365ea785 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt @@ -12,7 +12,7 @@ import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import kotlinx.serialization.Serializable @Serializable -sealed class NavDestination(val isCompose: Boolean = false) { +abstract class NavDestination(val isCompose: Boolean = false) { abstract val id: String companion object { @@ -34,7 +34,6 @@ sealed class NavDestination(val isCompose: Boolean = false) { const val ID_ABOUT = "about" const val ID_CONFIG_KEY_MAP = "config_key_map" const val ID_SHIZUKU_SETTINGS = "shizuku_settings" - const val ID_CONFIG_FLOATING_BUTTON = "config_floating_button" const val ID_INTERACT_UI_ELEMENT_ACTION = "interact_ui_element_action" } @@ -133,21 +132,11 @@ sealed class NavDestination(val isCompose: Boolean = false) { override val id: String = ID_CONFIG_KEY_MAP } - @Serializable - data object ChooseFloatingLayout : NavDestination() { - override val id: String = "choose_floating_layout" - } - @Serializable data object ShizukuSettings : NavDestination() { override val id: String = ID_SHIZUKU_SETTINGS } - @Serializable - data class ConfigFloatingButton(val buttonUid: String?) : NavDestination() { - override val id: String = ID_CONFIG_FLOATING_BUTTON - } - @Serializable data class InteractUiElement(val actionJson: String?) : NavDestination(isCompose = true) { override val id: String = ID_INTERACT_UI_ELEMENT_ACTION diff --git a/systemstubs/build.gradle.kts b/systemstubs/build.gradle.kts index 55a7af6e29..ddcd69ea12 100644 --- a/systemstubs/build.gradle.kts +++ b/systemstubs/build.gradle.kts @@ -24,11 +24,11 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { - jvmTarget = "17" + jvmTarget = "11" } buildFeatures { From c0d075614fbf350d8876cc907df25b303bb6d5de Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 28 May 2025 19:23:28 +0200 Subject: [PATCH 44/71] #1711 bunch more changes --- base/proguard-rules.pro | 21 --------------------- gradle/libs.versions.toml | 2 +- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/base/proguard-rules.pro b/base/proguard-rules.pro index 481bb43481..e69de29bb2 100644 --- a/base/proguard-rules.pro +++ b/base/proguard-rules.pro @@ -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/gradle/libs.versions.toml b/gradle/libs.versions.toml index 334bbf4e0e..ee4cd11df2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -30,7 +30,7 @@ androidx-viewpager2 = "1.1.0" dagger-hilt-android = "2.56.2" -compose-bom = "2025.04.01" +compose-bom = "2025.05.01" compose-compiler = "1.5.10" # kotlinCompilerExtensionVersion desugar-jdk-libs = "2.1.5" From b92e1f9858256d5b93629886d22fd8444ce4ffab Mon Sep 17 00:00:00 2001 From: sds100 Date: Thu, 29 May 2025 20:26:32 +0200 Subject: [PATCH 45/71] #1711 more changes --- .../api/LaunchKeyMapShortcutActivity.kt | 5 +- app/build.gradle.kts | 2 +- .../base/actions/PerformActionsUseCase.kt | 2 + .../keymaps/detection/DetectKeyMapsUseCase.kt | 2 + .../keymaps/detection/KeyMapController.kt | 7 ++- ...essedCallback.kt => KeyPressedCallback.kt} | 2 +- .../TriggerKeyMapFromOtherAppsController.kt | 8 +++- .../RerouteKeyEventsController.kt | 11 +++-- .../AccessibilityNodeRecorder.kt | 11 +++-- .../BaseAccessibilityServiceController.kt | 38 +++------------ .../base/utils/navigation/NavDestination.kt | 21 ++++++--- base/src/main/res/navigation/nav_base_app.xml | 47 +------------------ 12 files changed, 59 insertions(+), 97 deletions(-) rename base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/{ButtonPressedCallback.kt => KeyPressedCallback.kt} (76%) diff --git a/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt index 24522fbf9a..f9a8905b6f 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt @@ -4,10 +4,11 @@ import android.content.Intent import android.os.Bundle import android.widget.Toast import androidx.activity.ComponentActivity +import dagger.hilt.android.AndroidEntryPoint +import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState import javax.inject.Inject -import io.github.sds100.keymapper.base.R // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API /** @@ -16,6 +17,7 @@ import io.github.sds100.keymapper.base.R */ // TODO test this still works. +@AndroidEntryPoint class LaunchKeyMapShortcutActivity : ComponentActivity() { @Inject @@ -23,6 +25,7 @@ class LaunchKeyMapShortcutActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + val accessibilityServiceState = accessibilityServiceAdapter.state.value when (accessibilityServiceState) { diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 22eb153d21..c0b6162f4d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -128,7 +128,7 @@ android { applicationVariants.all { outputs.all { val output = this as com.android.build.gradle.internal.api.BaseVariantOutputImpl - output.outputFileName = "keymapper-${'$'}{variant.versionName}.apk" + output.outputFileName = "keymapper-foss-${'$'}{variant.versionName}.apk" } } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt index ed4de5f9ca..e36aa49f20 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt @@ -8,6 +8,7 @@ import android.view.accessibility.AccessibilityNodeInfo import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject +import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.sound.SoundsManager import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeAction @@ -77,6 +78,7 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import timber.log.Timber +@ServiceScoped class PerformActionsUseCaseImpl @AssistedInject constructor( private val appCoroutineScope: CoroutineScope, @Assisted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt index a5c351de6f..e87cd93440 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt @@ -7,6 +7,7 @@ import android.view.KeyEvent import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject +import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.constraints.ConstraintState import io.github.sds100.keymapper.base.groups.Group @@ -46,6 +47,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import timber.log.Timber +@ServiceScoped class DetectKeyMapsUseCaseImpl @AssistedInject constructor( private val keyMapRepository: KeyMapRepository, private val floatingButtonRepository: FloatingButtonRepository, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt index 1688a88f59..bcfe932abe 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt @@ -4,6 +4,9 @@ import android.view.KeyEvent import androidx.collection.SparseArrayCompat import androidx.collection.keyIterator import androidx.collection.valueIterator +import dagger.assisted.Assisted +import dagger.assisted.AssistedInject +import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.actions.Action import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.PerformActionsUseCase @@ -42,7 +45,9 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -class KeyMapController( +@ServiceScoped +class KeyMapController @AssistedInject constructor( + @Assisted private val coroutineScope: CoroutineScope, private val useCase: DetectKeyMapsUseCase, private val performActionsUseCase: PerformActionsUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ButtonPressedCallback.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyPressedCallback.kt similarity index 76% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ButtonPressedCallback.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyPressedCallback.kt index 8f5a1dd416..946cfa41d4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ButtonPressedCallback.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyPressedCallback.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.keymaps.detection -interface ButtonPressedCallback { +interface KeyPressedCallback { fun onDownEvent(button: T) fun onUpEvent(button: T) } \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt index c46de7b3d1..720932aa90 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt @@ -1,5 +1,8 @@ package io.github.sds100.keymapper.base.keymaps.detection +import dagger.assisted.Assisted +import dagger.assisted.AssistedInject +import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap @@ -9,8 +12,9 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import timber.log.Timber - -class TriggerKeyMapFromOtherAppsController( +@ServiceScoped +class TriggerKeyMapFromOtherAppsController @AssistedInject constructor( + @Assisted coroutineScope: CoroutineScope, detectKeyMapsUseCase: DetectKeyMapsUseCase, performActionsUseCase: PerformActionsUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt index d35f760723..6e7c0d64c6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt @@ -1,24 +1,27 @@ package io.github.sds100.keymapper.base.reroutekeyevents import android.view.KeyEvent +import dagger.assisted.Assisted +import dagger.assisted.AssistedInject +import dagger.hilt.android.scopes.ServiceScoped +import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputmethod.InputKeyModel -import io.github.sds100.keymapper.common.utils.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.isActive import kotlinx.coroutines.launch - - /** * This is used for the feature created in issue #618 to fix the device IDs of key events * on Android 11. There was a bug in the system where enabling an accessibility service * would reset the device ID of key events to -1. */ -class RerouteKeyEventsController( +@ServiceScoped +class RerouteKeyEventsController @AssistedInject constructor( + @Assisted private val coroutineScope: CoroutineScope, private val useCase: RerouteKeyEventsUseCase, ) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt index 303f0df7df..d2de980a19 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt @@ -5,16 +5,21 @@ import android.os.Build import android.os.CountDownTimer import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityNodeInfo +import dagger.assisted.Assisted +import dagger.assisted.AssistedInject +import dagger.hilt.android.scopes.ServiceScoped +import io.github.sds100.keymapper.common.utils.NodeInteractionType import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository -import io.github.sds100.keymapper.common.utils.NodeInteractionType import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update -class AccessibilityNodeRecorder( - private val nodeRepository: AccessibilityNodeRepository, +@ServiceScoped +class AccessibilityNodeRecorder @AssistedInject constructor( + @Assisted private val service: AccessibilityService, + private val nodeRepository: AccessibilityNodeRepository, ) { companion object { private const val RECORD_DURATION = 60000L diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt index c984b53755..47ef06a37a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt @@ -9,7 +9,6 @@ import android.view.accessibility.AccessibilityNodeInfo import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.actions.TestActionEvent -import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.TriggerKeyMapEvent @@ -19,7 +18,6 @@ import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker import io.github.sds100.keymapper.base.keymaps.detection.KeyMapController import io.github.sds100.keymapper.base.keymaps.detection.TriggerKeyMapFromOtherAppsController import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsController -import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.base.trigger.RecordTriggerEvent import io.github.sds100.keymapper.common.utils.firstBlocking @@ -28,14 +26,12 @@ import io.github.sds100.keymapper.common.utils.minusFlag import io.github.sds100.keymapper.common.utils.withFlag import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent -import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.root.SuAdapter import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -62,21 +58,21 @@ import kotlinx.coroutines.withContext import timber.log.Timber abstract class BaseAccessibilityServiceController( - private val coroutineScope: CoroutineScope, - private val service: BaseAccessibilityService, + val coroutineScope: CoroutineScope, + private val service: IAccessibilityService, private val inputEvents: SharedFlow, private val outputEvents: MutableSharedFlow, - private val detectConstraintsUseCase: DetectConstraintsUseCase, private val performActionsUseCase: PerformActionsUseCase, private val detectKeyMapsUseCase: DetectKeyMapsUseCase, private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, - rerouteKeyEventsUseCase: RerouteKeyEventsUseCase, private val pauseKeyMapsUseCase: PauseKeyMapsUseCase, private val devicesAdapter: DevicesAdapter, private val suAdapter: SuAdapter, - private val inputMethodAdapter: InputMethodAdapter, private val settingsRepository: PreferenceRepository, - private val nodeRepository: AccessibilityNodeRepository, + private val keyMapController: KeyMapController, + private val rerouteKeyEventsController: RerouteKeyEventsController, + private val accessibilityNodeRecorder: AccessibilityNodeRecorder, + private val triggerKeyMapFromOtherAppsController: TriggerKeyMapFromOtherAppsController ) { companion object { @@ -88,28 +84,6 @@ abstract class BaseAccessibilityServiceController( private const val DEFAULT_NOTIFICATION_TIMEOUT = 200L } - private val triggerKeyMapFromOtherAppsController = TriggerKeyMapFromOtherAppsController( - coroutineScope, - detectKeyMapsUseCase, - performActionsUseCase, - detectConstraintsUseCase, - ) - - val keyMapController = KeyMapController( - coroutineScope, - detectKeyMapsUseCase, - performActionsUseCase, - detectConstraintsUseCase, - ) - - private val rerouteKeyEventsController = RerouteKeyEventsController( - coroutineScope, - rerouteKeyEventsUseCase, - ) - - private val accessibilityNodeRecorder: AccessibilityNodeRecorder = - AccessibilityNodeRecorder(nodeRepository, service) - private var recordingTriggerJob: Job? = null private val recordingTrigger: Boolean get() = recordingTriggerJob != null && recordingTriggerJob?.isActive == true diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt index 13365ea785..e9392258ab 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt @@ -63,7 +63,8 @@ abstract class NavDestination(val isCompose: Boolean = false) { } @Serializable - data class ConfigKeyEventAction(val action: ActionData.InputKeyEvent? = null) : NavDestination() { + data class ConfigKeyEventAction(val action: ActionData.InputKeyEvent? = null) : + NavDestination() { override val id: String = ID_KEY_EVENT } @@ -73,12 +74,14 @@ abstract class NavDestination(val isCompose: Boolean = false) { } @Serializable - data class PickSwipeCoordinate(val result: SwipePickCoordinateResult? = null) : NavDestination() { + data class PickSwipeCoordinate(val result: SwipePickCoordinateResult? = null) : + NavDestination() { override val id: String = ID_PICK_SWIPE_COORDINATE } @Serializable - data class PickPinchCoordinate(val result: PinchPickCoordinateResult? = null) : NavDestination() { + data class PickPinchCoordinate(val result: PinchPickCoordinateResult? = null) : + NavDestination() { override val id: String = ID_PICK_PINCH_COORDINATE } @@ -123,12 +126,17 @@ abstract class NavDestination(val isCompose: Boolean = false) { } @Serializable - data class OpenKeyMap(val keyMapUid: String, val showAdvancedTriggers: Boolean = false) : NavDestination(isCompose = true) { + data class OpenKeyMap(val keyMapUid: String, val showAdvancedTriggers: Boolean = false) : + NavDestination(isCompose = true) { override val id: String = ID_CONFIG_KEY_MAP } @Serializable - data class NewKeyMap(val groupUid: String?, val showAdvancedTriggers: Boolean = false) : NavDestination(isCompose = true) { + data class NewKeyMap( + val groupUid: String?, + val showAdvancedTriggers: Boolean = false, + val floatingButtonToUse: String? = null + ) : NavDestination(isCompose = true) { override val id: String = ID_CONFIG_KEY_MAP } @@ -138,7 +146,8 @@ abstract class NavDestination(val isCompose: Boolean = false) { } @Serializable - data class InteractUiElement(val actionJson: String?) : NavDestination(isCompose = true) { + data class InteractUiElement(val actionJson: String?) : + NavDestination(isCompose = true) { override val id: String = ID_INTERACT_UI_ELEMENT_ACTION } } diff --git a/base/src/main/res/navigation/nav_base_app.xml b/base/src/main/res/navigation/nav_base_app.xml index 07927d58f1..e3f43da0f9 100644 --- a/base/src/main/res/navigation/nav_base_app.xml +++ b/base/src/main/res/navigation/nav_base_app.xml @@ -1,18 +1,4 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From d00c14de410fcb972df8a1de191b48c0cae03ae1 Mon Sep 17 00:00:00 2001 From: sds100 Date: Thu, 29 May 2025 21:44:27 +0200 Subject: [PATCH 46/71] #1711 use assisted inject for accessibility service classes --- .../keymapper/base/BaseSingletonHiltModule.kt | 4 - .../base/actions/PerformActionsUseCase.kt | 17 ++- .../keymaps/detection/DetectKeyMapsUseCase.kt | 28 ++--- .../keymaps/detection/KeyMapController.kt | 7 +- .../TriggerKeyMapFromOtherAppsController.kt | 6 +- .../RerouteKeyEventsController.kt | 20 ++- .../RerouteKeyEventsUseCase.kt | 20 ++- .../AccessibilityNodeRecorder.kt | 9 +- .../accessibility/BaseAccessibilityService.kt | 17 +++ .../BaseAccessibilityServiceController.kt | 118 ++++++++++++------ 10 files changed, 169 insertions(+), 77 deletions(-) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt index a3ca645362..d999c71d0f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt @@ -89,10 +89,6 @@ abstract class BaseSingletonHiltModule { @Singleton abstract fun bindInteractUiElementUseCase(impl: InteractUiElementController): InteractUiElementUseCase - @Binds - @Singleton - abstract fun bindRerouteKeyEventsUseCase(impl: RerouteKeyEventsUseCaseImpl): RerouteKeyEventsUseCase - @Binds @Singleton abstract fun bindShowHideInputMethodUseCase(impl: ShowHideInputMethodUseCaseImpl): ShowHideInputMethodUseCase diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt index e36aa49f20..130040d980 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt @@ -78,7 +78,6 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import timber.log.Timber -@ServiceScoped class PerformActionsUseCaseImpl @AssistedInject constructor( private val appCoroutineScope: CoroutineScope, @Assisted @@ -114,6 +113,14 @@ class PerformActionsUseCaseImpl @AssistedInject constructor( private val settingsRepository: PreferenceRepository, ) : PerformActionsUseCase { + @AssistedFactory + interface Factory { + fun create( + accessibilityService: IAccessibilityService, + imeInputEventInjector: ImeInputEventInjector, + ): PerformActionsUseCaseImpl + } + private val shizukuInputEventInjector: ShizukuInputEventInjector = ShizukuInputEventInjector() private val openMenuHelper by lazy { @@ -1012,11 +1019,3 @@ interface PerformActionsUseCase { fun getErrorSnapshot(): ActionErrorSnapshot } - -@AssistedFactory -interface PerformActionsUseCaseFactory { - fun create( - accessibilityService: IAccessibilityService, - imeInputEventInjector: ImeInputEventInjector, - ): PerformActionsUseCaseImpl -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt index e87cd93440..2b990161d9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt @@ -47,8 +47,12 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import timber.log.Timber -@ServiceScoped +// TODO test that only one instance is created. class DetectKeyMapsUseCaseImpl @AssistedInject constructor( + @Assisted + private val imeInputEventInjector: ImeInputEventInjector, + @Assisted + private val accessibilityService: IAccessibilityService, private val keyMapRepository: KeyMapRepository, private val floatingButtonRepository: FloatingButtonRepository, private val groupRepository: GroupRepository, @@ -56,10 +60,6 @@ class DetectKeyMapsUseCaseImpl @AssistedInject constructor( private val suAdapter: SuAdapter, private val displayAdapter: DisplayAdapter, private val volumeAdapter: VolumeAdapter, - @Assisted - private val imeInputEventInjector: ImeInputEventInjector, - @Assisted - private val accessibilityService: IAccessibilityService, private val toastAdapter: ToastAdapter, private val permissionAdapter: PermissionAdapter, private val resourceProvider: ResourceProvider, @@ -68,6 +68,15 @@ class DetectKeyMapsUseCaseImpl @AssistedInject constructor( private val coroutineScope: CoroutineScope, ) : DetectKeyMapsUseCase { + @AssistedFactory + interface Factory { + fun create( + accessibilityService: IAccessibilityService, + coroutineScope: CoroutineScope, + imeInputEventInjector: ImeInputEventInjector, + ): DetectKeyMapsUseCaseImpl + } + companion object { fun processKeyMapsAndGroups( keyMaps: List, @@ -271,12 +280,3 @@ interface DetectKeyMapsUseCase { val isScreenOn: Flow } - -@AssistedFactory -interface DetectKeyMapsUseCaseFactory { - fun create( - accessibilityService: IAccessibilityService, - coroutineScope: CoroutineScope, - imeInputEventInjector: ImeInputEventInjector, - ): DetectKeyMapsUseCaseImpl -} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt index bcfe932abe..ae5ef960cf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt @@ -5,6 +5,7 @@ import androidx.collection.SparseArrayCompat import androidx.collection.keyIterator import androidx.collection.valueIterator import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.actions.Action @@ -45,7 +46,6 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -@ServiceScoped class KeyMapController @AssistedInject constructor( @Assisted private val coroutineScope: CoroutineScope, @@ -53,6 +53,11 @@ class KeyMapController @AssistedInject constructor( private val performActionsUseCase: PerformActionsUseCase, private val detectConstraints: DetectConstraintsUseCase, ) { + @AssistedFactory + interface Factory { + fun create(coroutineScope: CoroutineScope): KeyMapController + } + companion object { // the states for keys awaiting a double press diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt index 720932aa90..66938673be 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt @@ -1,6 +1,7 @@ package io.github.sds100.keymapper.base.keymaps.detection import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.actions.PerformActionsUseCase @@ -12,7 +13,6 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import timber.log.Timber -@ServiceScoped class TriggerKeyMapFromOtherAppsController @AssistedInject constructor( @Assisted coroutineScope: CoroutineScope, @@ -25,6 +25,10 @@ class TriggerKeyMapFromOtherAppsController @AssistedInject constructor( performActionsUseCase, detectConstraintsUseCase, ) { + @AssistedFactory + interface Factory { + fun create(coroutineScope: CoroutineScope): TriggerKeyMapFromOtherAppsController + } private var keyMapList = emptyList() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt index 6e7c0d64c6..76e83f856f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt @@ -2,29 +2,45 @@ package io.github.sds100.keymapper.base.reroutekeyevents import android.view.KeyEvent import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputmethod.InputKeyModel +import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.isActive import kotlinx.coroutines.launch +import javax.inject.Inject /** * This is used for the feature created in issue #618 to fix the device IDs of key events * on Android 11. There was a bug in the system where enabling an accessibility service * would reset the device ID of key events to -1. */ -@ServiceScoped class RerouteKeyEventsController @AssistedInject constructor( @Assisted private val coroutineScope: CoroutineScope, - private val useCase: RerouteKeyEventsUseCase, + @Assisted + private val keyMapperImeMessenger: ImeInputEventInjector, ) { + @AssistedFactory + interface Factory { + fun create( + coroutineScope: CoroutineScope, + keyMapperImeMessenger: ImeInputEventInjector, + ): RerouteKeyEventsController + } + + @Inject + lateinit var useCaseFactory: RerouteKeyEventsUseCaseImpl.Factory + + private val useCase = useCaseFactory.create(keyMapperImeMessenger) + /** * The job of the key that should be repeating. This should be a down key event for the last * key that has been pressed down. diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt index 4ece130dfa..ddc3d180a0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -1,6 +1,10 @@ package io.github.sds100.keymapper.base.reroutekeyevents import android.os.Build +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.firstBlocking @@ -19,13 +23,21 @@ import javax.inject.Singleton * on Android 11. There was a bug in the system where enabling an accessibility service * would reset the device ID of key events to -1. */ -class RerouteKeyEventsUseCaseImpl ( - private val inputMethodAdapter: InputMethodAdapter, +class RerouteKeyEventsUseCaseImpl @AssistedInject constructor( + @Assisted private val keyMapperImeMessenger: ImeInputEventInjector, + private val inputMethodAdapter: InputMethodAdapter, private val preferenceRepository: PreferenceRepository, - private val packageName: String, + private val buildConfigProvider: BuildConfigProvider ) : RerouteKeyEventsUseCase { + @AssistedFactory + interface Factory { + fun create( + keyMapperImeMessenger: ImeInputEventInjector, + ): RerouteKeyEventsUseCaseImpl + } + private val rerouteKeyEvents = preferenceRepository.get(Keys.rerouteKeyEvents).map { it ?: false } @@ -35,7 +47,7 @@ class RerouteKeyEventsUseCaseImpl ( private val imeHelper by lazy { KeyMapperImeHelper( inputMethodAdapter, - packageName, + buildConfigProvider.packageName, ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt index d2de980a19..6bd6532ec2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt @@ -6,6 +6,7 @@ import android.os.CountDownTimer import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityNodeInfo import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.common.utils.NodeInteractionType @@ -15,12 +16,16 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update -@ServiceScoped class AccessibilityNodeRecorder @AssistedInject constructor( @Assisted - private val service: AccessibilityService, + private val service: BaseAccessibilityService, private val nodeRepository: AccessibilityNodeRepository, ) { + @AssistedFactory + interface Factory { + fun create(service: BaseAccessibilityService): AccessibilityNodeRecorder + } + companion object { private const val RECORD_DURATION = 60000L } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt index b4e0548b0a..33274f7866 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt @@ -21,8 +21,10 @@ import androidx.lifecycle.LifecycleRegistry import androidx.savedstate.SavedStateRegistry import androidx.savedstate.SavedStateRegistryController import androidx.savedstate.SavedStateRegistryOwner +import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjectorImpl import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.InputEventType @@ -33,12 +35,15 @@ import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent +import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.inputmethod.KeyEventRelayServiceWrapperImpl import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update import timber.log.Timber +import javax.inject.Inject +@AndroidEntryPoint abstract class BaseAccessibilityService : AccessibilityService(), LifecycleOwner, @@ -50,6 +55,12 @@ abstract class BaseAccessibilityService : private const val CALLBACK_ID_ACCESSIBILITY_SERVICE = "accessibility_service" } + @Inject + lateinit var accessibilityServiceAdapter: AccessibilityServiceAdapterImpl + + @Inject + lateinit var inputMethodAdapter: InputMethodAdapter + private var lifecycleRegistry: LifecycleRegistry = LifecycleRegistry(this) private var savedStateRegistryController: SavedStateRegistryController? = SavedStateRegistryController.create(this) @@ -170,6 +181,12 @@ abstract class BaseAccessibilityService : ) } + val imeInputEventInjector = ImeInputEventInjectorImpl( + this, + keyEventRelayService = keyEventRelayServiceWrapper, + inputMethodAdapter = inputMethodAdapter, + ) + override val lifecycle: Lifecycle get() = lifecycleRegistry diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt index 47ef06a37a..893bccdf1e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt @@ -1,11 +1,14 @@ package io.github.sds100.keymapper.base.system.accessibility +import android.accessibilityservice.AccessibilityService import android.accessibilityservice.AccessibilityServiceInfo import android.content.res.Configuration import android.os.Build import android.view.KeyEvent import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityNodeInfo +import androidx.lifecycle.lifecycleScope +import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.actions.TestActionEvent @@ -56,24 +59,55 @@ import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import timber.log.Timber +import javax.inject.Inject +@ServiceScoped abstract class BaseAccessibilityServiceController( - val coroutineScope: CoroutineScope, - private val service: IAccessibilityService, - private val inputEvents: SharedFlow, - private val outputEvents: MutableSharedFlow, - private val performActionsUseCase: PerformActionsUseCase, - private val detectKeyMapsUseCase: DetectKeyMapsUseCase, - private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, - private val pauseKeyMapsUseCase: PauseKeyMapsUseCase, - private val devicesAdapter: DevicesAdapter, - private val suAdapter: SuAdapter, - private val settingsRepository: PreferenceRepository, - private val keyMapController: KeyMapController, - private val rerouteKeyEventsController: RerouteKeyEventsController, - private val accessibilityNodeRecorder: AccessibilityNodeRecorder, - private val triggerKeyMapFromOtherAppsController: TriggerKeyMapFromOtherAppsController + private val service: BaseAccessibilityService ) { + @Inject + lateinit var keyMapControllerFactory: KeyMapController.Factory + + @Inject + lateinit var rerouteKeyEventsControllerFactory: RerouteKeyEventsController.Factory + + @Inject + lateinit var accessibilityNodeRecorderFactory: AccessibilityNodeRecorder.Factory + + @Inject + lateinit var triggerKeyMapFromOtherAppsControllerFactory: TriggerKeyMapFromOtherAppsController.Factory + + @Inject + lateinit var performActionsUseCase: PerformActionsUseCase + + @Inject + lateinit var detectKeyMapsUseCase: DetectKeyMapsUseCase + + @Inject + lateinit var fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase + + @Inject + lateinit var pauseKeyMapsUseCase: PauseKeyMapsUseCase + + @Inject + lateinit var devicesAdapter: DevicesAdapter + + @Inject + lateinit var suAdapter: SuAdapter + + @Inject + lateinit var settingsRepository: PreferenceRepository + + val keyMapController: KeyMapController = keyMapControllerFactory.create(service.lifecycleScope) + val rerouteKeyEventsController: RerouteKeyEventsController = + rerouteKeyEventsControllerFactory.create( + service.lifecycleScope, + service.imeInputEventInjector + ) + val accessibilityNodeRecorder: AccessibilityNodeRecorder = + accessibilityNodeRecorderFactory.create(service) + val triggerKeyMapFromOtherAppsController: TriggerKeyMapFromOtherAppsController = + triggerKeyMapFromOtherAppsControllerFactory.create(service.lifecycleScope) companion object { /** @@ -91,18 +125,18 @@ abstract class BaseAccessibilityServiceController( DpadMotionEventTracker() val isPaused: StateFlow = pauseKeyMapsUseCase.isPaused - .stateIn(coroutineScope, SharingStarted.Eagerly, false) + .stateIn(service.lifecycleScope, SharingStarted.Eagerly, false) private val screenOffTriggersEnabled: StateFlow = detectKeyMapsUseCase.detectScreenOffTriggers - .stateIn(coroutineScope, SharingStarted.Eagerly, false) + .stateIn(service.lifecycleScope, SharingStarted.Eagerly, false) private val changeImeOnInputFocusFlow: StateFlow = settingsRepository .get(Keys.changeImeOnInputFocus) .map { it ?: PreferenceDefaults.CHANGE_IME_ON_INPUT_FOCUS } .stateIn( - coroutineScope, + service.lifecycleScope, SharingStarted.Lazily, PreferenceDefaults.CHANGE_IME_ON_INPUT_FOCUS, ) @@ -157,35 +191,39 @@ abstract class BaseAccessibilityServiceController( private val serviceNotificationTimeout: MutableStateFlow = MutableStateFlow(DEFAULT_NOTIFICATION_TIMEOUT) - init { + private val inputEvents: SharedFlow = + service.accessibilityServiceAdapter.eventsToService + private val outputEvents: MutableSharedFlow = + service.accessibilityServiceAdapter.eventReceiver + init { serviceFlags.onEach { flags -> // check that it isn't null because this can only be called once the service is bound if (service.serviceFlags != null) { service.serviceFlags = flags } - }.launchIn(coroutineScope) + }.launchIn(service.lifecycleScope) serviceFeedbackType.onEach { feedbackType -> // check that it isn't null because this can only be called once the service is bound if (service.serviceFeedbackType != null) { service.serviceFeedbackType = feedbackType } - }.launchIn(coroutineScope) + }.launchIn(service.lifecycleScope) serviceEventTypes.onEach { eventTypes -> // check that it isn't null because this can only be called once the service is bound if (service.serviceEventTypes != null) { service.serviceEventTypes = eventTypes } - }.launchIn(coroutineScope) + }.launchIn(service.lifecycleScope) serviceNotificationTimeout.onEach { timeout -> // check that it isn't null because this can only be called once the service is bound if (service.notificationTimeout != null) { service.notificationTimeout = timeout } - }.launchIn(coroutineScope) + }.launchIn(service.lifecycleScope) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { combine( @@ -197,27 +235,27 @@ abstract class BaseAccessibilityServiceController( } else { denyFingerprintGestureDetection() } - }.launchIn(coroutineScope) + }.launchIn(service.lifecycleScope) } pauseKeyMapsUseCase.isPaused.distinctUntilChanged().onEach { keyMapController.reset() triggerKeyMapFromOtherAppsController.reset() - }.launchIn(coroutineScope) + }.launchIn(service.lifecycleScope) detectKeyMapsUseCase.isScreenOn.onEach { isScreenOn -> if (!isScreenOn) { if (screenOffTriggersEnabled.value) { - detectScreenOffKeyEventsController.startListening(coroutineScope) + detectScreenOffKeyEventsController.startListening(service.lifecycleScope) } } else { detectScreenOffKeyEventsController.stopListening() } - }.launchIn(coroutineScope) + }.launchIn(service.lifecycleScope) inputEvents.onEach { onEventFromUi(it) - }.launchIn(coroutineScope) + }.launchIn(service.lifecycleScope) service.isKeyboardHidden .drop(1) // Don't send it when collecting initially @@ -227,7 +265,7 @@ abstract class BaseAccessibilityServiceController( } else { outputEvents.emit(AccessibilityServiceEvent.OnShowKeyboardEvent) } - }.launchIn(coroutineScope) + }.launchIn(service.lifecycleScope) combine( pauseKeyMapsUseCase.isPaused, @@ -248,9 +286,9 @@ abstract class BaseAccessibilityServiceController( } else { disableAccessibilityVolumeStream() } - }.launchIn(coroutineScope) + }.launchIn(service.lifecycleScope) - coroutineScope.launch { + service.lifecycleScope.launch { accessibilityNodeRecorder.recordState.collectLatest { state -> outputEvents.emit(RecordAccessibilityNodeEvent.OnRecordNodeStateChanged(state)) } @@ -262,7 +300,7 @@ abstract class BaseAccessibilityServiceController( val recordNodeEvents = AccessibilityEvent.TYPE_VIEW_FOCUSED or AccessibilityEvent.TYPE_VIEW_CLICKED - coroutineScope.launch { + service.lifecycleScope.launch { combine( changeImeOnInputFocusFlow, accessibilityNodeRecorder.recordState, @@ -367,7 +405,7 @@ abstract class BaseAccessibilityServiceController( val uniqueEvent: MyKeyEvent = getUniqueEvent(event) - coroutineScope.launch { + service.lifecycleScope.launch { outputEvents.emit( RecordTriggerEvent.RecordedTriggerKey( uniqueEvent.keyCode, @@ -446,7 +484,7 @@ abstract class BaseAccessibilityServiceController( if (keyEvent.action == KeyEvent.ACTION_DOWN) { Timber.d("Recorded motion event ${KeyEvent.keyCodeToString(keyEvent.keyCode)}") - coroutineScope.launch { + service.lifecycleScope.launch { outputEvents.emit( RecordTriggerEvent.RecordedTriggerKey( keyEvent.keyCode, @@ -485,12 +523,12 @@ abstract class BaseAccessibilityServiceController( if (focussedNode?.isEditable == true && focussedNode.isFocused) { Timber.d("Got input focus") - coroutineScope.launch { + service.lifecycleScope.launch { outputEvents.emit(AccessibilityServiceEvent.OnInputFocusChange(isFocussed = true)) } } else { Timber.d("Lost input focus") - coroutineScope.launch { + service.lifecycleScope.launch { outputEvents.emit(AccessibilityServiceEvent.OnInputFocusChange(isFocussed = false)) } } @@ -522,19 +560,19 @@ abstract class BaseAccessibilityServiceController( recordDpadMotionEventTracker.reset() if (wasRecordingTrigger) { - coroutineScope.launch { + service.lifecycleScope.launch { outputEvents.emit(RecordTriggerEvent.OnStoppedRecordingTrigger) } } } - is TestActionEvent -> coroutineScope.launch { + is TestActionEvent -> service.lifecycleScope.launch { performActionsUseCase.perform( event.action, ) } - is AccessibilityServiceEvent.Ping -> coroutineScope.launch { + is AccessibilityServiceEvent.Ping -> service.lifecycleScope.launch { outputEvents.emit(AccessibilityServiceEvent.Pong(event.key)) } @@ -563,7 +601,7 @@ abstract class BaseAccessibilityServiceController( } } - private fun recordTriggerJob() = coroutineScope.launch { + private fun recordTriggerJob() = service.lifecycleScope.launch { repeat(RECORD_TRIGGER_TIMER_LENGTH) { iteration -> if (isActive) { val timeLeft = RECORD_TRIGGER_TIMER_LENGTH - iteration From 46841109bb1a68b2075d573bbe2d6e185522da50 Mon Sep 17 00:00:00 2001 From: sds100 Date: Thu, 29 May 2025 22:16:50 +0200 Subject: [PATCH 47/71] #1711 finish assisted injection, compiles again --- .../accessibility/MyAccessibilityService.kt | 81 +------------ .../constraints/DetectConstraintsUseCase.kt | 17 ++- .../keymaps/detection/KeyMapController.kt | 8 +- .../TriggerKeyMapFromOtherAppsController.kt | 8 +- .../accessibility/BaseAccessibilityService.kt | 14 ++- .../BaseAccessibilityServiceController.kt | 113 ++++++++++++------ 6 files changed, 99 insertions(+), 142 deletions(-) diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt index 1472e38be9..fdec6b1150 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt @@ -25,56 +25,10 @@ import javax.inject.Inject @AndroidEntryPoint class MyAccessibilityService : BaseAccessibilityService() { - private var controller: AccessibilityServiceController? = null - - @Inject - lateinit var coroutineScope: CoroutineScope - - @Inject - lateinit var accessibilityServiceAdapter: AccessibilityServiceAdapterImpl - - @Inject - lateinit var detectConstraintsUseCaseFactory: DetectConstraintsUseCaseFactory - - @Inject - lateinit var performActionsUseCaseFactory: PerformActionsUseCaseFactory - - @Inject - lateinit var detectKeyMapsUseCaseFactory: DetectKeyMapsUseCaseFactory - - @Inject - lateinit var fingerprintGesturesSupportedUseCase: FingerprintGesturesSupportedUseCase - @Inject - lateinit var pauseKeyMapsUseCase: PauseKeyMapsUseCase + lateinit var controllerFactory: AccessibilityServiceController.Factory - @Inject - lateinit var devicesAdapter: DevicesAdapter - - @Inject - lateinit var suAdapter: SuAdapter - - @Inject - lateinit var inputMethodAdapter: InputMethodAdapter - - @Inject - lateinit var preferenceRepository: PreferenceRepository - - @Inject - lateinit var nodeRepository: AccessibilityNodeRepository - - private val rerouteKeyEventsUseCase: RerouteKeyEventsUseCaseImpl by lazy { - RerouteKeyEventsUseCaseImpl( - inputMethodAdapter = inputMethodAdapter, - keyMapperImeMessenger = ImeInputEventInjectorImpl( - this, - keyEventRelayService = keyEventRelayServiceWrapper, - inputMethodAdapter = inputMethodAdapter, - ), - preferenceRepository = preferenceRepository, - packageName = packageName, - ) - } + private var controller: AccessibilityServiceController? = null override fun getController(): BaseAccessibilityServiceController? { return controller @@ -88,36 +42,7 @@ class MyAccessibilityService : BaseAccessibilityService() { context would return null */ if (controller == null) { - val imeInputEventInjector = ImeInputEventInjectorImpl( - this, - keyEventRelayService = keyEventRelayServiceWrapper, - inputMethodAdapter = inputMethodAdapter, - ) - - controller = AccessibilityServiceController( - coroutineScope = coroutineScope, - accessibilityService = this, - inputEvents = accessibilityServiceAdapter.eventsToService, - outputEvents = accessibilityServiceAdapter.eventReceiver, - detectConstraintsUseCase = detectConstraintsUseCaseFactory.create(this), - performActionsUseCase = performActionsUseCaseFactory.create( - accessibilityService = this, - imeInputEventInjector = imeInputEventInjector, - ), - detectKeyMapsUseCase = detectKeyMapsUseCaseFactory.create( - accessibilityService = this, - coroutineScope = lifecycleScope, - imeInputEventInjector = imeInputEventInjector, - ), - fingerprintGesturesSupportedUseCase = fingerprintGesturesSupportedUseCase, - rerouteKeyEventsUseCase = rerouteKeyEventsUseCase, - pauseKeyMapsUseCase = pauseKeyMapsUseCase, - devicesAdapter = devicesAdapter, - suAdapter = suAdapter, - inputMethodAdapter = inputMethodAdapter, - settingsRepository = preferenceRepository, - nodeRepository = nodeRepository, - ) + controller = controllerFactory.create(this) } controller?.onServiceConnected() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt index f968487b2c..89888bba02 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DetectConstraintsUseCase.kt @@ -4,9 +4,7 @@ import android.os.Build import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import io.github.sds100.keymapper.base.actions.PerformActionsUseCaseImpl import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService -import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.devices.DevicesAdapter @@ -21,7 +19,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge -import javax.inject.Inject class DetectConstraintsUseCaseImpl @AssistedInject constructor( @Assisted @@ -37,6 +34,13 @@ class DetectConstraintsUseCaseImpl @AssistedInject constructor( private val powerAdapter: PowerAdapter, ) : DetectConstraintsUseCase { + @AssistedFactory + interface Factory { + fun create( + accessibilityService: IAccessibilityService, + ): DetectConstraintsUseCaseImpl + } + override fun getSnapshot(): ConstraintSnapshot = LazyConstraintSnapshot( accessibilityService, mediaAdapter, @@ -92,10 +96,3 @@ interface DetectConstraintsUseCase { fun getSnapshot(): ConstraintSnapshot fun onDependencyChanged(dependency: ConstraintDependency): Flow } - -@AssistedFactory -interface DetectConstraintsUseCaseFactory { - fun create( - accessibilityService: IAccessibilityService, - ): DetectConstraintsUseCaseImpl -} \ No newline at end of file diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt index ae5ef960cf..9406f584c8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt @@ -46,18 +46,12 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -class KeyMapController @AssistedInject constructor( - @Assisted +class KeyMapController ( private val coroutineScope: CoroutineScope, private val useCase: DetectKeyMapsUseCase, private val performActionsUseCase: PerformActionsUseCase, private val detectConstraints: DetectConstraintsUseCase, ) { - @AssistedFactory - interface Factory { - fun create(coroutineScope: CoroutineScope): KeyMapController - } - companion object { // the states for keys awaiting a double press diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt index 66938673be..f3fbf24aca 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt @@ -13,8 +13,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import timber.log.Timber -class TriggerKeyMapFromOtherAppsController @AssistedInject constructor( - @Assisted +class TriggerKeyMapFromOtherAppsController( coroutineScope: CoroutineScope, detectKeyMapsUseCase: DetectKeyMapsUseCase, performActionsUseCase: PerformActionsUseCase, @@ -25,11 +24,6 @@ class TriggerKeyMapFromOtherAppsController @AssistedInject constructor( performActionsUseCase, detectConstraintsUseCase, ) { - @AssistedFactory - interface Factory { - fun create(coroutineScope: CoroutineScope): TriggerKeyMapFromOtherAppsController - } - private var keyMapList = emptyList() init { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt index 33274f7866..b4e90d3d04 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt @@ -172,7 +172,7 @@ abstract class BaseAccessibilityService : } } - val keyEventRelayServiceWrapper: KeyEventRelayServiceWrapperImpl by lazy { + val keyEventRelayServiceWrapper: KeyEventRelayServiceWrapperImpl by lazy { KeyEventRelayServiceWrapperImpl( ctx = this, id = CALLBACK_ID_ACCESSIBILITY_SERVICE, @@ -181,11 +181,13 @@ abstract class BaseAccessibilityService : ) } - val imeInputEventInjector = ImeInputEventInjectorImpl( - this, - keyEventRelayService = keyEventRelayServiceWrapper, - inputMethodAdapter = inputMethodAdapter, - ) + val imeInputEventInjector by lazy { + ImeInputEventInjectorImpl( + this, + keyEventRelayService = keyEventRelayServiceWrapper, + inputMethodAdapter = inputMethodAdapter, + ) + } override val lifecycle: Lifecycle get() = lifecycleRegistry diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt index 893bccdf1e..b7bb960957 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt @@ -11,11 +11,15 @@ import androidx.lifecycle.lifecycleScope import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.actions.PerformActionsUseCaseImpl import io.github.sds100.keymapper.base.actions.TestActionEvent +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCaseImpl import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.TriggerKeyMapEvent import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCaseImpl import io.github.sds100.keymapper.base.keymaps.detection.DetectScreenOffKeyEventsController import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker import io.github.sds100.keymapper.base.keymaps.detection.KeyMapController @@ -61,12 +65,17 @@ import kotlinx.coroutines.withContext import timber.log.Timber import javax.inject.Inject -@ServiceScoped abstract class BaseAccessibilityServiceController( private val service: BaseAccessibilityService ) { - @Inject - lateinit var keyMapControllerFactory: KeyMapController.Factory + companion object { + + /** + * How long should the accessibility service record a trigger in seconds. + */ + private const val RECORD_TRIGGER_TIMER_LENGTH = 5 + private const val DEFAULT_NOTIFICATION_TIMEOUT = 200L + } @Inject lateinit var rerouteKeyEventsControllerFactory: RerouteKeyEventsController.Factory @@ -75,13 +84,13 @@ abstract class BaseAccessibilityServiceController( lateinit var accessibilityNodeRecorderFactory: AccessibilityNodeRecorder.Factory @Inject - lateinit var triggerKeyMapFromOtherAppsControllerFactory: TriggerKeyMapFromOtherAppsController.Factory + lateinit var performActionsUseCaseFactory: PerformActionsUseCaseImpl.Factory @Inject - lateinit var performActionsUseCase: PerformActionsUseCase + lateinit var detectKeyMapsUseCaseFactory: DetectKeyMapsUseCaseImpl.Factory @Inject - lateinit var detectKeyMapsUseCase: DetectKeyMapsUseCase + lateinit var detectConstraintsUseCaseFactory: DetectConstraintsUseCaseImpl.Factory @Inject lateinit var fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase @@ -98,40 +107,88 @@ abstract class BaseAccessibilityServiceController( @Inject lateinit var settingsRepository: PreferenceRepository - val keyMapController: KeyMapController = keyMapControllerFactory.create(service.lifecycleScope) - val rerouteKeyEventsController: RerouteKeyEventsController = + private val performActionsUseCase: PerformActionsUseCase by lazy { + performActionsUseCaseFactory.create( + accessibilityService = service, + imeInputEventInjector = service.imeInputEventInjector + ) + } + + private val detectKeyMapsUseCase: DetectKeyMapsUseCase by lazy { + detectKeyMapsUseCaseFactory.create( + accessibilityService = service, + coroutineScope = service.lifecycleScope, + imeInputEventInjector = service.imeInputEventInjector + ) + } + + val detectConstraintsUseCase: DetectConstraintsUseCase by lazy { + detectConstraintsUseCaseFactory.create(service) + } + + val keyMapController: KeyMapController by lazy { + KeyMapController( + service.lifecycleScope, + detectKeyMapsUseCase, + performActionsUseCase, + detectConstraintsUseCase + ) + } + + + val triggerKeyMapFromOtherAppsController: TriggerKeyMapFromOtherAppsController by lazy { + TriggerKeyMapFromOtherAppsController( + service.lifecycleScope, + detectKeyMapsUseCase, + performActionsUseCase, + detectConstraintsUseCase + ) + } + + val rerouteKeyEventsController: RerouteKeyEventsController by lazy { rerouteKeyEventsControllerFactory.create( service.lifecycleScope, service.imeInputEventInjector ) - val accessibilityNodeRecorder: AccessibilityNodeRecorder = + } + + val accessibilityNodeRecorder: AccessibilityNodeRecorder by lazy { accessibilityNodeRecorderFactory.create(service) - val triggerKeyMapFromOtherAppsController: TriggerKeyMapFromOtherAppsController = - triggerKeyMapFromOtherAppsControllerFactory.create(service.lifecycleScope) + } - companion object { - /** - * How long should the accessibility service record a trigger in seconds. - */ - private const val RECORD_TRIGGER_TIMER_LENGTH = 5 + private val detectScreenOffKeyEventsController by lazy { + DetectScreenOffKeyEventsController( + suAdapter, + devicesAdapter, + ) { event -> - private const val DEFAULT_NOTIFICATION_TIMEOUT = 200L + if (!isPaused.value) { + withContext(Dispatchers.Main.immediate) { + keyMapController.onKeyEvent(event) + } + } + } } private var recordingTriggerJob: Job? = null + private val recordingTrigger: Boolean get() = recordingTriggerJob != null && recordingTriggerJob?.isActive == true + private val recordDpadMotionEventTracker: DpadMotionEventTracker = DpadMotionEventTracker() - val isPaused: StateFlow = pauseKeyMapsUseCase.isPaused - .stateIn(service.lifecycleScope, SharingStarted.Eagerly, false) + val isPaused: StateFlow by lazy { + pauseKeyMapsUseCase.isPaused + .stateIn(service.lifecycleScope, SharingStarted.Eagerly, false) + } - private val screenOffTriggersEnabled: StateFlow = + private val screenOffTriggersEnabled: StateFlow by lazy { detectKeyMapsUseCase.detectScreenOffTriggers .stateIn(service.lifecycleScope, SharingStarted.Eagerly, false) + } - private val changeImeOnInputFocusFlow: StateFlow = + private val changeImeOnInputFocusFlow: StateFlow by lazy { settingsRepository .get(Keys.changeImeOnInputFocus) .map { it ?: PreferenceDefaults.CHANGE_IME_ON_INPUT_FOCUS } @@ -140,19 +197,7 @@ abstract class BaseAccessibilityServiceController( SharingStarted.Lazily, PreferenceDefaults.CHANGE_IME_ON_INPUT_FOCUS, ) - - private val detectScreenOffKeyEventsController = - DetectScreenOffKeyEventsController( - suAdapter, - devicesAdapter, - ) { event -> - - if (!isPaused.value) { - withContext(Dispatchers.Main.immediate) { - keyMapController.onKeyEvent(event) - } - } - } + } private val initialServiceFlags: Int by lazy { var flags = AccessibilityServiceInfo.FLAG_REQUEST_FILTER_KEY_EVENTS From 32312a66d3d5bf6185a4307b1f0da7cf8f457355 Mon Sep 17 00:00:00 2001 From: sds100 Date: Thu, 29 May 2025 22:22:42 +0200 Subject: [PATCH 48/71] #1711 app no longer crashes on start up of the accessibility service --- .../RerouteKeyEventsController.kt | 4 +- .../BaseAccessibilityServiceController.kt | 151 +++++++----------- 2 files changed, 56 insertions(+), 99 deletions(-) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt index 76e83f856f..fcff7ba782 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt @@ -27,6 +27,7 @@ class RerouteKeyEventsController @AssistedInject constructor( private val coroutineScope: CoroutineScope, @Assisted private val keyMapperImeMessenger: ImeInputEventInjector, + private val useCaseFactory: RerouteKeyEventsUseCaseImpl.Factory ) { @AssistedFactory interface Factory { @@ -36,9 +37,6 @@ class RerouteKeyEventsController @AssistedInject constructor( ): RerouteKeyEventsController } - @Inject - lateinit var useCaseFactory: RerouteKeyEventsUseCaseImpl.Factory - private val useCase = useCaseFactory.create(keyMapperImeMessenger) /** diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt index b7bb960957..c8d6e8ab1f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt @@ -66,7 +66,17 @@ import timber.log.Timber import javax.inject.Inject abstract class BaseAccessibilityServiceController( - private val service: BaseAccessibilityService + private val service: BaseAccessibilityService, + private val rerouteKeyEventsControllerFactory: RerouteKeyEventsController.Factory, + private val accessibilityNodeRecorderFactory: AccessibilityNodeRecorder.Factory, + private val performActionsUseCaseFactory: PerformActionsUseCaseImpl.Factory, + private val detectKeyMapsUseCaseFactory: DetectKeyMapsUseCaseImpl.Factory, + private val detectConstraintsUseCaseFactory: DetectConstraintsUseCaseImpl.Factory, + private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, + private val pauseKeyMapsUseCase: PauseKeyMapsUseCase, + private val devicesAdapter: DevicesAdapter, + private val suAdapter: SuAdapter, + private val settingsRepository: PreferenceRepository ) { companion object { @@ -77,95 +87,47 @@ abstract class BaseAccessibilityServiceController( private const val DEFAULT_NOTIFICATION_TIMEOUT = 200L } - @Inject - lateinit var rerouteKeyEventsControllerFactory: RerouteKeyEventsController.Factory - - @Inject - lateinit var accessibilityNodeRecorderFactory: AccessibilityNodeRecorder.Factory - - @Inject - lateinit var performActionsUseCaseFactory: PerformActionsUseCaseImpl.Factory - - @Inject - lateinit var detectKeyMapsUseCaseFactory: DetectKeyMapsUseCaseImpl.Factory - - @Inject - lateinit var detectConstraintsUseCaseFactory: DetectConstraintsUseCaseImpl.Factory - - @Inject - lateinit var fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase - - @Inject - lateinit var pauseKeyMapsUseCase: PauseKeyMapsUseCase - - @Inject - lateinit var devicesAdapter: DevicesAdapter - - @Inject - lateinit var suAdapter: SuAdapter - - @Inject - lateinit var settingsRepository: PreferenceRepository - - private val performActionsUseCase: PerformActionsUseCase by lazy { - performActionsUseCaseFactory.create( - accessibilityService = service, - imeInputEventInjector = service.imeInputEventInjector - ) - } - - private val detectKeyMapsUseCase: DetectKeyMapsUseCase by lazy { - detectKeyMapsUseCaseFactory.create( - accessibilityService = service, - coroutineScope = service.lifecycleScope, - imeInputEventInjector = service.imeInputEventInjector - ) - } - - val detectConstraintsUseCase: DetectConstraintsUseCase by lazy { - detectConstraintsUseCaseFactory.create(service) - } - - val keyMapController: KeyMapController by lazy { - KeyMapController( - service.lifecycleScope, - detectKeyMapsUseCase, - performActionsUseCase, - detectConstraintsUseCase - ) - } - - - val triggerKeyMapFromOtherAppsController: TriggerKeyMapFromOtherAppsController by lazy { - TriggerKeyMapFromOtherAppsController( - service.lifecycleScope, - detectKeyMapsUseCase, - performActionsUseCase, - detectConstraintsUseCase - ) - } - - val rerouteKeyEventsController: RerouteKeyEventsController by lazy { - rerouteKeyEventsControllerFactory.create( - service.lifecycleScope, - service.imeInputEventInjector - ) - } - - val accessibilityNodeRecorder: AccessibilityNodeRecorder by lazy { - accessibilityNodeRecorderFactory.create(service) - } - - private val detectScreenOffKeyEventsController by lazy { - DetectScreenOffKeyEventsController( - suAdapter, - devicesAdapter, - ) { event -> - - if (!isPaused.value) { - withContext(Dispatchers.Main.immediate) { - keyMapController.onKeyEvent(event) - } + private val performActionsUseCase = performActionsUseCaseFactory.create( + accessibilityService = service, + imeInputEventInjector = service.imeInputEventInjector + ) + + private val detectKeyMapsUseCase = detectKeyMapsUseCaseFactory.create( + accessibilityService = service, + coroutineScope = service.lifecycleScope, + imeInputEventInjector = service.imeInputEventInjector + ) + + val detectConstraintsUseCase = detectConstraintsUseCaseFactory.create(service) + + val keyMapController = KeyMapController( + service.lifecycleScope, + detectKeyMapsUseCase, + performActionsUseCase, + detectConstraintsUseCase + ) + + val triggerKeyMapFromOtherAppsController = TriggerKeyMapFromOtherAppsController( + service.lifecycleScope, + detectKeyMapsUseCase, + performActionsUseCase, + detectConstraintsUseCase + ) + + val rerouteKeyEventsController = rerouteKeyEventsControllerFactory.create( + service.lifecycleScope, + service.imeInputEventInjector + ) + + val accessibilityNodeRecorder = accessibilityNodeRecorderFactory.create(service) + + private val detectScreenOffKeyEventsController = DetectScreenOffKeyEventsController( + suAdapter, + devicesAdapter, + ) { event -> + if (!isPaused.value) { + withContext(Dispatchers.Main.immediate) { + keyMapController.onKeyEvent(event) } } } @@ -178,17 +140,15 @@ abstract class BaseAccessibilityServiceController( private val recordDpadMotionEventTracker: DpadMotionEventTracker = DpadMotionEventTracker() - val isPaused: StateFlow by lazy { + val isPaused: StateFlow = pauseKeyMapsUseCase.isPaused .stateIn(service.lifecycleScope, SharingStarted.Eagerly, false) - } - private val screenOffTriggersEnabled: StateFlow by lazy { + private val screenOffTriggersEnabled: StateFlow = detectKeyMapsUseCase.detectScreenOffTriggers .stateIn(service.lifecycleScope, SharingStarted.Eagerly, false) - } - private val changeImeOnInputFocusFlow: StateFlow by lazy { + private val changeImeOnInputFocusFlow: StateFlow = settingsRepository .get(Keys.changeImeOnInputFocus) .map { it ?: PreferenceDefaults.CHANGE_IME_ON_INPUT_FOCUS } @@ -197,7 +157,6 @@ abstract class BaseAccessibilityServiceController( SharingStarted.Lazily, PreferenceDefaults.CHANGE_IME_ON_INPUT_FOCUS, ) - } private val initialServiceFlags: Int by lazy { var flags = AccessibilityServiceInfo.FLAG_REQUEST_FILTER_KEY_EVENTS From 13158ea53682e04433a9187f0cb1a06003006caa Mon Sep 17 00:00:00 2001 From: sds100 Date: Thu, 29 May 2025 22:31:26 +0200 Subject: [PATCH 49/71] #1711 FOSS app compiles again --- app/build.gradle.kts | 2 +- .../github/sds100/keymapper/MainActivity.kt | 1 + .../sds100/keymapper/home/HomeViewModel.kt | 4 +- .../AccessibilityServiceController.kt | 65 ++++++++++--------- .../accessibility/MyAccessibilityService.kt | 15 ----- {base => app}/version.properties | 0 base/build.gradle.kts | 2 +- 7 files changed, 40 insertions(+), 49 deletions(-) rename {base => app}/version.properties (100%) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c0b6162f4d..ef53a56736 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -22,7 +22,7 @@ android { buildToolsVersion = libs.versions.build.tools.get() val versionProperties = Properties().apply { - rootProject.file("base/version.properties").inputStream().use { load(it) } + project.file("version.properties").inputStream().use { load(it) } } defaultConfig { diff --git a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt index a3939b3fcc..b87d2aed4b 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt @@ -8,6 +8,7 @@ import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.BaseMainActivity import io.github.sds100.keymapper.base.utils.ui.showPopups import io.github.sds100.keymapper.base.databinding.ActivityMainBinding +import io.github.sds100.keymapper.base.R @AndroidEntryPoint class MainActivity : BaseMainActivity() { diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt index 4d425b60bb..197d51e1a2 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt @@ -27,7 +27,6 @@ class HomeViewModel @Inject constructor( private val setupGuiKeyboard: SetupGuiKeyboardUseCase, private val sortKeyMaps: SortKeyMapsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, - private val buildConfigProvider: BuildConfigProvider, navigationProvider: NavigationProvider, popupViewModel: PopupViewModel ) : BaseHomeViewModel( @@ -40,7 +39,6 @@ class HomeViewModel @Inject constructor( setupGuiKeyboard, sortKeyMaps, showInputMethodPickerUseCase, - buildConfigProvider, navigationProvider, popupViewModel -) +) \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt index 3ea5630681..33bd409e78 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt @@ -1,51 +1,58 @@ package io.github.sds100.keymapper.system.accessibility +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject import io.github.sds100.keymapper.base.actions.PerformActionsUseCase +import io.github.sds100.keymapper.base.actions.PerformActionsUseCaseImpl import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase +import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCaseImpl import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase +import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCaseImpl +import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsController import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase +import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeRecorder import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityServiceController import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.devices.DevicesAdapter +import io.github.sds100.keymapper.system.display.DisplayAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.root.SuAdapter import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow -class AccessibilityServiceController( - coroutineScope: CoroutineScope, - accessibilityService: MyAccessibilityService, - inputEvents: SharedFlow, - outputEvents: MutableSharedFlow, - detectConstraintsUseCase: DetectConstraintsUseCase, - performActionsUseCase: PerformActionsUseCase, - detectKeyMapsUseCase: DetectKeyMapsUseCase, - fingerprintGesturesSupportedUseCase: FingerprintGesturesSupportedUseCase, - rerouteKeyEventsUseCase: RerouteKeyEventsUseCase, +class AccessibilityServiceController @AssistedInject constructor( + @Assisted + private val service: MyAccessibilityService, + rerouteKeyEventsControllerFactory: RerouteKeyEventsController.Factory, + accessibilityNodeRecorderFactory: AccessibilityNodeRecorder.Factory, + performActionsUseCaseFactory: PerformActionsUseCaseImpl.Factory, + detectKeyMapsUseCaseFactory: DetectKeyMapsUseCaseImpl.Factory, + detectConstraintsUseCaseFactory: DetectConstraintsUseCaseImpl.Factory, + fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, pauseKeyMapsUseCase: PauseKeyMapsUseCase, devicesAdapter: DevicesAdapter, suAdapter: SuAdapter, - inputMethodAdapter: InputMethodAdapter, - settingsRepository: PreferenceRepository, - nodeRepository: AccessibilityNodeRepository, + settingsRepository: PreferenceRepository ) : BaseAccessibilityServiceController( - coroutineScope, - accessibilityService, - inputEvents, - outputEvents, - detectConstraintsUseCase, - performActionsUseCase, - detectKeyMapsUseCase, - fingerprintGesturesSupportedUseCase, - rerouteKeyEventsUseCase, - pauseKeyMapsUseCase, - devicesAdapter, - suAdapter, - inputMethodAdapter, - settingsRepository, - nodeRepository, -) + service = service, + rerouteKeyEventsControllerFactory = rerouteKeyEventsControllerFactory, + accessibilityNodeRecorderFactory = accessibilityNodeRecorderFactory, + performActionsUseCaseFactory = performActionsUseCaseFactory, + detectKeyMapsUseCaseFactory = detectKeyMapsUseCaseFactory, + detectConstraintsUseCaseFactory = detectConstraintsUseCaseFactory, + fingerprintGesturesSupported = fingerprintGesturesSupported, + pauseKeyMapsUseCase = pauseKeyMapsUseCase, + devicesAdapter = devicesAdapter, + suAdapter = suAdapter, + settingsRepository = settingsRepository +){ + @AssistedFactory + interface Factory { + fun create(service: MyAccessibilityService): AccessibilityServiceController + } +} \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt index fdec6b1150..6d470eb0a7 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/MyAccessibilityService.kt @@ -1,24 +1,9 @@ package io.github.sds100.keymapper.system.accessibility import android.content.Intent -import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.base.actions.PerformActionsUseCaseFactory -import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCaseFactory -import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase -import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCaseFactory -import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCaseImpl -import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapterImpl import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityService import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityServiceController -import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjectorImpl -import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository -import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.system.devices.DevicesAdapter -import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.system.root.SuAdapter -import kotlinx.coroutines.CoroutineScope import timber.log.Timber import javax.inject.Inject diff --git a/base/version.properties b/app/version.properties similarity index 100% rename from base/version.properties rename to app/version.properties diff --git a/base/build.gradle.kts b/base/build.gradle.kts index 31553fdd9b..fad265e033 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -18,7 +18,7 @@ android { compileSdk = libs.versions.compile.sdk.get().toInt() val versionProperties = Properties().apply { - project.file("version.properties").inputStream().use { load(it) } + project.file("../app/version.properties").inputStream().use { load(it) } } defaultConfig { From fe98aa18f5d8735c69f867d06670b7f03ccea664 Mon Sep 17 00:00:00 2001 From: sds100 Date: Thu, 29 May 2025 22:36:58 +0200 Subject: [PATCH 50/71] #1711 remove unnecessary libraries from build.gradle files --- app/build.gradle.kts | 55 ++++++++++++------------------------------- base/build.gradle.kts | 4 ---- 2 files changed, 15 insertions(+), 44 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ef53a56736..2db0a96bf6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -136,7 +136,6 @@ android { dependencies { implementation(fileTree(mapOf("include" to listOf("*.jar"), "dir" to "libs"))) - // TODO is just base and common required? implementation(project(":common")) implementation(project(":base")) implementation(project(":api")) @@ -144,51 +143,19 @@ dependencies { implementation(project(":system")) compileOnly(project(":systemstubs")) - // TODO delete the unused libraries and plugins - - // kotlin stuff - implementation(libs.kotlinx.coroutines.android) - implementation(libs.kotlinx.serialization.json) - - // random stuff - implementation(libs.google.android.material) - implementation(libs.kotson) - implementation(libs.airbnb.epoxy) - implementation(libs.airbnb.epoxy.databinding) - debugImplementation(libs.androidx.ui.tooling) - kapt(libs.airbnb.epoxy.processor) - implementation(libs.jakewharton.timber) - implementation(libs.net.lingala.zip4j) - implementation(libs.anggrayudi.storage) - implementation(libs.github.mflisar.dragselectrecyclerview) - implementation(libs.google.flexbox) - implementation(libs.lsposed.hiddenapibypass) - implementation(libs.squareup.okhttp) coreLibraryDesugaring(libs.desugar.jdk.libs) - implementation(libs.canopas.introshowcaseview) - implementation(libs.dagger.hilt.android) - ksp(libs.dagger.hilt.android.compiler) - // splitties - implementation(libs.bundles.splitties) + // Other + implementation(libs.jakewharton.timber) - // androidx - implementation(libs.androidx.legacy.support.core.ui) + // Androidx implementation(libs.androidx.core.ktx) - implementation(libs.androidx.activity.ktx) - implementation(libs.androidx.fragment.ktx) - implementation(libs.bundles.androidx.lifecycle) - implementation(libs.androidx.room.ktx) - implementation(libs.bundles.androidx.navigation) + implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.activity.compose) + implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.multidex) implementation(libs.androidx.appcompat) - implementation(libs.androidx.recyclerview) - implementation(libs.androidx.preference.ktx) - implementation(libs.androidx.constraintlayout) - implementation(libs.androidx.lifecycle.extensions) // Note: Deprecated - implementation(libs.androidx.viewpager2) - implementation(libs.androidx.core.splashscreen) - ksp(libs.androidx.room.compiler) + implementation(libs.bundles.androidx.navigation) // Compose implementation(platform(libs.androidx.compose.bom)) @@ -202,4 +169,12 @@ dependencies { implementation(libs.androidx.hilt.navigation.compose) implementation(libs.google.accompanist.drawablepainter) implementation(libs.androidx.compose.ui.tooling) + + // Dagger + implementation(libs.dagger.hilt.android) + ksp(libs.dagger.hilt.android.compiler) + + debugImplementation(libs.androidx.ui.tooling) + + testImplementation(libs.junit) } diff --git a/base/build.gradle.kts b/base/build.gradle.kts index fad265e033..0dff9e02aa 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -91,11 +91,8 @@ dependencies { debugImplementation(libs.androidx.ui.tooling) kapt(libs.airbnb.epoxy.processor) implementation(libs.jakewharton.timber) - implementation(libs.net.lingala.zip4j) - implementation(libs.anggrayudi.storage) implementation(libs.github.mflisar.dragselectrecyclerview) implementation(libs.google.flexbox) - implementation(libs.squareup.okhttp) coreLibraryDesugaring(libs.desugar.jdk.libs) implementation(libs.canopas.introshowcaseview) implementation(libs.dagger.hilt.android) @@ -109,7 +106,6 @@ dependencies { implementation(libs.androidx.fragment.ktx) implementation(libs.bundles.androidx.lifecycle) implementation(libs.bundles.androidx.navigation) - implementation(libs.androidx.multidex) implementation(libs.androidx.appcompat) implementation(libs.androidx.recyclerview) implementation(libs.androidx.preference.ktx) From 8acf18f8e81994f87cf55fecf4e142d44a5c39c7 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 13:19:41 +0200 Subject: [PATCH 51/71] #1711 test that DetectKeyMapsUseCase.kt is singleton --- .../keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt index 2b990161d9..e00d65f4ad 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt @@ -47,7 +47,6 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import timber.log.Timber -// TODO test that only one instance is created. class DetectKeyMapsUseCaseImpl @AssistedInject constructor( @Assisted private val imeInputEventInjector: ImeInputEventInjector, From 5437c4b54aa9d6b09fd85143df94ab6976c45a58 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 13:32:16 +0200 Subject: [PATCH 52/71] #1711 add back missing dependencies in base module --- base/build.gradle.kts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/base/build.gradle.kts b/base/build.gradle.kts index 0dff9e02aa..7464caa89b 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -77,8 +77,6 @@ dependencies { implementation(project(":system")) implementation(project(":systemstubs")) - // TODO delete the unused libraries and plugins - // kotlin stuff implementation(libs.kotlinx.coroutines.android) implementation(libs.kotlinx.serialization.json) @@ -91,8 +89,10 @@ dependencies { debugImplementation(libs.androidx.ui.tooling) kapt(libs.airbnb.epoxy.processor) implementation(libs.jakewharton.timber) + implementation(libs.anggrayudi.storage) implementation(libs.github.mflisar.dragselectrecyclerview) implementation(libs.google.flexbox) + implementation(libs.squareup.okhttp) coreLibraryDesugaring(libs.desugar.jdk.libs) implementation(libs.canopas.introshowcaseview) implementation(libs.dagger.hilt.android) @@ -106,6 +106,7 @@ dependencies { implementation(libs.androidx.fragment.ktx) implementation(libs.bundles.androidx.lifecycle) implementation(libs.bundles.androidx.navigation) + implementation(libs.androidx.multidex) implementation(libs.androidx.appcompat) implementation(libs.androidx.recyclerview) implementation(libs.androidx.preference.ktx) From 3f6d04d89a9d3a27cffbb0f7f9efe63090253ef1 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 13:35:01 +0200 Subject: [PATCH 53/71] #1711 move ci and debug resources into app module --- {base => app}/src/ci/ic_launcher-web.png | Bin .../src/ci/res/drawable/ic_launcher_foreground.xml | 0 .../src/ci/res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../ci/res/mipmap-anydpi-v26/ic_launcher_round.xml | 0 .../src/ci/res/mipmap-hdpi/ic_launcher.png | Bin .../src/ci/res/mipmap-hdpi/ic_launcher_round.png | Bin .../src/ci/res/mipmap-mdpi/ic_launcher.png | Bin .../src/ci/res/mipmap-mdpi/ic_launcher_round.png | Bin .../src/ci/res/mipmap-xhdpi/ic_launcher.png | Bin .../src/ci/res/mipmap-xhdpi/ic_launcher_round.png | Bin .../src/ci/res/mipmap-xxhdpi/ic_launcher.png | Bin .../src/ci/res/mipmap-xxhdpi/ic_launcher_round.png | Bin .../src/ci/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../src/ci/res/mipmap-xxxhdpi/ic_launcher_round.png | Bin {base => app}/src/ci/res/values/strings.xml | 0 {base => app}/src/debug/ic_launcher-web.png | Bin .../debug/res/drawable/ic_launcher_foreground.xml | 0 .../src/debug/res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../res/mipmap-anydpi-v26/ic_launcher_round.xml | 0 .../src/debug/res/mipmap-hdpi/ic_launcher.png | Bin .../src/debug/res/mipmap-hdpi/ic_launcher_round.png | Bin .../src/debug/res/mipmap-mdpi/ic_launcher.png | Bin .../src/debug/res/mipmap-mdpi/ic_launcher_round.png | Bin .../src/debug/res/mipmap-xhdpi/ic_launcher.png | Bin .../debug/res/mipmap-xhdpi/ic_launcher_round.png | Bin .../src/debug/res/mipmap-xxhdpi/ic_launcher.png | Bin .../debug/res/mipmap-xxhdpi/ic_launcher_round.png | Bin .../src/debug/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../debug/res/mipmap-xxxhdpi/ic_launcher_round.png | Bin {base => app}/src/debug/res/values/strings.xml | 0 30 files changed, 0 insertions(+), 0 deletions(-) rename {base => app}/src/ci/ic_launcher-web.png (100%) rename {base => app}/src/ci/res/drawable/ic_launcher_foreground.xml (100%) rename {base => app}/src/ci/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename {base => app}/src/ci/res/mipmap-anydpi-v26/ic_launcher_round.xml (100%) rename {base => app}/src/ci/res/mipmap-hdpi/ic_launcher.png (100%) rename {base => app}/src/ci/res/mipmap-hdpi/ic_launcher_round.png (100%) rename {base => app}/src/ci/res/mipmap-mdpi/ic_launcher.png (100%) rename {base => app}/src/ci/res/mipmap-mdpi/ic_launcher_round.png (100%) rename {base => app}/src/ci/res/mipmap-xhdpi/ic_launcher.png (100%) rename {base => app}/src/ci/res/mipmap-xhdpi/ic_launcher_round.png (100%) rename {base => app}/src/ci/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {base => app}/src/ci/res/mipmap-xxhdpi/ic_launcher_round.png (100%) rename {base => app}/src/ci/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {base => app}/src/ci/res/mipmap-xxxhdpi/ic_launcher_round.png (100%) rename {base => app}/src/ci/res/values/strings.xml (100%) rename {base => app}/src/debug/ic_launcher-web.png (100%) rename {base => app}/src/debug/res/drawable/ic_launcher_foreground.xml (100%) rename {base => app}/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename {base => app}/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml (100%) rename {base => app}/src/debug/res/mipmap-hdpi/ic_launcher.png (100%) rename {base => app}/src/debug/res/mipmap-hdpi/ic_launcher_round.png (100%) rename {base => app}/src/debug/res/mipmap-mdpi/ic_launcher.png (100%) rename {base => app}/src/debug/res/mipmap-mdpi/ic_launcher_round.png (100%) rename {base => app}/src/debug/res/mipmap-xhdpi/ic_launcher.png (100%) rename {base => app}/src/debug/res/mipmap-xhdpi/ic_launcher_round.png (100%) rename {base => app}/src/debug/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {base => app}/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png (100%) rename {base => app}/src/debug/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {base => app}/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png (100%) rename {base => app}/src/debug/res/values/strings.xml (100%) diff --git a/base/src/ci/ic_launcher-web.png b/app/src/ci/ic_launcher-web.png similarity index 100% rename from base/src/ci/ic_launcher-web.png rename to app/src/ci/ic_launcher-web.png diff --git a/base/src/ci/res/drawable/ic_launcher_foreground.xml b/app/src/ci/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from base/src/ci/res/drawable/ic_launcher_foreground.xml rename to app/src/ci/res/drawable/ic_launcher_foreground.xml diff --git a/base/src/ci/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/ci/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from base/src/ci/res/mipmap-anydpi-v26/ic_launcher.xml rename to app/src/ci/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/base/src/ci/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/ci/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from base/src/ci/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to app/src/ci/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/base/src/ci/res/mipmap-hdpi/ic_launcher.png b/app/src/ci/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from base/src/ci/res/mipmap-hdpi/ic_launcher.png rename to app/src/ci/res/mipmap-hdpi/ic_launcher.png diff --git a/base/src/ci/res/mipmap-hdpi/ic_launcher_round.png b/app/src/ci/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from base/src/ci/res/mipmap-hdpi/ic_launcher_round.png rename to app/src/ci/res/mipmap-hdpi/ic_launcher_round.png diff --git a/base/src/ci/res/mipmap-mdpi/ic_launcher.png b/app/src/ci/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from base/src/ci/res/mipmap-mdpi/ic_launcher.png rename to app/src/ci/res/mipmap-mdpi/ic_launcher.png diff --git a/base/src/ci/res/mipmap-mdpi/ic_launcher_round.png b/app/src/ci/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from base/src/ci/res/mipmap-mdpi/ic_launcher_round.png rename to app/src/ci/res/mipmap-mdpi/ic_launcher_round.png diff --git a/base/src/ci/res/mipmap-xhdpi/ic_launcher.png b/app/src/ci/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from base/src/ci/res/mipmap-xhdpi/ic_launcher.png rename to app/src/ci/res/mipmap-xhdpi/ic_launcher.png diff --git a/base/src/ci/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/ci/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from base/src/ci/res/mipmap-xhdpi/ic_launcher_round.png rename to app/src/ci/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/base/src/ci/res/mipmap-xxhdpi/ic_launcher.png b/app/src/ci/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from base/src/ci/res/mipmap-xxhdpi/ic_launcher.png rename to app/src/ci/res/mipmap-xxhdpi/ic_launcher.png diff --git a/base/src/ci/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/ci/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from base/src/ci/res/mipmap-xxhdpi/ic_launcher_round.png rename to app/src/ci/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/base/src/ci/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/ci/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from base/src/ci/res/mipmap-xxxhdpi/ic_launcher.png rename to app/src/ci/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/base/src/ci/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/ci/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from base/src/ci/res/mipmap-xxxhdpi/ic_launcher_round.png rename to app/src/ci/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/base/src/ci/res/values/strings.xml b/app/src/ci/res/values/strings.xml similarity index 100% rename from base/src/ci/res/values/strings.xml rename to app/src/ci/res/values/strings.xml diff --git a/base/src/debug/ic_launcher-web.png b/app/src/debug/ic_launcher-web.png similarity index 100% rename from base/src/debug/ic_launcher-web.png rename to app/src/debug/ic_launcher-web.png diff --git a/base/src/debug/res/drawable/ic_launcher_foreground.xml b/app/src/debug/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from base/src/debug/res/drawable/ic_launcher_foreground.xml rename to app/src/debug/res/drawable/ic_launcher_foreground.xml diff --git a/base/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from base/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml rename to app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/base/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from base/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/base/src/debug/res/mipmap-hdpi/ic_launcher.png b/app/src/debug/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from base/src/debug/res/mipmap-hdpi/ic_launcher.png rename to app/src/debug/res/mipmap-hdpi/ic_launcher.png diff --git a/base/src/debug/res/mipmap-hdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from base/src/debug/res/mipmap-hdpi/ic_launcher_round.png rename to app/src/debug/res/mipmap-hdpi/ic_launcher_round.png diff --git a/base/src/debug/res/mipmap-mdpi/ic_launcher.png b/app/src/debug/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from base/src/debug/res/mipmap-mdpi/ic_launcher.png rename to app/src/debug/res/mipmap-mdpi/ic_launcher.png diff --git a/base/src/debug/res/mipmap-mdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from base/src/debug/res/mipmap-mdpi/ic_launcher_round.png rename to app/src/debug/res/mipmap-mdpi/ic_launcher_round.png diff --git a/base/src/debug/res/mipmap-xhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from base/src/debug/res/mipmap-xhdpi/ic_launcher.png rename to app/src/debug/res/mipmap-xhdpi/ic_launcher.png diff --git a/base/src/debug/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from base/src/debug/res/mipmap-xhdpi/ic_launcher_round.png rename to app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/base/src/debug/res/mipmap-xxhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from base/src/debug/res/mipmap-xxhdpi/ic_launcher.png rename to app/src/debug/res/mipmap-xxhdpi/ic_launcher.png diff --git a/base/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from base/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png rename to app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/base/src/debug/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from base/src/debug/res/mipmap-xxxhdpi/ic_launcher.png rename to app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/base/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from base/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png rename to app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/base/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml similarity index 100% rename from base/src/debug/res/values/strings.xml rename to app/src/debug/res/values/strings.xml From d0640a74834449390a4b209588e49fe88c96f9e3 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 13:37:37 +0200 Subject: [PATCH 54/71] #1711 delete old "free" build flavor code --- .../trigger/AdvancedTriggersBottomSheet.kt | 0 .../sds100/keymapper/trigger/TriggerScreen.kt | 28 +++++++------- .../floating/FloatingLayoutsScreen.kt | 15 -------- .../floating/ListFloatingLayoutsUseCase.kt | 23 ------------ .../floating/ListFloatingLayoutsViewModel.kt | 26 ------------- .../home/HomeFloatingLayoutsScreen.kt | 18 --------- .../AssistantTriggerSetupBottomSheet.kt | 9 ----- .../trigger/ConfigTriggerViewModel.kt | 37 ------------------- 8 files changed, 15 insertions(+), 141 deletions(-) rename {base/src/free => app/src/main}/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt (100%) delete mode 100644 base/src/free/java/io/github/sds100/keymapper/floating/FloatingLayoutsScreen.kt delete mode 100644 base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt delete mode 100644 base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt delete mode 100644 base/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt delete mode 100644 base/src/free/java/io/github/sds100/keymapper/trigger/AssistantTriggerSetupBottomSheet.kt delete mode 100644 base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt diff --git a/base/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt similarity index 100% rename from base/src/free/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt rename to app/src/main/java/io/github/sds100/keymapper/trigger/AdvancedTriggersBottomSheet.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt index e48d53e301..bc07b33a13 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt @@ -1,26 +1,28 @@ package io.github.sds100.keymapper.trigger +import androidx.compose.foundation.layout.systemBarsPadding +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import io.github.sds100.keymapper.base.trigger.BaseTriggerScreen +@OptIn(ExperimentalMaterial3Api::class) @Composable fun TriggerScreen(modifier: Modifier = Modifier, viewModel: ConfigTriggerViewModel) { + val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) - // TODO -// HandleAssistantTriggerSetupBottomSheet(viewModel = viewModel) -// -// if (viewModel.showAdvancedTriggersBottomSheet) { -// AdvancedTriggersBottomSheet( -// modifier = Modifier.systemBarsPadding(), -// viewModel = viewModel, -// onDismissRequest = { -// viewModel.showAdvancedTriggersBottomSheet = false -// }, -// sheetState = sheetState, -// ) -// } + if (viewModel.showAdvancedTriggersBottomSheet) { + AdvancedTriggersBottomSheet( + modifier = Modifier.systemBarsPadding(), + viewModel = viewModel, + onDismissRequest = { + viewModel.showAdvancedTriggersBottomSheet = false + }, + sheetState = sheetState, + ) + } BaseTriggerScreen(modifier, viewModel) } diff --git a/base/src/free/java/io/github/sds100/keymapper/floating/FloatingLayoutsScreen.kt b/base/src/free/java/io/github/sds100/keymapper/floating/FloatingLayoutsScreen.kt deleted file mode 100644 index ed0f903e9e..0000000000 --- a/base/src/free/java/io/github/sds100/keymapper/floating/FloatingLayoutsScreen.kt +++ /dev/null @@ -1,15 +0,0 @@ -package io.github.sds100.keymapper.floating - -import androidx.compose.foundation.lazy.LazyListState -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.navigation.NavHostController - -@Composable -fun FloatingLayoutsScreen( - modifier: Modifier = Modifier, - viewModel: ListFloatingLayoutsViewModel, - navController: NavHostController, - lazyListState: LazyListState, -) { -} diff --git a/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt b/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt deleted file mode 100644 index b5fc9079a4..0000000000 --- a/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsUseCase.kt +++ /dev/null @@ -1,23 +0,0 @@ -package io.github.sds100.keymapper.floating - -import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository -import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.base.purchasing.PurchasingManager -import io.github.sds100.keymapper.system.accessibility.ServiceAdapter -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.flowOf - -interface ListFloatingLayoutsUseCase { - val showFloatingLayouts: Flow -} - -class ListFloatingLayoutsUseCaseImpl( - private val repository: FloatingLayoutRepository, - private val purchasingManager: PurchasingManager, - private val serviceAdapter: ServiceAdapter, - private val preferences: PreferenceRepository, -) : ListFloatingLayoutsUseCase, - PurchasingManager by purchasingManager { - - override val showFloatingLayouts: Flow = flowOf(false) -} diff --git a/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt b/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt deleted file mode 100644 index 1d9d3e963c..0000000000 --- a/base/src/free/java/io/github/sds100/keymapper/floating/ListFloatingLayoutsViewModel.kt +++ /dev/null @@ -1,26 +0,0 @@ -package io.github.sds100.keymapper.floating - -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow - -class ListFloatingLayoutsViewModel( - val coroutineScope: CoroutineScope, - val useCase: ListFloatingLayoutsUseCase, - resourceProvider: ResourceProvider, -) : PopupViewModel by PopupViewModelImpl() { - val state: StateFlow = MutableStateFlow(FloatingLayoutsState.NotPurchased) - val showFabText: Boolean = false - - fun onNewLayoutClick() { - } -} - -sealed class FloatingLayoutsState { - data object Loading : FloatingLayoutsState() - data object NotPurchased : FloatingLayoutsState() - data object Purchased : FloatingLayoutsState() -} diff --git a/base/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt b/base/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt deleted file mode 100644 index 2d8ab8c193..0000000000 --- a/base/src/free/java/io/github/sds100/keymapper/home/HomeFloatingLayoutsScreen.kt +++ /dev/null @@ -1,18 +0,0 @@ -package io.github.sds100.keymapper.home - -import androidx.compose.material3.SnackbarHostState -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.Dp -import androidx.navigation.NavHostController -import io.github.sds100.keymapper.base.floating.ListFloatingLayoutsViewModel - -@Composable -fun HomeFloatingLayoutsScreen( - modifier: Modifier = Modifier, - viewModel: ListFloatingLayoutsViewModel, - navController: NavHostController, - snackbarState: SnackbarHostState, - fabBottomPadding: Dp, -) { -} diff --git a/base/src/free/java/io/github/sds100/keymapper/trigger/AssistantTriggerSetupBottomSheet.kt b/base/src/free/java/io/github/sds100/keymapper/trigger/AssistantTriggerSetupBottomSheet.kt deleted file mode 100644 index 8c3c7cbd59..0000000000 --- a/base/src/free/java/io/github/sds100/keymapper/trigger/AssistantTriggerSetupBottomSheet.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.github.sds100.keymapper.trigger - -import androidx.compose.runtime.Composable - -@Composable -fun HandleAssistantTriggerSetupBottomSheet( - viewModel: ConfigTriggerViewModel, -) { -} diff --git a/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt b/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt deleted file mode 100644 index 72eb963698..0000000000 --- a/base/src/free/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt +++ /dev/null @@ -1,37 +0,0 @@ -package io.github.sds100.keymapper.trigger - -import io.github.sds100.keymapper.base.keymaps.ConfigKeyMapUseCase -import io.github.sds100.keymapper.base.keymaps.CreateKeyMapShortcutUseCase -import io.github.sds100.keymapper.base.keymaps.DisplayKeyMapUseCase -import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase -import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase -import io.github.sds100.keymapper.base.purchasing.PurchasingManager -import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import kotlinx.coroutines.CoroutineScope - -class ConfigTriggerViewModel( - coroutineScope: CoroutineScope, - onboarding: OnboardingUseCase, - config: ConfigKeyMapUseCase, - recordTrigger: RecordTriggerUseCase, - createKeyMapShortcut: CreateKeyMapShortcutUseCase, - displayKeyMap: DisplayKeyMapUseCase, - resourceProvider: ResourceProvider, - purchasingManager: PurchasingManager, - setupGuiKeyboardUseCase: SetupGuiKeyboardUseCase, - fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, -) : BaseConfigTriggerViewModel( - coroutineScope, - onboarding, - config, - recordTrigger, - createKeyMapShortcut, - displayKeyMap, - purchasingManager, - setupGuiKeyboardUseCase, - fingerprintGesturesSupported, - resourceProvider, -) { - fun onEditFloatingButtonClick() {} - fun onEditFloatingLayoutClick() {} -} From 5c5f49143240a23e628b5854f9622ada9e6f553b Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 14:11:29 +0200 Subject: [PATCH 55/71] #1711 add "-foss" suffix to FOSS version name --- app/build.gradle.kts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2db0a96bf6..d97862576f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -55,11 +55,12 @@ android { "proguard-rules.pro", ) signingConfig = signingConfigs.getByName("release") + versionNameSuffix = "-foss" } debug { applicationIdSuffix = ".debug" - versionNameSuffix = "-debug" + versionNameSuffix = "-foss-debug" } create("debug_release") { @@ -81,7 +82,7 @@ android { matchingFallbacks.add("debug") applicationIdSuffix = ".ci" - versionNameSuffix = "-ci.${versionProperties.getProperty("VERSION_NUM")}" + versionNameSuffix = "-foss-ci.${versionProperties.getProperty("VERSION_NUM")}" proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", From c835948e162c3a3e5c3f3f822c65a0a848acd78d Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 14:11:39 +0200 Subject: [PATCH 56/71] #1711 complete TODO --- api/src/main/AndroidManifest.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/api/src/main/AndroidManifest.xml b/api/src/main/AndroidManifest.xml index 77f4ff75fa..b3e73b7e65 100644 --- a/api/src/main/AndroidManifest.xml +++ b/api/src/main/AndroidManifest.xml @@ -36,7 +36,6 @@ - From 40a14c11043625645f40b9dc3ec98f18df270508 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 14:15:12 +0200 Subject: [PATCH 57/71] fix: button to copy the key map UID to the clipboard is invisible on small screens. --- CHANGELOG.md | 3 ++- .../sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be4801e662..2bebdb6e56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## [3.1.2](https://github.com/sds100/KeyMapper/releases/tag/v3.1.2) +## [3.2.0](https://github.com/sds100/KeyMapper/releases/tag/v3.2.0) #### TO BE RELEASED @@ -15,6 +15,7 @@ - #1686 (more fixes) do not show some screens behind system bars on the left/right side of the device. - #1701 optimize the trigger screen for smaller screens so elements are less cut off. - #1699 Do not highlight a floating button as if it is pressed after triggering a key event action from it. +- Button to copy the key map UID to the clipboard is invisible on small screens. ## [3.1.1](https://github.com/sds100/KeyMapper/releases/tag/v3.1.1) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt index ce2f7a5600..a26a3b992d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt @@ -276,7 +276,7 @@ private fun TriggerFromOtherAppsSection( horizontalArrangement = Arrangement.SpaceBetween, ) { Text( - modifier = Modifier.padding(horizontal = 16.dp), + modifier = Modifier.padding(horizontal = 16.dp).weight(1f), text = keyMapUid, maxLines = 1, overflow = TextOverflow.Ellipsis, @@ -390,7 +390,7 @@ private fun Preview() { screenOffTrigger = false, triggerFromOtherApps = true, - keyMapUid = "00000-00000-00000", + keyMapUid = "00000-00000-00000-0000000000000000000000000000000000", isLauncherShortcutButtonEnabled = false, showToast = true, From ddd0868d7660b5695238e99242834198928571bc Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 14:25:07 +0200 Subject: [PATCH 58/71] #1711 complete TODOs --- .../github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt | 1 - .../sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt | 1 - 2 files changed, 2 deletions(-) diff --git a/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt index f9a8905b6f..32e269e42b 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/LaunchKeyMapShortcutActivity.kt @@ -16,7 +16,6 @@ import javax.inject.Inject * exception may be thrown because the theme doesn't extend AppCompat. */ -// TODO test this still works. @AndroidEntryPoint class LaunchKeyMapShortcutActivity : ComponentActivity() { diff --git a/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt b/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt index 828207bfd7..12b0acdf8e 100644 --- a/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt +++ b/api/src/main/java/io/github/sds100/keymapper/api/TriggerKeyMapsBroadcastReceiver.kt @@ -11,7 +11,6 @@ import kotlinx.coroutines.launch import javax.inject.Inject // DON'T MOVE THIS CLASS TO A DIFFERENT PACKAGE BECAUSE IT BREAKS THE API -// TODO test this @AndroidEntryPoint class TriggerKeyMapsBroadcastReceiver : BroadcastReceiver() { From be526dbc7e987dd3e97825504ba97d45f0884e62 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 14:30:23 +0200 Subject: [PATCH 59/71] refactor: rename PopupViewModel to DialogProvider --- .../github/sds100/keymapper/MainActivity.kt | 4 +- .../github/sds100/keymapper/MainFragment.kt | 8 +-- .../sds100/keymapper/home/HomeViewModel.kt | 7 +- .../keymaps/ConfigKeyMapViewModel.kt | 12 ++-- .../trigger/ConfigTriggerViewModel.kt | 6 +- .../keymapper/base/ActivityViewModel.kt | 8 +-- .../keymapper/base/BaseSingletonHiltModule.kt | 8 +-- .../base/actions/ChooseActionViewModel.kt | 22 +++--- .../base/actions/ConfigActionsViewModel.kt | 42 +++++------ .../base/actions/CreateActionDelegate.kt | 42 +++++------ .../keyevent/ChooseKeyCodeViewModel.kt | 6 +- .../PinchPickDisplayCoordinateFragment.kt | 4 +- .../PinchPickDisplayCoordinateViewModel.kt | 18 ++--- .../actions/sound/ChooseSoundFileFragment.kt | 4 +- .../actions/sound/ChooseSoundFileViewModel.kt | 22 +++--- .../SwipePickDisplayCoordinateFragment.kt | 4 +- .../SwipePickDisplayCoordinateViewModel.kt | 18 ++--- .../PickDisplayCoordinateFragment.kt | 4 +- .../PickDisplayCoordinateViewModel.kt | 18 ++--- .../uielement/InteractUiElementViewModel.kt | 6 +- .../constraints/ChooseConstraintViewModel.kt | 36 +++++----- .../constraints/ConfigConstraintsViewModel.kt | 10 +-- .../keymapper/base/home/BaseHomeViewModel.kt | 32 ++++----- .../keymaps/ConfigKeyMapOptionsViewModel.kt | 18 ++--- .../base/keymaps/ConfigKeyMapViewModel.kt | 6 +- .../base/keymaps/KeyMapListViewModel.kt | 30 ++++---- .../keymapper/base/logging/LogFragment.kt | 4 +- .../keymapper/base/logging/LogViewModel.kt | 12 ++-- .../Android11BugWorkaroundSettingsFragment.kt | 12 ++-- .../base/settings/BaseSettingsFragment.kt | 4 +- .../base/settings/SettingsViewModel.kt | 40 +++++------ .../system/apps/ChooseAppShortcutFragment.kt | 4 +- .../system/apps/ChooseAppShortcutViewModel.kt | 14 ++-- .../ChooseBluetoothDeviceViewModel.kt | 6 +- .../system/intents/ConfigIntentFragment.kt | 4 +- .../system/intents/ConfigIntentViewModel.kt | 34 ++++----- .../trigger/BaseConfigTriggerViewModel.kt | 42 +++++------ .../utils/ui/{PopupUi.kt => DialogModel.kt} | 24 +++---- .../{PopupViewModel.kt => DialogProvider.kt} | 69 +++++++++---------- .../keymapper/base/utils/ui/DialogUtils.kt | 2 +- .../base/utils/ui/OnDialogResponseEvent.kt | 4 ++ .../base/utils/ui/OnPopupResponseEvent.kt | 4 -- .../base/utils/ui/ShowDialogEvent.kt | 4 ++ .../keymapper/base/utils/ui/ShowPopupEvent.kt | 4 -- .../base/utils/ui/ViewModelHelper.kt | 56 +++++++-------- .../intents/ConfigIntentViewModelTest.kt | 14 ++-- 46 files changed, 370 insertions(+), 382 deletions(-) rename base/src/main/java/io/github/sds100/keymapper/base/utils/ui/{PopupUi.kt => DialogModel.kt} (75%) rename base/src/main/java/io/github/sds100/keymapper/base/utils/ui/{PopupViewModel.kt => DialogProvider.kt} (74%) create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnDialogResponseEvent.kt delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnPopupResponseEvent.kt create mode 100644 base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowDialogEvent.kt delete mode 100644 base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowPopupEvent.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt index b87d2aed4b..da4246204c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt @@ -6,7 +6,7 @@ import androidx.navigation.fragment.FragmentNavigator import androidx.navigation.fragment.NavHostFragment import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.BaseMainActivity -import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.base.databinding.ActivityMainBinding import io.github.sds100.keymapper.base.R @@ -33,6 +33,6 @@ class MainActivity : BaseMainActivity() { setStartDestination(R.id.home_fragment) } - viewModel.showPopups(this, binding.coordinatorLayout) + viewModel.showDialogs(this, binding.coordinatorLayout) } } diff --git a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt index 7c19780cc8..00e4c432ad 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt @@ -34,8 +34,8 @@ import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl import io.github.sds100.keymapper.base.utils.navigation.SetupNavigation import io.github.sds100.keymapper.base.utils.navigation.handleRouteArgs import io.github.sds100.keymapper.base.utils.navigation.setupFragmentNavigation -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl -import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl +import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.home.HomeViewModel import io.github.sds100.keymapper.keymaps.ConfigKeyMapScreen import io.github.sds100.keymapper.keymaps.ConfigKeyMapViewModel @@ -48,7 +48,7 @@ class MainFragment : Fragment() { lateinit var navigationProvider: NavigationProviderImpl @Inject - lateinit var popupViewModel: PopupViewModelImpl + lateinit var popupViewModel: DialogProviderImpl override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -92,7 +92,7 @@ class MainFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - popupViewModel.showPopups(this, view) + popupViewModel.showDialogs(this, view) } private fun NavGraphBuilder.composableDestinations() { diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt index 197d51e1a2..0cd86de2f9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt @@ -11,9 +11,8 @@ import io.github.sds100.keymapper.base.sorting.SortKeyMapsUseCase import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.common.BuildConfigProvider import javax.inject.Inject @HiltViewModel @@ -28,7 +27,7 @@ class HomeViewModel @Inject constructor( private val sortKeyMaps: SortKeyMapsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, navigationProvider: NavigationProvider, - popupViewModel: PopupViewModel + dialogProvider: DialogProvider ) : BaseHomeViewModel( listKeyMaps, pauseKeyMaps, @@ -40,5 +39,5 @@ class HomeViewModel @Inject constructor( sortKeyMaps, showInputMethodPickerUseCase, navigationProvider, - popupViewModel + dialogProvider ) \ No newline at end of file diff --git a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt index 416e126401..046f5cee1c 100644 --- a/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/keymaps/ConfigKeyMapViewModel.kt @@ -16,7 +16,7 @@ import io.github.sds100.keymapper.base.purchasing.PurchasingManager import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.trigger.ConfigTriggerViewModel import javax.inject.Inject @@ -35,12 +35,12 @@ class ConfigKeyMapViewModel @Inject constructor( fingerprintGesturesSupportedUseCase: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, navigationProvider: NavigationProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, ) : BaseConfigKeyMapViewModel( config = config, onboarding = onboarding, navigationProvider = navigationProvider, - popupViewModel = popupViewModel, + dialogProvider = dialogProvider, ) { override val configActionsViewModel: ConfigActionsViewModel = ConfigActionsViewModel( coroutineScope = viewModelScope, @@ -51,7 +51,7 @@ class ConfigKeyMapViewModel @Inject constructor( onboarding = onboarding, resourceProvider = resourceProvider, navigationProvider = navigationProvider, - popupViewModel = popupViewModel, + dialogProvider = dialogProvider, ) override val configTriggerViewModel: ConfigTriggerViewModel = ConfigTriggerViewModel( @@ -66,7 +66,7 @@ class ConfigKeyMapViewModel @Inject constructor( fingerprintGesturesSupported = fingerprintGesturesSupportedUseCase, resourceProvider = resourceProvider, navigationProvider = navigationProvider, - popupViewModel = popupViewModel, + dialogProvider = dialogProvider, ) override val configConstraintsViewModel: ConfigConstraintsViewModel = @@ -76,6 +76,6 @@ class ConfigKeyMapViewModel @Inject constructor( displayConstraint = display, resourceProvider = resourceProvider, navigationProvider = navigationProvider, - popupViewModel = popupViewModel, + dialogProvider = dialogProvider, ) } diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt index 2f62114ede..1654023097 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/ConfigTriggerViewModel.kt @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import kotlinx.coroutines.CoroutineScope import javax.inject.Inject @@ -27,7 +27,7 @@ class ConfigTriggerViewModel @Inject constructor( private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, navigationProvider: NavigationProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, ) : BaseConfigTriggerViewModel( coroutineScope = coroutineScope, onboarding = onboarding, @@ -40,7 +40,7 @@ class ConfigTriggerViewModel @Inject constructor( fingerprintGesturesSupported = fingerprintGesturesSupported, resourceProvider = resourceProvider, navigationProvider = navigationProvider, - popupViewModel = popupViewModel, + dialogProvider = dialogProvider, ) { override fun onEditFloatingButtonClick() {} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt index 8ea338a5fe..532318007e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt @@ -6,8 +6,8 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import kotlinx.coroutines.launch @@ -18,7 +18,7 @@ class ActivityViewModel @Inject constructor( resourceProvider: ResourceProvider, ) : ViewModel(), ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl(), + DialogProvider by DialogProviderImpl(), NavigationProvider by NavigationProviderImpl() { var handledActivityLaunchIntent: Boolean = false @@ -28,7 +28,7 @@ class ActivityViewModel @Inject constructor( viewModelScope.launch { ViewModelHelper.handleCantFindAccessibilitySettings( resourceProvider = this@ActivityViewModel, - popupViewModel = this@ActivityViewModel, + dialogProvider = this@ActivityViewModel, ) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt index d999c71d0f..0d9ad3d27b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt @@ -22,8 +22,6 @@ import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCaseImpl import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.onboarding.OnboardingUseCaseImpl -import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase -import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCaseImpl import io.github.sds100.keymapper.base.system.accessibility.AccessibilityServiceAdapterImpl import io.github.sds100.keymapper.base.system.accessibility.ControlAccessibilityServiceUseCase import io.github.sds100.keymapper.base.system.accessibility.ControlAccessibilityServiceUseCaseImpl @@ -40,8 +38,8 @@ import io.github.sds100.keymapper.base.trigger.RecordTriggerController import io.github.sds100.keymapper.base.trigger.RecordTriggerUseCase import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProviderImpl import io.github.sds100.keymapper.common.utils.DefaultUuidGenerator @@ -135,5 +133,5 @@ abstract class BaseSingletonHiltModule { @Binds @Singleton - abstract fun bindPopupViewModel(impl: PopupViewModelImpl): PopupViewModel + abstract fun bindPopupViewModel(impl: DialogProviderImpl): DialogProvider } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index 43d515676f..aa799c3171 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -8,13 +8,13 @@ import io.github.sds100.keymapper.base.utils.containsQuery import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.ui.DialogResponse -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemGroup import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission @@ -35,10 +35,10 @@ class ChooseActionViewModel @Inject constructor( private val useCase: CreateActionUseCase, resourceProvider: ResourceProvider, navigationProvider: NavigationProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, ) : ViewModel(), ResourceProvider by resourceProvider, - PopupViewModel by popupViewModel, + DialogProvider by dialogProvider, NavigationProvider by navigationProvider { companion object { @@ -176,9 +176,9 @@ class ChooseActionViewModel @Inject constructor( private suspend fun showMessageForAction(id: ActionId): Boolean { // See issue #1379 if (id == ActionId.APP) { - val response = showPopup( + val response = showDialog( "show_app_action_warning_dialog", - PopupUi.Dialog( + DialogModel.Alert( message = getString(R.string.action_open_app_dialog_message), title = getString(R.string.action_open_app_dialog_title), positiveButtonText = getString(R.string.action_open_app_dialog_read_more_button), @@ -187,9 +187,9 @@ class ChooseActionViewModel @Inject constructor( ) if (response == DialogResponse.POSITIVE) { - showPopup( + showDialog( "app_action_permission_info", - PopupUi.OpenUrl(getString(R.string.url_action_guide)), + DialogModel.OpenUrl(getString(R.string.url_action_guide)), ) return false } else { @@ -220,9 +220,9 @@ class ChooseActionViewModel @Inject constructor( } if (messageToShow != null) { - val response = showPopup( + val response = showDialog( "show_action_message", - PopupUi.Ok(message = getString(messageToShow)), + DialogModel.Ok(message = getString(messageToShow)), ) return response != null diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index 915a82f38b..ec0f6780a2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -13,12 +13,12 @@ import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.ChooseAppStoreModel import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.LinkType -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull @@ -49,10 +49,10 @@ class ConfigActionsViewModel( private val onboarding: OnboardingUseCase, resourceProvider: ResourceProvider, navigationProvider: NavigationProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, ) : ActionOptionsBottomSheetCallback, ResourceProvider by resourceProvider, - PopupViewModel by popupViewModel, + DialogProvider by dialogProvider, NavigationProvider by navigationProvider { val createActionDelegate = @@ -116,7 +116,7 @@ class ConfigActionsViewModel( coroutineScope.launch { ViewModelHelper.showDialogExplainingDndAccessBeingUnavailable( resourceProvider = this@ConfigActionsViewModel, - popupViewModel = this@ConfigActionsViewModel, + dialogProvider = this@ConfigActionsViewModel, neverShowDndTriggerErrorAgain = { displayAction.neverShowDndTriggerError() }, fixError = { displayAction.fixError(error) }, ) @@ -124,7 +124,7 @@ class ConfigActionsViewModel( } else { ViewModelHelper.showFixErrorDialog( resourceProvider = this@ConfigActionsViewModel, - popupViewModel = this@ConfigActionsViewModel, + dialogProvider = this@ConfigActionsViewModel, error, ) { displayAction.fixError(error) @@ -254,7 +254,7 @@ class ConfigActionsViewModel( if (error is Error.AccessibilityServiceDisabled) { ViewModelHelper.handleAccessibilityServiceStoppedDialog( resourceProvider = this, - popupViewModel = this, + dialogProvider = this, startService = displayAction::startAccessibilityService, ) } @@ -262,7 +262,7 @@ class ConfigActionsViewModel( if (error is Error.AccessibilityServiceCrashed) { ViewModelHelper.handleAccessibilityServiceCrashedDialog( resourceProvider = this, - popupViewModel = this, + dialogProvider = this, restartService = displayAction::restartAccessibilityService, ) } @@ -275,7 +275,7 @@ class ConfigActionsViewModel( githubLink = getString(R.string.url_github_keymapper_leanback_keyboard), ) - val dialog = PopupUi.ChooseAppStore( + val dialog = DialogModel.ChooseAppStore( title = getString(R.string.dialog_title_install_leanback_keyboard), message = getString(R.string.dialog_message_install_leanback_keyboard), appStoreModel, @@ -283,7 +283,7 @@ class ConfigActionsViewModel( negativeButtonText = getString(R.string.neg_cancel), ) - val response = showPopup("download_leanback_ime", dialog) ?: return + val response = showDialog("download_leanback_ime", dialog) ?: return if (response == DialogResponse.POSITIVE) { onboarding.neverShowGuiKeyboardPromptsAgain() @@ -295,7 +295,7 @@ class ConfigActionsViewModel( githubLink = getString(R.string.url_github_keymapper_gui_keyboard), ) - val dialog = PopupUi.ChooseAppStore( + val dialog = DialogModel.ChooseAppStore( title = getString(R.string.dialog_title_install_gui_keyboard), message = getString(R.string.dialog_message_install_gui_keyboard), appStoreModel, @@ -303,7 +303,7 @@ class ConfigActionsViewModel( negativeButtonText = getString(R.string.neg_cancel), ) - val response = showPopup("download_gui_keyboard", dialog) ?: return + val response = showDialog("download_gui_keyboard", dialog) ?: return if (response == DialogResponse.POSITIVE) { onboarding.neverShowGuiKeyboardPromptsAgain() @@ -313,7 +313,7 @@ class ConfigActionsViewModel( private suspend fun promptToInstallShizukuOrGuiKeyboard() { if (onboarding.isTvDevice()) { - val chooseSolutionDialog = PopupUi.Dialog( + val chooseSolutionDialog = DialogModel.Alert( title = getText(R.string.dialog_title_install_shizuku_or_leanback_keyboard), message = getText(R.string.dialog_message_install_shizuku_or_leanback_keyboard), positiveButtonText = getString(R.string.dialog_button_install_shizuku), @@ -322,7 +322,7 @@ class ConfigActionsViewModel( ) val chooseSolutionResponse = - showPopup("choose_solution", chooseSolutionDialog) ?: return + showDialog("choose_solution", chooseSolutionDialog) ?: return when (chooseSolutionResponse) { // install shizuku @@ -340,7 +340,7 @@ class ConfigActionsViewModel( // download leanback keyboard DialogResponse.NEGATIVE -> { - val chooseAppStoreDialog = PopupUi.ChooseAppStore( + val chooseAppStoreDialog = DialogModel.ChooseAppStore( title = getString(R.string.dialog_title_choose_download_leanback_keyboard), message = getString(R.string.dialog_message_choose_download_leanback_keyboard), model = ChooseAppStoreModel( @@ -350,7 +350,7 @@ class ConfigActionsViewModel( negativeButtonText = getString(R.string.neg_cancel), ) - val response = showPopup("install_leanback_keyboard", chooseAppStoreDialog) + val response = showDialog("install_leanback_keyboard", chooseAppStoreDialog) if (response == DialogResponse.POSITIVE) { onboarding.neverShowGuiKeyboardPromptsAgain() @@ -358,7 +358,7 @@ class ConfigActionsViewModel( } } } else { - val chooseSolutionDialog = PopupUi.Dialog( + val chooseSolutionDialog = DialogModel.Alert( title = getText(R.string.dialog_title_install_shizuku_or_gui_keyboard), message = getText(R.string.dialog_message_install_shizuku_or_gui_keyboard), positiveButtonText = getString(R.string.dialog_button_install_shizuku), @@ -367,7 +367,7 @@ class ConfigActionsViewModel( ) val chooseSolutionResponse = - showPopup("choose_solution", chooseSolutionDialog) ?: return + showDialog("choose_solution", chooseSolutionDialog) ?: return when (chooseSolutionResponse) { // install shizuku @@ -385,7 +385,7 @@ class ConfigActionsViewModel( // download gui keyboard DialogResponse.NEGATIVE -> { - val chooseAppStoreDialog = PopupUi.ChooseAppStore( + val chooseAppStoreDialog = DialogModel.ChooseAppStore( title = getString(R.string.dialog_title_choose_download_gui_keyboard), message = getString(R.string.dialog_message_choose_download_gui_keyboard), model = ChooseAppStoreModel( @@ -397,7 +397,7 @@ class ConfigActionsViewModel( negativeButtonText = getString(R.string.neg_cancel), ) - val response = showPopup("install_gui_keyboard", chooseAppStoreDialog) + val response = showDialog("install_gui_keyboard", chooseAppStoreDialog) if (response == DialogResponse.POSITIVE) { onboarding.neverShowGuiKeyboardPromptsAgain() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index 9d15d06ff4..c9be69fe75 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -16,10 +16,10 @@ import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.network.HttpMethod @@ -37,11 +37,11 @@ import kotlinx.serialization.json.Json class CreateActionDelegate( private val coroutineScope: CoroutineScope, private val useCase: CreateActionUseCase, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, navigationProvider: NavigationProvider, resourceProvider: ResourceProvider, ) : ResourceProvider by resourceProvider, - PopupViewModel by popupViewModel, + DialogProvider by dialogProvider, NavigationProvider by navigationProvider { val actionResult: MutableStateFlow = MutableStateFlow(null) @@ -163,7 +163,7 @@ class CreateActionDelegate( } val imeId = - showPopup("choose_ime", PopupUi.SingleChoice(items)) ?: return null + showDialog("choose_ime", DialogModel.SingleChoice(items)) ?: return null val imeName = inputMethods.single { it.id == imeId }.label return ActionData.SwitchKeyboard(imeId, imeName) @@ -249,9 +249,9 @@ class CreateActionDelegate( ), ) - val showVolumeUiDialog = PopupUi.MultiChoice(items = dialogItems) + val showVolumeUiDialog = DialogModel.MultiChoice(items = dialogItems) - val chosenFlags = showPopup("show_volume_ui", showVolumeUiDialog) ?: return null + val chosenFlags = showDialog("show_volume_ui", showVolumeUiDialog) ?: return null val showVolumeUi = chosenFlags.contains(showVolumeUiId) @@ -288,17 +288,17 @@ class CreateActionDelegate( ), ) - val showVolumeUiDialog = PopupUi.MultiChoice(items = dialogItems) + val showVolumeUiDialog = DialogModel.MultiChoice(items = dialogItems) val chosenFlags = - showPopup("show_volume_ui", showVolumeUiDialog) ?: return null + showDialog("show_volume_ui", showVolumeUiDialog) ?: return null val showVolumeUi = chosenFlags.contains(showVolumeUiId) val items = VolumeStream.entries .map { it to getString(VolumeStreamStrings.getLabel(it)) } - val stream = showPopup("pick_volume_stream", PopupUi.SingleChoice(items)) + val stream = showDialog("pick_volume_stream", DialogModel.SingleChoice(items)) ?: return null val action = when (actionId) { @@ -319,7 +319,7 @@ class CreateActionDelegate( .map { it to getString(RingerModeStrings.getLabel(it)) } val ringerMode = - showPopup("pick_ringer_mode", PopupUi.SingleChoice(items)) + showDialog("pick_ringer_mode", DialogModel.SingleChoice(items)) ?: return null return ActionData.Volume.SetRingerMode(ringerMode) @@ -333,7 +333,7 @@ class CreateActionDelegate( .map { it to getString(DndModeStrings.getLabel(it)) } val dndMode = - showPopup("pick_dnd_mode", PopupUi.SingleChoice(items)) + showDialog("pick_dnd_mode", DialogModel.SingleChoice(items)) ?: return null val action = when (actionId) { @@ -370,7 +370,7 @@ class CreateActionDelegate( } val orientations = - showPopup("pick_orientations", PopupUi.MultiChoice(items)) ?: return null + showDialog("pick_orientations", DialogModel.MultiChoice(items)) ?: return null return ActionData.Rotation.CycleRotations(orientations) } @@ -457,7 +457,7 @@ class CreateActionDelegate( if (items.size == 1) { return ActionData.Flashlight.Disable(items.first().first) } else { - val lens = showPopup("pick_lens", PopupUi.SingleChoice(items)) + val lens = showDialog("pick_lens", DialogModel.SingleChoice(items)) ?: return null return ActionData.Flashlight.Disable(lens) @@ -614,9 +614,9 @@ class CreateActionDelegate( "" } - val text = showPopup( + val text = showDialog( "create_text_action", - PopupUi.Text( + DialogModel.Text( hint = getString(R.string.hint_create_text_action), allowEmpty = false, text = oldText, @@ -633,9 +633,9 @@ class CreateActionDelegate( "" } - val text = showPopup( + val text = showDialog( "create_url_action", - PopupUi.Text( + DialogModel.Text( hint = getString(R.string.hint_create_url_action), allowEmpty = false, inputType = InputType.TYPE_TEXT_VARIATION_URI, @@ -678,9 +678,9 @@ class CreateActionDelegate( "" } - val text = showPopup( + val text = showDialog( "create_phone_call_action", - PopupUi.Text( + DialogModel.Text( hint = getString(R.string.hint_create_phone_call_action), allowEmpty = false, inputType = InputType.TYPE_CLASS_PHONE, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt index 06cadc7ada..d444a0daf5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -6,8 +6,8 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.utils.filterByQuery import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.inputevents.InputEventUtils @@ -26,7 +26,7 @@ import javax.inject.Inject @HiltViewModel class ChooseKeyCodeViewModel @Inject constructor() : ViewModel(), - PopupViewModel by PopupViewModelImpl() { + DialogProvider by DialogProviderImpl() { val searchQuery = MutableStateFlow(null) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt index 9184887b4a..3ef5d2d828 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt @@ -25,7 +25,7 @@ import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.databinding.FragmentPinchPickCoordinatesBinding import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.collectLatest @@ -111,7 +111,7 @@ class PinchPickDisplayCoordinateFragment : Fragment() { android.R.layout.simple_spinner_dropdown_item, pinchTypesDisplayValues, ) - viewModel.showPopups(this, binding) + viewModel.showDialogs(this, binding) requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { findNavController().navigateUp() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt index 425bf3e60b..0bc87c2b72 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt @@ -11,11 +11,11 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.PinchScreenType import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -35,7 +35,7 @@ class PinchPickDisplayCoordinateViewModel @Inject constructor( resourceProvider: ResourceProvider, ) : ViewModel(), ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl() { + DialogProvider by DialogProviderImpl() { private val pinchTypes = arrayOf(PinchScreenType.PINCH_IN.name, PinchScreenType.PINCH_OUT.name) @@ -164,11 +164,11 @@ class PinchPickDisplayCoordinateViewModel @Inject constructor( (displaySize.y != newBitmap.width && displaySize.x != newBitmap.height) ) { viewModelScope.launch { - val snackBar = PopupUi.SnackBar( + val snackBar = DialogModel.SnackBar( message = getString(R.string.toast_incorrect_screenshot_resolution), ) - showPopup("incorrect_resolution", snackBar) + showDialog("incorrect_resolution", snackBar) } return @@ -228,9 +228,9 @@ class PinchPickDisplayCoordinateViewModel @Inject constructor( val fingerCount = fingerCount.value ?: return@launch val duration = duration.value ?: return@launch - val description = showPopup( + val description = showDialog( "coordinate_description", - PopupUi.Text( + DialogModel.Text( getString(R.string.hint_tap_coordinate_title), allowEmpty = true, text = description.value ?: "", diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt index c443fccc19..575f3bb5ba 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt @@ -25,7 +25,7 @@ import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.databinding.FragmentChooseSoundFileBinding import io.github.sds100.keymapper.base.simple import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.filterNotNull @@ -93,7 +93,7 @@ class ChooseSoundFileFragment : Fragment() { } binding.viewModel = viewModel - viewModel.showPopups(this, binding) + viewModel.showDialogs(this, binding) viewLifecycleOwner.launchRepeatOnLifecycle(Lifecycle.State.RESUMED) { viewModel.chooseSoundFile.collectLatest { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt index cbf3540e3c..e83628db58 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt @@ -10,11 +10,11 @@ import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted @@ -31,7 +31,7 @@ class ChooseSoundFileViewModel @Inject constructor( resourceProvider: ResourceProvider, private val useCase: ChooseSoundFileUseCase, ) : ViewModel(), - PopupViewModel by PopupViewModelImpl(), + DialogProvider by DialogProviderImpl(), ResourceProvider by resourceProvider { private val _chooseSoundFile = MutableSharedFlow() @@ -66,13 +66,13 @@ class ChooseSoundFileViewModel @Inject constructor( viewModelScope.launch { val soundFileInfo = useCase.soundFiles.value.find { it.uid == id } ?: return@launch - val dialog = PopupUi.Text( + val dialog = DialogModel.Text( hint = getString(R.string.hint_sound_file_description), allowEmpty = false, text = soundFileInfo.name, ) - val soundDescription = showPopup("file_description", dialog) ?: return@launch + val soundDescription = showDialog("file_description", dialog) ?: return@launch returnResult.update { ActionData.Sound.SoundFile( @@ -87,13 +87,13 @@ class ChooseSoundFileViewModel @Inject constructor( viewModelScope.launch { val fileName = useCase.getSoundFileName(uri).valueOrNull() ?: return@launch - val dialog = PopupUi.Text( + val dialog = DialogModel.Text( hint = getString(R.string.hint_sound_file_description), allowEmpty = false, text = fileName, ) - val soundDescription = showPopup("file_description", dialog) + val soundDescription = showDialog("file_description", dialog) soundDescription ?: return@launch @@ -106,8 +106,8 @@ class ChooseSoundFileViewModel @Inject constructor( ) } }.onFailure { error -> - val toast = PopupUi.Toast(error.getFullMessage(this@ChooseSoundFileViewModel)) - showPopup("failed_toast", toast) + val toast = DialogModel.Toast(error.getFullMessage(this@ChooseSoundFileViewModel)) + showDialog("failed_toast", toast) } } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt index 6b3117cc71..e06fee3bd6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt @@ -23,7 +23,7 @@ import androidx.navigation.fragment.navArgs import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.databinding.FragmentSwipePickCoordinatesBinding import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json @@ -97,7 +97,7 @@ class SwipePickDisplayCoordinateFragment : Fragment() { binding.viewModel = viewModel - viewModel.showPopups(this, binding) + viewModel.showDialogs(this, binding) requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { findNavController().navigateUp() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt index 443f163a18..70bc34c563 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt @@ -9,11 +9,11 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted @@ -37,7 +37,7 @@ class SwipePickDisplayCoordinateViewModel @Inject constructor( resourceProvider: ResourceProvider, ) : ViewModel(), ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl() { + DialogProvider by DialogProviderImpl() { val screenshotTouchTypeStart = ScreenshotTouchType.START val screenshotTouchTypeEnd = ScreenshotTouchType.END @@ -165,11 +165,11 @@ class SwipePickDisplayCoordinateViewModel @Inject constructor( (displaySize.y != newBitmap.width && displaySize.x != newBitmap.height) ) { viewModelScope.launch { - val snackBar = PopupUi.SnackBar( + val snackBar = DialogModel.SnackBar( message = getString(R.string.toast_incorrect_screenshot_resolution), ) - showPopup("incorrect_resolution", snackBar) + showDialog("incorrect_resolution", snackBar) } return @@ -234,9 +234,9 @@ class SwipePickDisplayCoordinateViewModel @Inject constructor( val fingerCount = fingerCount.value ?: return@launch val duration = duration.value ?: return@launch - val description = showPopup( + val description = showDialog( "coordinate_description", - PopupUi.Text( + DialogModel.Text( getString(R.string.hint_tap_coordinate_title), allowEmpty = true, text = description.value ?: "", diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt index 402cab18d7..2f5bc5fac7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt @@ -23,7 +23,7 @@ import androidx.navigation.fragment.navArgs import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.databinding.FragmentPickCoordinateBinding import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json @@ -97,7 +97,7 @@ class PickDisplayCoordinateFragment : Fragment() { binding.viewModel = viewModel - viewModel.showPopups(this, binding) + viewModel.showDialogs(this, binding) requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { findNavController().navigateUp() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt index f004327d87..166c29883c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt @@ -7,11 +7,11 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted @@ -31,7 +31,7 @@ class PickDisplayCoordinateViewModel @Inject constructor( resourceProvider: ResourceProvider, ) : ViewModel(), ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl() { + DialogProvider by DialogProviderImpl() { private val x = MutableStateFlow(null) private val y = MutableStateFlow(null) @@ -69,11 +69,11 @@ class PickDisplayCoordinateViewModel @Inject constructor( (displaySize.y != newBitmap.width && displaySize.x != newBitmap.height) ) { viewModelScope.launch { - val snackBar = PopupUi.SnackBar( + val snackBar = DialogModel.SnackBar( message = getString(R.string.toast_incorrect_screenshot_resolution), ) - showPopup("incorrect_resolution", snackBar) + showDialog("incorrect_resolution", snackBar) } return @@ -109,9 +109,9 @@ class PickDisplayCoordinateViewModel @Inject constructor( val x = x.value ?: return@launch val y = y.value ?: return@launch - val description = showPopup( + val description = showDialog( "coordinate_description", - PopupUi.Text( + DialogModel.Text( getString(R.string.hint_tap_coordinate_title), allowEmpty = true, text = description.value ?: "", diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt index 497f608f14..75c70b513e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.system.accessibility.RecordAccessibilityNodeState import io.github.sds100.keymapper.base.utils.containsQuery import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @@ -48,11 +48,11 @@ import javax.inject.Inject class InteractUiElementViewModel @Inject constructor( private val useCase: InteractUiElementUseCase, resourceProvider: ResourceProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, navigationProvider: NavigationProvider, ) : ViewModel(), NavigationProvider by navigationProvider, - PopupViewModel by popupViewModel, + DialogProvider by dialogProvider, ResourceProvider by resourceProvider { val recordState: StateFlow> = combine( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt index 5db130784c..ca3bfb9370 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt @@ -12,11 +12,11 @@ import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.camera.CameraLens @@ -36,12 +36,12 @@ import javax.inject.Inject @HiltViewModel class ChooseConstraintViewModel @Inject constructor( private val useCase: CreateConstraintUseCase, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, navigationProvider: NavigationProvider, resourceProvider: ResourceProvider, ) : ViewModel(), ResourceProvider by resourceProvider, - PopupViewModel by popupViewModel, + DialogProvider by dialogProvider, NavigationProvider by navigationProvider { companion object { @@ -244,9 +244,9 @@ class ChooseConstraintViewModel @Inject constructor( return items.first().first } - val dialog = PopupUi.SingleChoice(items) + val dialog = DialogModel.SingleChoice(items) - val cameraLens = showPopup("choose_flashlight_lens", dialog) + val cameraLens = showDialog("choose_flashlight_lens", dialog) return cameraLens } @@ -278,14 +278,14 @@ class ChooseConstraintViewModel @Inject constructor( if (knownSSIDs == null) { val savedWifiSSIDs = useCase.getSavedWifiSSIDs().first() - val dialog = PopupUi.Text( + val dialog = DialogModel.Text( hint = getString(R.string.hint_wifi_ssid), allowEmpty = true, message = getString(R.string.constraint_wifi_message_cant_list_networks), autoCompleteEntries = savedWifiSSIDs, ) - val ssidText = showPopup("type_ssid", dialog) ?: return + val ssidText = showDialog("type_ssid", dialog) ?: return if (ssidText.isBlank()) { chosenSSID = null @@ -303,7 +303,7 @@ class ChooseConstraintViewModel @Inject constructor( val items = listOf(anySSIDItem).plus(ssidItems) val chosenItem = - showPopup("choose_ssid", PopupUi.SingleChoice(items)) ?: return + showDialog("choose_ssid", DialogModel.SingleChoice(items)) ?: return if (chosenItem == anySSIDItem.first) { chosenSSID = null @@ -326,9 +326,9 @@ class ChooseConstraintViewModel @Inject constructor( private suspend fun onSelectImeChosenConstraint(type: ConstraintId) { val inputMethods = useCase.getEnabledInputMethods() val items = inputMethods.map { it.id to it.label } - val dialog = PopupUi.SingleChoice(items = items) + val dialog = DialogModel.SingleChoice(items = items) - val result = showPopup("choose_input_method", dialog) ?: return + val result = showDialog("choose_input_method", dialog) ?: return val imeInfo = inputMethods.single { it.id == result } @@ -354,9 +354,9 @@ class ChooseConstraintViewModel @Inject constructor( } private suspend fun onSelectScreenOnConstraint() { - val response = showPopup( + val response = showDialog( "screen_on_constraint_limitation", - PopupUi.Ok(getString(R.string.dialog_message_screen_constraints_limitation)), + DialogModel.Ok(getString(R.string.dialog_message_screen_constraints_limitation)), ) response ?: return @@ -365,9 +365,9 @@ class ChooseConstraintViewModel @Inject constructor( } private suspend fun onSelectScreenOffConstraint() { - val response = showPopup( + val response = showDialog( "screen_on_constraint_limitation", - PopupUi.Ok(getString(R.string.dialog_message_screen_constraints_limitation)), + DialogModel.Ok(getString(R.string.dialog_message_screen_constraints_limitation)), ) response ?: return @@ -376,9 +376,9 @@ class ChooseConstraintViewModel @Inject constructor( } private suspend fun onSelectBluetoothConstraint(type: ConstraintId) { - val response = showPopup( + val response = showDialog( "bluetooth_device_constraint_limitation", - PopupUi.Ok(getString(R.string.dialog_message_bt_constraint_limitation)), + DialogModel.Ok(getString(R.string.dialog_message_bt_constraint_limitation)), ) response ?: return diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index 312c38d0a7..6db9bf2fde 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.base.utils.isFixable import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo @@ -40,9 +40,9 @@ class ConfigConstraintsViewModel( private val displayConstraint: DisplayConstraintUseCase, resourceProvider: ResourceProvider, navigationProvider: NavigationProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, ) : ResourceProvider by resourceProvider, - PopupViewModel by popupViewModel, + DialogProvider by dialogProvider, NavigationProvider by navigationProvider { private val uiHelper = ConstraintUiHelper(displayConstraint, resourceProvider) @@ -109,7 +109,7 @@ class ConfigConstraintsViewModel( coroutineScope.launch { ViewModelHelper.showDialogExplainingDndAccessBeingUnavailable( resourceProvider = this@ConfigConstraintsViewModel, - popupViewModel = this@ConfigConstraintsViewModel, + dialogProvider = this@ConfigConstraintsViewModel, neverShowDndTriggerErrorAgain = { displayConstraint.neverShowDndTriggerError() }, fixError = { displayConstraint.fixError(error) }, ) @@ -117,7 +117,7 @@ class ConfigConstraintsViewModel( } else { ViewModelHelper.showFixErrorDialog( resourceProvider = this@ConfigConstraintsViewModel, - popupViewModel = this@ConfigConstraintsViewModel, + dialogProvider = this@ConfigConstraintsViewModel, error, ) { displayConstraint.fixError(error) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt index 867abe09f5..abd2c49dd8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt @@ -1,10 +1,5 @@ package io.github.sds100.keymapper.base.home -import android.os.Build -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.BubbleChart -import androidx.compose.material.icons.outlined.Keyboard -import androidx.compose.ui.graphics.vector.ImageVector import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import io.github.sds100.keymapper.base.R @@ -20,11 +15,10 @@ import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.DialogResponse -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.showPopup -import io.github.sds100.keymapper.common.BuildConfigProvider +import io.github.sds100.keymapper.base.utils.ui.showDialog import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch @@ -39,10 +33,10 @@ abstract class BaseHomeViewModel( private val sortKeyMaps: SortKeyMapsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, navigationProvider: NavigationProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, ) : ViewModel(), ResourceProvider by resourceProvider, - PopupViewModel by popupViewModel, + DialogProvider by dialogProvider, NavigationProvider by navigationProvider { val keyMapListViewModel by lazy { @@ -58,7 +52,7 @@ abstract class BaseHomeViewModel( showInputMethodPickerUseCase, onboarding, navigationProvider, - popupViewModel, + dialogProvider, ) } @@ -91,7 +85,7 @@ abstract class BaseHomeViewModel( } private suspend fun showWhatsNewDialog() { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( title = getString(R.string.whats_new), message = onboarding.getWhatsNewText(), positiveButtonText = getString(R.string.pos_ok), @@ -99,29 +93,29 @@ abstract class BaseHomeViewModel( ) // don't return if they dismiss the dialog because this is common behaviour. - val response = showPopup("whats-new", dialog) + val response = showDialog("whats-new", dialog) if (response == DialogResponse.NEUTRAL) { - showPopup("url_changelog", PopupUi.OpenUrl(getString(R.string.url_changelog))) + showDialog("url_changelog", DialogModel.OpenUrl(getString(R.string.url_changelog))) } onboarding.showedWhatsNew() } private suspend fun showUpgradeGuiKeyboardDialog() { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( title = getString(R.string.dialog_upgrade_gui_keyboard_title), message = getString(R.string.dialog_upgrade_gui_keyboard_message), positiveButtonText = getString(R.string.dialog_upgrade_gui_keyboard_positive), negativeButtonText = getString(R.string.dialog_upgrade_gui_keyboard_neutral), ) - val response = showPopup("upgrade_gui_keyboard", dialog) + val response = showDialog("upgrade_gui_keyboard", dialog) if (response == DialogResponse.POSITIVE) { - showPopup( + showDialog( "gui_keyboard_play_store", - PopupUi.OpenUrl(getString(R.string.url_play_store_keymapper_gui_keyboard)), + DialogModel.OpenUrl(getString(R.string.url_play_store_keymapper_gui_keyboard)), ) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt index 68aa4eadba..e09ab94465 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt @@ -9,12 +9,12 @@ import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.common.utils.mapData -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.TintType -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow @@ -31,7 +31,7 @@ class ConfigKeyMapOptionsViewModel( private val createKeyMapShortcut: CreateKeyMapShortcutUseCase, resourceProvider: ResourceProvider, ) : ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl(), + DialogProvider by DialogProviderImpl(), KeyMapOptionsCallback { private val actionUiHelper = ActionUiHelper(displayUseCase, resourceProvider) @@ -113,9 +113,9 @@ class ConfigKeyMapOptionsViewModel( icon = null } - val shortcutName = showPopup( + val shortcutName = showDialog( key, - PopupUi.Text( + DialogModel.Text( getString(R.string.hint_shortcut_name), allowEmpty = false, text = defaultShortcutName, @@ -125,11 +125,11 @@ class ConfigKeyMapOptionsViewModel( val result = createKeyMapShortcut.pinShortcut(keyMapUid, shortcutName, icon) result.onFailure { error -> - val snackBar = PopupUi.SnackBar( + val snackBar = DialogModel.SnackBar( message = error.getFullMessage(this@ConfigKeyMapOptionsViewModel), ) - showPopup("create_shortcut_result", snackBar) + showDialog("create_shortcut_result", snackBar) } } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt index 333c2ac974..7dd8d9d1f4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt @@ -8,7 +8,7 @@ import io.github.sds100.keymapper.base.onboarding.OnboardingTapTarget import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.trigger.BaseConfigTriggerViewModel import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.common.utils.dataOrNull import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow @@ -21,10 +21,10 @@ abstract class BaseConfigKeyMapViewModel( private val config: ConfigKeyMapUseCase, private val onboarding: OnboardingUseCase, navigationProvider: NavigationProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, ) : ViewModel(), NavigationProvider by navigationProvider, - PopupViewModel by popupViewModel { + DialogProvider by dialogProvider { abstract val configActionsViewModel: ConfigActionsViewModel abstract val configTriggerViewModel: BaseConfigTriggerViewModel diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index bc990dc7eb..eefde26941 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -33,13 +33,13 @@ import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.SelectionState import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.State @@ -85,8 +85,8 @@ class KeyMapListViewModel( private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val onboarding: OnboardingUseCase, private val navigationProvider: NavigationProvider, - private val popupViewModel: PopupViewModel -) : PopupViewModel by popupViewModel, + private val dialogProvider: DialogProvider +) : DialogProvider by dialogProvider, ResourceProvider by resourceProvider, NavigationProvider by navigationProvider { @@ -519,7 +519,7 @@ class KeyMapListViewModel( TriggerError.DND_ACCESS_DENIED -> { ViewModelHelper.showDialogExplainingDndAccessBeingUnavailable( resourceProvider = this@KeyMapListViewModel, - popupViewModel = this@KeyMapListViewModel, + dialogProvider = this@KeyMapListViewModel, neverShowDndTriggerErrorAgain = { listKeyMaps.neverShowDndTriggerError() }, fixError = { listKeyMaps.fixTriggerError(error) }, ) @@ -552,7 +552,7 @@ class KeyMapListViewModel( SystemError.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) -> { ViewModelHelper.showDialogExplainingDndAccessBeingUnavailable( resourceProvider = this@KeyMapListViewModel, - popupViewModel = this@KeyMapListViewModel, + dialogProvider = this@KeyMapListViewModel, neverShowDndTriggerErrorAgain = { listKeyMaps.neverShowDndTriggerError() }, fixError = { listKeyMaps.fixError(error) }, ) @@ -561,7 +561,7 @@ class KeyMapListViewModel( else -> { ViewModelHelper.showFixErrorDialog( resourceProvider = this@KeyMapListViewModel, - popupViewModel = this@KeyMapListViewModel, + dialogProvider = this@KeyMapListViewModel, error, ) { listKeyMaps.fixError(error) @@ -678,7 +678,7 @@ class KeyMapListViewModel( val explanationResponse = ViewModelHelper.showAccessibilityServiceExplanationDialog( resourceProvider = this@KeyMapListViewModel, - popupViewModel = this@KeyMapListViewModel, + dialogProvider = this@KeyMapListViewModel, ) if (explanationResponse != DialogResponse.POSITIVE) { @@ -688,7 +688,7 @@ class KeyMapListViewModel( if (!showAlertsUseCase.startAccessibilityService()) { ViewModelHelper.handleCantFindAccessibilitySettings( resourceProvider = this@KeyMapListViewModel, - popupViewModel = this@KeyMapListViewModel, + dialogProvider = this@KeyMapListViewModel, ) } } @@ -696,7 +696,7 @@ class KeyMapListViewModel( ID_ACCESSIBILITY_SERVICE_CRASHED_LIST_ITEM -> ViewModelHelper.handleKeyMapperCrashedDialog( resourceProvider = this@KeyMapListViewModel, - popupViewModel = this@KeyMapListViewModel, + dialogProvider = this@KeyMapListViewModel, restartService = showAlertsUseCase::restartAccessibilityService, ignoreCrashed = showAlertsUseCase::acknowledgeCrashed, ) @@ -709,7 +709,7 @@ class KeyMapListViewModel( } private suspend fun showNotificationPermissionAlertDialog() { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( title = getString(R.string.dialog_title_request_notification_permission), message = getText(R.string.dialog_message_request_notification_permission), positiveButtonText = getString(R.string.pos_turn_on), @@ -717,7 +717,7 @@ class KeyMapListViewModel( neutralButtonText = getString(R.string.pos_never_show_again), ) - val dialogResponse = showPopup("notification_permission_alert", dialog) + val dialogResponse = showDialog("notification_permission_alert", dialog) if (dialogResponse == DialogResponse.POSITIVE) { showAlertsUseCase.requestNotificationPermission() @@ -904,9 +904,9 @@ class KeyMapListViewModel( is Success -> {} is Error -> { - val response = showPopup( + val response = showDialog( "automatic_backup_error", - PopupUi.Dialog( + DialogModel.Alert( title = getString(R.string.toast_automatic_backup_failed), message = result.getFullMessage(this), positiveButtonText = getString(R.string.pos_ok), diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt index 419c318523..80e97e3928 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt @@ -20,7 +20,7 @@ import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBin import io.github.sds100.keymapper.base.logEntry import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.Flow @@ -56,7 +56,7 @@ class LogFragment : SimpleRecyclerViewFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - viewModel.showPopups(this, binding) + viewModel.showDialogs(this, binding) getBottomAppBar(binding)?.setOnMenuItemClickListener { menuItem -> viewModel.onMenuItemClick(menuItem.itemId) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt index 7c06aac05a..ded3b3028d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt @@ -9,13 +9,13 @@ import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.ifIsData import io.github.sds100.keymapper.common.utils.mapData import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.SelectionState import io.github.sds100.keymapper.base.utils.ui.TintType -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -38,7 +38,7 @@ class LogViewModel @Inject constructor( private val useCase: DisplayLogUseCase, resourceProvider: ResourceProvider, ) : ViewModel(), - PopupViewModel by PopupViewModelImpl(), + DialogProvider by DialogProviderImpl(), ResourceProvider by resourceProvider { private val multiSelectProvider: MultiSelectProvider = MultiSelectProvider() @@ -126,7 +126,7 @@ class LogViewModel @Inject constructor( R.id.action_clear -> useCase.clearLog() R.id.action_copy -> { useCase.copyToClipboard(getSelectedLogEntries()) - showPopup("copied", PopupUi.Toast(getString(R.string.toast_copied_log))) + showDialog("copied", DialogModel.Toast(getString(R.string.toast_copied_log))) } R.id.action_short_messages -> { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt index d2dbb7e411..f82b8f2e84 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/Android11BugWorkaroundSettingsFragment.kt @@ -9,10 +9,10 @@ import androidx.preference.isEmpty import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.ChooseAppStoreModel -import io.github.sds100.keymapper.base.utils.ui.PopupUi +import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope import io.github.sds100.keymapper.data.Keys @@ -83,7 +83,7 @@ class Android11BugWorkaroundSettingsFragment : BaseSettingsFragment() { setOnPreferenceClickListener { viewLifecycleScope.launchWhenResumed { if (isTvDevice) { - val chooseAppStoreDialog = PopupUi.ChooseAppStore( + val chooseAppStoreDialog = DialogModel.ChooseAppStore( title = getString(R.string.dialog_title_choose_download_leanback_keyboard), message = getString(R.string.dialog_message_choose_download_leanback_keyboard), model = ChooseAppStoreModel( @@ -92,9 +92,9 @@ class Android11BugWorkaroundSettingsFragment : BaseSettingsFragment() { negativeButtonText = str(R.string.neg_cancel), ) - viewModel.showPopup("download_leanback_ime", chooseAppStoreDialog) + viewModel.showDialog("download_leanback_ime", chooseAppStoreDialog) } else { - val chooseAppStoreDialog = PopupUi.ChooseAppStore( + val chooseAppStoreDialog = DialogModel.ChooseAppStore( title = getString(R.string.dialog_title_choose_download_gui_keyboard), message = getString(R.string.dialog_message_choose_download_gui_keyboard), model = ChooseAppStoreModel( @@ -105,7 +105,7 @@ class Android11BugWorkaroundSettingsFragment : BaseSettingsFragment() { negativeButtonText = str(R.string.neg_cancel), ) - viewModel.showPopup("download_gui_keyboard", chooseAppStoreDialog) + viewModel.showDialog("download_gui_keyboard", chooseAppStoreDialog) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt index 0282b8d81d..79c6b34c2b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt @@ -12,7 +12,7 @@ import androidx.preference.PreferenceFragmentCompat import com.google.android.material.bottomappbar.BottomAppBar import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.system.url.UrlUtils @@ -54,7 +54,7 @@ abstract class BaseSettingsFragment : PreferenceFragmentCompat() { } } - viewModel.showPopups(this, view) + viewModel.showDialogs(this, view) } private fun onBackPressed() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt index 7434fe2fce..dd6c2a6caf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt @@ -8,11 +8,11 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess @@ -32,7 +32,7 @@ class SettingsViewModel @Inject constructor( private val resourceProvider: ResourceProvider, val sharedPrefsDataStoreWrapper: SharedPrefsDataStoreWrapper, ) : ViewModel(), - PopupViewModel by PopupViewModelImpl(), + DialogProvider by DialogProviderImpl(), ResourceProvider by resourceProvider { val automaticBackupLocation = useCase.automaticBackupLocation @@ -78,21 +78,21 @@ class SettingsViewModel @Inject constructor( .chooseCompatibleIme() .onSuccess { ime -> val snackBar = - PopupUi.SnackBar( + DialogModel.SnackBar( message = getString( R.string.toast_chose_keyboard, ime.label, ), ) - showPopup("chose_ime_success", snackBar) + showDialog("chose_ime_success", snackBar) } .otherwise { useCase.showImePicker() } .onFailure { error -> val snackBar = - PopupUi.SnackBar(message = error.getFullMessage(this@SettingsViewModel)) - showPopup("chose_ime_error", snackBar) + DialogModel.SnackBar(message = error.getFullMessage(this@SettingsViewModel)) + showDialog("chose_ime_error", snackBar) } } } @@ -102,15 +102,15 @@ class SettingsViewModel @Inject constructor( val soundFiles = useCase.getSoundFiles() if (soundFiles.isEmpty()) { - showPopup("no sound files", PopupUi.Toast(getString(R.string.toast_no_sound_files))) + showDialog("no sound files", DialogModel.Toast(getString(R.string.toast_no_sound_files))) return@launch } - val dialog = PopupUi.MultiChoice( + val dialog = DialogModel.MultiChoice( items = soundFiles.map { MultiChoiceItem(it.uid, it.name) }, ) - val selectedFiles = showPopup("select_sound_files_to_delete", dialog) ?: return@launch + val selectedFiles = showDialog("select_sound_files_to_delete", dialog) ?: return@launch useCase.deleteSoundFiles(selectedFiles) } @@ -156,16 +156,16 @@ class SettingsViewModel @Inject constructor( .filter { it.isExternal } if (externalDevices.isEmpty()) { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( message = getString(R.string.dialog_message_settings_no_external_devices_connected), positiveButtonText = getString(R.string.pos_ok), ) - showPopup("no_external_devices", dialog) + showDialog("no_external_devices", dialog) } else { val checkedDevices = useCase.getPreference(prefKey).first() ?: emptySet() - val dialog = PopupUi.MultiChoice( + val dialog = DialogModel.MultiChoice( items = externalDevices.map { device -> MultiChoiceItem( id = device.descriptor, @@ -175,7 +175,7 @@ class SettingsViewModel @Inject constructor( }, ) - val newCheckedDevices = showPopup("choose_device", dialog) ?: return@launch + val newCheckedDevices = showDialog("choose_device", dialog) ?: return@launch useCase.setPreference(prefKey, newCheckedDevices.toSet()) } @@ -183,18 +183,18 @@ class SettingsViewModel @Inject constructor( } fun onCreateBackupFileActivityNotFound() { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( message = getString(R.string.dialog_message_no_app_found_to_create_file), positiveButtonText = getString(R.string.pos_ok), ) viewModelScope.launch { - showPopup("create_document_activity_not_found", dialog) + showDialog("create_document_activity_not_found", dialog) } } fun onResetAllSettingsClick() { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( title = getString(R.string.dialog_title_reset_settings), message = getString(R.string.dialog_message_reset_settings), positiveButtonText = getString(R.string.pos_button_reset_settings), @@ -202,7 +202,7 @@ class SettingsViewModel @Inject constructor( ) viewModelScope.launch { - val response = showPopup("reset_settings_dialog", dialog) + val response = showDialog("reset_settings_dialog", dialog) if (response == DialogResponse.POSITIVE) { useCase.resetAllSettings() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt index a498255ec3..4e3094aec4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt @@ -16,7 +16,7 @@ import io.github.sds100.keymapper.base.simple import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.apps.AppShortcutInfo import kotlinx.coroutines.flow.Flow @@ -62,7 +62,7 @@ class ChooseAppShortcutFragment : SimpleRecyclerViewFragment(null) @@ -105,9 +105,9 @@ class ChooseAppShortcutViewModel @Inject constructor( if (intentShortcutName != null) { shortcutName = intentShortcutName } else { - shortcutName = showPopup( + shortcutName = showDialog( "create_shortcut_name", - PopupUi.Text( + DialogModel.Text( hint = getString(R.string.hint_shortcut_name), allowEmpty = false, ), diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt index 41b75e2a4e..ba938380e1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt @@ -8,8 +8,8 @@ import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem import io.github.sds100.keymapper.base.utils.ui.ListItem -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.TextListItem import kotlinx.coroutines.flow.MutableSharedFlow @@ -28,7 +28,7 @@ class ChooseBluetoothDeviceViewModel @Inject constructor( private val resourceProvider: ResourceProvider ) : ViewModel(), ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl() { + DialogProvider by DialogProviderImpl() { private val _caption = MutableStateFlow(null) val caption: StateFlow = _caption diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt index 92bbad4d14..5dcf82f60a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt @@ -25,7 +25,7 @@ import io.github.sds100.keymapper.base.intentExtraBool import io.github.sds100.keymapper.base.intentExtraGeneric import io.github.sds100.keymapper.base.utils.navigation.setupFragmentNavigation import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showPopups +import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.system.intents.BoolIntentExtraListItem import io.github.sds100.keymapper.system.intents.GenericIntentExtraListItem import io.github.sds100.keymapper.system.intents.IntentExtraListItem @@ -85,7 +85,7 @@ class ConfigIntentFragment : Fragment() { binding.viewModel = viewModel - viewModel.showPopups(this, binding) + viewModel.showDialogs(this, binding) requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { findNavController().navigateUp() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt index f51bc6d04e..3c824ff592 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt @@ -17,11 +17,11 @@ import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel -import io.github.sds100.keymapper.base.utils.ui.PopupViewModelImpl +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.hasFlag import io.github.sds100.keymapper.common.utils.withFlag import io.github.sds100.keymapper.system.apps.ActivityInfo @@ -66,7 +66,7 @@ class ConfigIntentViewModel @Inject constructor( private val resourceProvider: ResourceProvider ) : ViewModel(), ResourceProvider by resourceProvider, - PopupViewModel by PopupViewModelImpl(), + DialogProvider by DialogProviderImpl(), NavigationProvider by NavigationProviderImpl() { companion object { @@ -322,9 +322,9 @@ class ConfigIntentViewModel @Inject constructor( viewModelScope.launch { val items = EXTRA_TYPES.map { it to getString(it.getLabelStringRes()) } - val dialog = PopupUi.SingleChoice(items) + val dialog = DialogModel.SingleChoice(items) - val extraType = showPopup("add_extra", dialog) ?: return@launch + val extraType = showDialog("add_extra", dialog) ?: return@launch val modelValue = when (extraType) { BoolExtraType -> "true" @@ -340,16 +340,16 @@ class ConfigIntentViewModel @Inject constructor( fun onShowExtraExampleClick(listItem: IntentExtraListItem) { viewModelScope.launch { if (listItem is GenericIntentExtraListItem) { - val dialog = PopupUi.Ok(message = listItem.exampleString) - showPopup("extra_example", dialog) + val dialog = DialogModel.Ok(message = listItem.exampleString) + showDialog("extra_example", dialog) } } } fun onShowCategoriesExampleClick() { viewModelScope.launch { - val dialog = PopupUi.Ok(message = getString(R.string.intent_categories_example)) - showPopup("categories_example", dialog) + val dialog = DialogModel.Ok(message = getString(R.string.intent_categories_example)) + showDialog("categories_example", dialog) } } @@ -366,9 +366,9 @@ class ConfigIntentViewModel @Inject constructor( MultiChoiceItem(intentFlagInt, intentFlagText, isChecked) } - val dialog = PopupUi.MultiChoice(items = dialogItems) + val dialog = DialogModel.MultiChoice(items = dialogItems) - val selectedFlags = showPopup("set_flags", dialog) ?: return@launch + val selectedFlags = showDialog("set_flags", dialog) ?: return@launch var newFlags = 0 @@ -455,18 +455,18 @@ class ConfigIntentViewModel @Inject constructor( fun onShowFlagsExampleClick() { viewModelScope.launch { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( message = getString(R.string.intent_flags_example), positiveButtonText = getString(R.string.pos_ok), neutralButtonText = getString(R.string.neutral_intent_docs), ) - val response = showPopup("flags_example", dialog) ?: return@launch + val response = showDialog("flags_example", dialog) ?: return@launch if (response == DialogResponse.NEUTRAL) { - showPopup( + showDialog( "url_intent_flags", - PopupUi.OpenUrl(getString(R.string.url_intent_set_flags_help)), + DialogModel.OpenUrl(getString(R.string.url_intent_set_flags_help)), ) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index 89669e8337..659c53342f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -27,12 +27,12 @@ import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.LinkType -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.PopupViewModel +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.base.utils.ui.showPopup +import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.Error import io.github.sds100.keymapper.common.utils.Result import io.github.sds100.keymapper.common.utils.State @@ -73,9 +73,9 @@ abstract class BaseConfigTriggerViewModel( private val fingerprintGesturesSupported: FingerprintGesturesSupportedUseCase, resourceProvider: ResourceProvider, navigationProvider: NavigationProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, ) : ResourceProvider by resourceProvider, - PopupViewModel by popupViewModel, + DialogProvider by dialogProvider, NavigationProvider by navigationProvider { companion object { @@ -248,7 +248,7 @@ abstract class BaseConfigTriggerViewModel( FingerprintGestureType.SWIPE_RIGHT to getString(R.string.fingerprint_gesture_right), ) - val selectedType = showPopup("pick_assistant_type", PopupUi.SingleChoice(listItems)) + val selectedType = showDialog("pick_assistant_type", DialogModel.SingleChoice(listItems)) ?: return@launch config.addFingerprintGesture(type = selectedType) @@ -441,11 +441,11 @@ abstract class BaseConfigTriggerViewModel( return } - val dialog = PopupUi.Ok( + val dialog = DialogModel.Ok( message = getString(R.string.dialog_message_parallel_trigger_order), ) - showPopup("parallel_trigger_order", dialog) ?: return + showDialog("parallel_trigger_order", dialog) ?: return onboarding.shownParallelTriggerOrderExplanation = true } @@ -455,11 +455,11 @@ abstract class BaseConfigTriggerViewModel( return } - val dialog = PopupUi.Ok( + val dialog = DialogModel.Ok( message = getString(R.string.dialog_message_sequence_trigger_explanation), ) - showPopup("sequence_trigger_explanation", dialog) + showDialog("sequence_trigger_explanation", dialog) ?: return onboarding.shownSequenceTriggerExplanation = true @@ -476,13 +476,13 @@ abstract class BaseConfigTriggerViewModel( return } - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( title = getString(R.string.dialog_title_keycode_to_scancode_trigger_explanation), message = getString(R.string.dialog_message_keycode_to_scancode_trigger_explanation), positiveButtonText = getString(R.string.pos_understood), ) - val response = showPopup("keycode_to_scancode_message", dialog) + val response = showDialog("keycode_to_scancode_message", dialog) if (response == DialogResponse.POSITIVE) { onboarding.shownKeyCodeToScanCodeTriggerExplanation = true @@ -490,33 +490,33 @@ abstract class BaseConfigTriggerViewModel( } if (key.keyCode == KeyEvent.KEYCODE_CAPS_LOCK) { - val dialog = PopupUi.Ok( + val dialog = DialogModel.Ok( message = getString(R.string.dialog_message_enable_physical_keyboard_caps_lock_a_keyboard_layout), ) - showPopup("caps_lock_message", dialog) + showDialog("caps_lock_message", dialog) } if (key.keyCode == KeyEvent.KEYCODE_BACK) { - val dialog = PopupUi.Ok( + val dialog = DialogModel.Ok( message = getString(R.string.dialog_message_screen_pinning_warning), ) - showPopup("screen_pinning_message", dialog) + showDialog("screen_pinning_message", dialog) } // Issue #491. Some key codes can only be detected through an input method. This will // be shown to the user by showing a keyboard icon next to the trigger key name so // explain this to the user. if (key.detectionSource == KeyEventDetectionSource.INPUT_METHOD && displayKeyMap.showTriggerKeyboardIconExplanation.first()) { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( title = getString(R.string.dialog_title_keyboard_icon_means_ime_detection), message = getString(R.string.dialog_message_keyboard_icon_means_ime_detection), negativeButtonText = getString(R.string.neg_dont_show_again), positiveButtonText = getString(R.string.pos_ok), ) - val response = showPopup("keyboard_icon_explanation", dialog) + val response = showDialog("keyboard_icon_explanation", dialog) if (response == DialogResponse.NEGATIVE) { displayKeyMap.neverShowTriggerKeyboardIconExplanation() @@ -620,7 +620,7 @@ abstract class BaseConfigTriggerViewModel( if (result is Error.AccessibilityServiceDisabled) { ViewModelHelper.handleAccessibilityServiceStoppedDialog( resourceProvider = this@BaseConfigTriggerViewModel, - popupViewModel = this@BaseConfigTriggerViewModel, + dialogProvider = this@BaseConfigTriggerViewModel, startService = displayKeyMap::startAccessibilityService, ) } @@ -628,7 +628,7 @@ abstract class BaseConfigTriggerViewModel( if (result is Error.AccessibilityServiceCrashed) { ViewModelHelper.handleAccessibilityServiceCrashedDialog( resourceProvider = this@BaseConfigTriggerViewModel, - popupViewModel = this@BaseConfigTriggerViewModel, + dialogProvider = this@BaseConfigTriggerViewModel, restartService = displayKeyMap::restartAccessibilityService, ) } @@ -640,7 +640,7 @@ abstract class BaseConfigTriggerViewModel( TriggerError.DND_ACCESS_DENIED -> ViewModelHelper.showDialogExplainingDndAccessBeingUnavailable( resourceProvider = this@BaseConfigTriggerViewModel, - popupViewModel = this@BaseConfigTriggerViewModel, + dialogProvider = this@BaseConfigTriggerViewModel, neverShowDndTriggerErrorAgain = { displayKeyMap.neverShowDndTriggerError() }, fixError = { displayKeyMap.fixTriggerError(error) }, ) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupUi.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogModel.kt similarity index 75% rename from base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupUi.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogModel.kt index 88ad188d7f..40c359c0f3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupUi.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogModel.kt @@ -1,24 +1,22 @@ package io.github.sds100.keymapper.base.utils.ui - - -sealed class PopupUi { +sealed class DialogModel { data class SnackBar( val message: String, val long: Boolean = false, val actionText: String? = null, - ) : PopupUi() + ) : DialogModel() - data class Ok(val message: String, val title: String? = null) : PopupUi() + data class Ok(val message: String, val title: String? = null) : DialogModel() - data class Dialog( + data class Alert( val title: CharSequence? = null, val message: CharSequence, val positiveButtonText: CharSequence, val neutralButtonText: CharSequence? = null, val negativeButtonText: CharSequence? = null, - ) : PopupUi() + ) : DialogModel() data class Text( val hint: String, @@ -27,15 +25,15 @@ sealed class PopupUi { val inputType: Int? = null, val message: CharSequence? = null, val autoCompleteEntries: List = emptyList(), - ) : PopupUi() + ) : DialogModel() data class SingleChoice( val items: List>, - ) : PopupUi() + ) : DialogModel() - data class MultiChoice(val items: List>) : PopupUi>() + data class MultiChoice(val items: List>) : DialogModel>() - data class Toast(val text: String) : PopupUi() + data class Toast(val text: String) : DialogModel() data class ChooseAppStore( val title: CharSequence, @@ -43,9 +41,9 @@ sealed class PopupUi { val model: ChooseAppStoreModel, val positiveButtonText: CharSequence? = null, val negativeButtonText: CharSequence? = null, - ) : PopupUi() + ) : DialogModel() - data class OpenUrl(val url: String) : PopupUi() + data class OpenUrl(val url: String) : DialogModel() } enum class DialogResponse { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogProvider.kt similarity index 74% rename from base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogProvider.kt index 8fb4ad286e..3e65e66f17 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/PopupViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogProvider.kt @@ -27,85 +27,84 @@ import kotlinx.coroutines.runBlocking import javax.inject.Inject import javax.inject.Singleton -// TODO Rename DialogProvider @Singleton -class PopupViewModelImpl @Inject constructor() : PopupViewModel { +class DialogProviderImpl @Inject constructor() : DialogProvider { - private val _onUserResponse by lazy { MutableSharedFlow() } + private val _onUserResponse by lazy { MutableSharedFlow() } override val onUserResponse by lazy { _onUserResponse.asSharedFlow() } - private val getUserResponse by lazy { MutableSharedFlow() } - override val showPopup by lazy { getUserResponse.asSharedFlow() } + private val getUserResponse by lazy { MutableSharedFlow() } + override val showDialog by lazy { getUserResponse.asSharedFlow() } - override suspend fun showPopup(event: ShowPopupEvent) { + override suspend fun showDialog(event: ShowDialogEvent) { // wait for the view to collect so no dialogs are missed getUserResponse.subscriptionCount.first { it > 0 } getUserResponse.emit(event) } - override fun onUserResponse(event: OnPopupResponseEvent) { + override fun onUserResponse(event: OnDialogResponseEvent) { runBlocking { _onUserResponse.emit(event) } } } -interface PopupViewModel { - val showPopup: SharedFlow - val onUserResponse: SharedFlow +interface DialogProvider { + val showDialog: SharedFlow + val onUserResponse: SharedFlow - suspend fun showPopup(event: ShowPopupEvent) - fun onUserResponse(event: OnPopupResponseEvent) + suspend fun showDialog(event: ShowDialogEvent) + fun onUserResponse(event: OnDialogResponseEvent) } -fun PopupViewModel.onUserResponse(key: String, response: Any?) { - onUserResponse(OnPopupResponseEvent(key, response)) +fun DialogProvider.onUserResponse(key: String, response: Any?) { + onUserResponse(OnDialogResponseEvent(key, response)) } -suspend inline fun PopupViewModel.showPopup( +suspend inline fun DialogProvider.showDialog( key: String, - ui: PopupUi, + ui: DialogModel, ): R? { - showPopup(ShowPopupEvent(key, ui)) + showDialog(ShowDialogEvent(key, ui)) /* This ensures only one job for a dialog is active at once by cancelling previous jobs when a new dialog is shown with the same key */ return merge( - showPopup.dropWhile { it.key != key }.map { null }, + showDialog.dropWhile { it.key != key }.map { null }, onUserResponse.dropWhile { it.response !is R? && it.key != key }.map { it.response }, ).first() as R? } -fun PopupViewModel.showPopups( +fun DialogProvider.showDialogs( fragment: Fragment, binding: ViewDataBinding, ) { - showPopups(fragment.requireContext(), fragment.viewLifecycleOwner, binding.root) + showDialogs(fragment.requireContext(), fragment.viewLifecycleOwner, binding.root) } -fun PopupViewModel.showPopups( +fun DialogProvider.showDialogs( fragment: Fragment, rootView: View, ) { - showPopups(fragment.requireContext(), fragment.viewLifecycleOwner, rootView) + showDialogs(fragment.requireContext(), fragment.viewLifecycleOwner, rootView) } -fun PopupViewModel.showPopups( +fun DialogProvider.showDialogs( activity: FragmentActivity, rootView: View, ) { - showPopups(activity, activity, rootView) + showDialogs(activity, activity, rootView) } -fun PopupViewModel.showPopups( +fun DialogProvider.showDialogs( ctx: Context, lifecycleOwner: LifecycleOwner, rootView: View, ) { // must be onCreate because dismissing in onDestroy lifecycleOwner.launchRepeatOnLifecycle(Lifecycle.State.CREATED) { - showPopup.onEach { event -> + showDialog.onEach { event -> var responded = false val observer = object : LifecycleObserver { @@ -124,16 +123,16 @@ fun PopupViewModel.showPopups( val response: Any? when (event.ui) { - is PopupUi.Ok -> + is DialogModel.Ok -> response = ctx.okDialog(lifecycleOwner, event.ui.message, event.ui.title) - is PopupUi.MultiChoice<*> -> + is DialogModel.MultiChoice<*> -> response = ctx.multiChoiceDialog(lifecycleOwner, event.ui.items) - is PopupUi.SingleChoice<*> -> + is DialogModel.SingleChoice<*> -> response = ctx.singleChoiceDialog(lifecycleOwner, event.ui.items) - is PopupUi.SnackBar -> + is DialogModel.SnackBar -> response = SnackBarUtils.show( rootView.findViewById(R.id.coordinatorLayout), event.ui.message, @@ -141,7 +140,7 @@ fun PopupViewModel.showPopups( event.ui.long, ) - is PopupUi.Text -> + is DialogModel.Text -> response = ctx.editTextStringAlertDialog( lifecycleOwner, event.ui.hint, @@ -152,15 +151,15 @@ fun PopupViewModel.showPopups( event.ui.autoCompleteEntries, ) - is PopupUi.Dialog -> + is DialogModel.Alert -> response = ctx.materialAlertDialog(lifecycleOwner, event.ui) - is PopupUi.Toast -> { + is DialogModel.Toast -> { Toast.makeText(ctx, event.ui.text, Toast.LENGTH_SHORT).show() response = Unit } - is PopupUi.ChooseAppStore -> { + is DialogModel.ChooseAppStore -> { val view = DialogChooseAppStoreBinding.inflate(LayoutInflater.from(ctx)).apply { model = event.ui.model }.root @@ -175,7 +174,7 @@ fun PopupViewModel.showPopups( ) } - is PopupUi.OpenUrl -> { + is DialogModel.OpenUrl -> { UrlUtils.openUrl(ctx, event.ui.url) response = Unit } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt index 8dfb449a3f..c3d465875c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/DialogUtils.kt @@ -28,7 +28,7 @@ import kotlin.coroutines.resume suspend fun Context.materialAlertDialog( lifecycleOwner: LifecycleOwner, - model: PopupUi.Dialog, + model: DialogModel.Alert, ) = suspendCancellableCoroutine { continuation -> materialAlertDialog { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnDialogResponseEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnDialogResponseEvent.kt new file mode 100644 index 0000000000..e7271235cd --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnDialogResponseEvent.kt @@ -0,0 +1,4 @@ +package io.github.sds100.keymapper.base.utils.ui + + +data class OnDialogResponseEvent(val key: String, val response: Any?) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnPopupResponseEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnPopupResponseEvent.kt deleted file mode 100644 index 55afbdfc76..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnPopupResponseEvent.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.github.sds100.keymapper.base.utils.ui - - -data class OnPopupResponseEvent(val key: String, val response: Any?) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowDialogEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowDialogEvent.kt new file mode 100644 index 0000000000..e31336e6d4 --- /dev/null +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowDialogEvent.kt @@ -0,0 +1,4 @@ +package io.github.sds100.keymapper.base.utils.ui + + +data class ShowDialogEvent(val key: String, val ui: DialogModel<*>) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowPopupEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowPopupEvent.kt deleted file mode 100644 index 7b841a99a0..0000000000 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowPopupEvent.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.github.sds100.keymapper.base.utils.ui - - -data class ShowPopupEvent(val key: String, val ui: PopupUi<*>) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt index feae8cbccf..fedb42518c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt @@ -11,11 +11,11 @@ import io.github.sds100.keymapper.base.utils.isFixable object ViewModelHelper { suspend fun handleKeyMapperCrashedDialog( resourceProvider: ResourceProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, restartService: () -> Boolean, ignoreCrashed: () -> Unit, ) { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( title = resourceProvider.getString(R.string.dialog_title_key_mapper_crashed), message = resourceProvider.getText(R.string.dialog_message_key_mapper_crashed), positiveButtonText = resourceProvider.getString(R.string.dialog_button_read_dont_kill_my_app_yes), @@ -23,13 +23,13 @@ object ViewModelHelper { neutralButtonText = resourceProvider.getString(R.string.pos_restart), ) - val response = popupViewModel.showPopup("app_crashed_prompt", dialog) ?: return + val response = dialogProvider.showDialog("app_crashed_prompt", dialog) ?: return when (response) { DialogResponse.POSITIVE -> { val popup = - PopupUi.OpenUrl(resourceProvider.getString(R.string.url_dont_kill_my_app)) - popupViewModel.showPopup("dont_kill_my_app", popup) + DialogModel.OpenUrl(resourceProvider.getString(R.string.url_dont_kill_my_app)) + dialogProvider.showDialog("dont_kill_my_app", popup) } DialogResponse.NEGATIVE -> ignoreCrashed() @@ -40,9 +40,9 @@ object ViewModelHelper { suspend fun showAccessibilityServiceExplanationDialog( resourceProvider: ResourceProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, ): DialogResponse { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( title = resourceProvider.getString(R.string.dialog_title_accessibility_service_explanation), message = resourceProvider.getString(R.string.dialog_message_accessibility_service_explanation), positiveButtonText = resourceProvider.getString(R.string.enable), @@ -50,7 +50,7 @@ object ViewModelHelper { ) val response = - popupViewModel.showPopup("accessibility_service_explanation", dialog) + dialogProvider.showDialog("accessibility_service_explanation", dialog) ?: return DialogResponse.NEGATIVE return response @@ -58,9 +58,9 @@ object ViewModelHelper { suspend fun handleCantFindAccessibilitySettings( resourceProvider: ResourceProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, ) { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( title = resourceProvider.getString(R.string.dialog_title_cant_find_accessibility_settings_page), message = resourceProvider.getText(R.string.dialog_message_cant_find_accessibility_settings_page), positiveButtonText = resourceProvider.getString(R.string.pos_start_service_with_adb_guide), @@ -68,93 +68,93 @@ object ViewModelHelper { ) val response = - popupViewModel.showPopup("cant_find_accessibility_settings", dialog) ?: return + dialogProvider.showDialog("cant_find_accessibility_settings", dialog) ?: return if (response == DialogResponse.POSITIVE) { val url = resourceProvider.getString(R.string.url_cant_find_accessibility_settings_issue) - val openUrlPopup = PopupUi.OpenUrl(url) + val openUrlPopup = DialogModel.OpenUrl(url) - popupViewModel.showPopup("url_cant_find_accessibility_settings_issue", openUrlPopup) + dialogProvider.showDialog("url_cant_find_accessibility_settings_issue", openUrlPopup) } } suspend fun handleAccessibilityServiceStoppedDialog( resourceProvider: ResourceProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, startService: () -> Boolean, ) { val explanationResponse = - showAccessibilityServiceExplanationDialog(resourceProvider, popupViewModel) + showAccessibilityServiceExplanationDialog(resourceProvider, dialogProvider) if (explanationResponse != DialogResponse.POSITIVE) { return } if (!startService.invoke()) { - handleCantFindAccessibilitySettings(resourceProvider, popupViewModel) + handleCantFindAccessibilitySettings(resourceProvider, dialogProvider) } } suspend fun handleAccessibilityServiceCrashedDialog( resourceProvider: ResourceProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, restartService: () -> Boolean, ) { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( title = resourceProvider.getString(R.string.dialog_title_accessibility_service_explanation), message = resourceProvider.getString(R.string.dialog_message_restart_accessibility_service), positiveButtonText = resourceProvider.getString(R.string.pos_restart), negativeButtonText = resourceProvider.getString(R.string.neg_cancel), ) - val response = popupViewModel.showPopup("accessibility_service_explanation", dialog) + val response = dialogProvider.showDialog("accessibility_service_explanation", dialog) if (response != DialogResponse.POSITIVE) { return } if (!restartService.invoke()) { - handleCantFindAccessibilitySettings(resourceProvider, popupViewModel) + handleCantFindAccessibilitySettings(resourceProvider, dialogProvider) } } suspend fun showFixErrorDialog( resourceProvider: ResourceProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, error: Error, fixError: suspend () -> Unit, ) { if (error.isFixable) { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( title = resourceProvider.getString(R.string.dialog_title_home_fix_error), message = error.getFullMessage(resourceProvider), positiveButtonText = resourceProvider.getString(R.string.dialog_button_fix), negativeButtonText = resourceProvider.getText(R.string.neg_cancel), ) - val response = popupViewModel.showPopup("fix_error", dialog) + val response = dialogProvider.showDialog("fix_error", dialog) if (response == DialogResponse.POSITIVE) { fixError.invoke() } } else { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( message = error.getFullMessage(resourceProvider), positiveButtonText = resourceProvider.getString(R.string.pos_ok), ) - popupViewModel.showPopup("fix_error", dialog) + dialogProvider.showDialog("fix_error", dialog) } } suspend fun showDialogExplainingDndAccessBeingUnavailable( resourceProvider: ResourceProvider, - popupViewModel: PopupViewModel, + dialogProvider: DialogProvider, neverShowDndTriggerErrorAgain: () -> Unit, fixError: suspend () -> Unit, ) { - val dialog = PopupUi.Dialog( + val dialog = DialogModel.Alert( title = resourceProvider.getString(R.string.dialog_title_fix_dnd_trigger_error), message = resourceProvider.getText(R.string.dialog_message_fix_dnd_trigger_error), positiveButtonText = resourceProvider.getString(R.string.pos_ok), @@ -162,7 +162,7 @@ object ViewModelHelper { neutralButtonText = resourceProvider.getString(R.string.neg_dont_show_again), ) - val dialogResponse = popupViewModel.showPopup("fix_dnd_trigger_error", dialog) + val dialogResponse = dialogProvider.showDialog("fix_dnd_trigger_error", dialog) if (dialogResponse == DialogResponse.POSITIVE) { val error = SystemError.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) diff --git a/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt index 6493b3cd85..6eb9ed3a10 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt @@ -4,8 +4,8 @@ import android.content.Intent import androidx.arch.core.executor.testing.InstantTaskExecutorRule import io.github.sds100.keymapper.base.utils.ui.FakeResourceProvider import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem -import io.github.sds100.keymapper.base.utils.ui.PopupUi -import io.github.sds100.keymapper.base.utils.ui.ShowPopupEvent +import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.ShowDialogEvent import io.github.sds100.keymapper.base.utils.ui.onUserResponse import io.github.sds100.keymapper.common.utils.firstBlocking import kotlinx.coroutines.Dispatchers @@ -40,8 +40,8 @@ internal class ConfigIntentViewModelTest { @Test fun showFlagsDialog_whenNoFlags_checkNoFlags() { viewModel.showFlagsDialog() - val popupEvent: ShowPopupEvent = viewModel.showPopup.firstBlocking() - val multipleChoiceDialog = popupEvent.ui as PopupUi.MultiChoice<*> + val popupEvent: ShowDialogEvent = viewModel.showDialog.firstBlocking() + val multipleChoiceDialog = popupEvent.ui as DialogModel.MultiChoice<*> assertThat(multipleChoiceDialog.items.none { it.isChecked }, `is`(true)) } @@ -49,12 +49,12 @@ internal class ConfigIntentViewModelTest { @Test fun showFlagsDialog_whenFlags_checkFlags() { viewModel.showFlagsDialog() - val addFlagPopupEvent: ShowPopupEvent = viewModel.showPopup.firstBlocking() + val addFlagPopupEvent: ShowDialogEvent = viewModel.showDialog.firstBlocking() viewModel.onUserResponse(addFlagPopupEvent.key, listOf(Intent.FLAG_ACTIVITY_NEW_TASK)) viewModel.showFlagsDialog() - val popupEvent: ShowPopupEvent = viewModel.showPopup.firstBlocking() - val multipleChoiceDialog = popupEvent.ui as PopupUi.MultiChoice<*> + val popupEvent: ShowDialogEvent = viewModel.showDialog.firstBlocking() + val multipleChoiceDialog = popupEvent.ui as DialogModel.MultiChoice<*> val expectedCheckedItem = MultiChoiceItem(Intent.FLAG_ACTIVITY_NEW_TASK, "FLAG_ACTIVITY_NEW_TASK", true) From 27d9724dcc47e0c2360ae33a83deadb467b2d09d Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 14:33:08 +0200 Subject: [PATCH 60/71] refactor: rename Result to KMResult to avoid import headaches when the Kotlin stdlib file is used instead --- .../purchasing/PurchasingManagerImpl.kt | 10 +- .../base/actions/ActionDataEntityMapper.kt | 8 +- .../base/actions/ActionErrorSnapshot.kt | 26 +-- .../base/actions/ConfigActionsViewModel.kt | 8 +- .../base/actions/DisplayActionUseCase.kt | 14 +- .../base/actions/IsActionSupportedUseCase.kt | 16 +- .../base/actions/PerformActionsUseCase.kt | 19 +- .../base/actions/TestActionUseCase.kt | 7 +- .../keyevent/ConfigKeyEventActionViewModel.kt | 10 +- .../actions/sound/ChooseSoundFileUseCase.kt | 14 +- .../base/actions/sound/SoundsManager.kt | 24 +-- .../uielement/InteractUiElementUseCase.kt | 14 +- .../uielement/InteractUiElementViewModel.kt | 6 +- .../keymapper/base/backup/BackupManager.kt | 64 +++---- .../backup/BackupRestoreMappingsUseCase.kt | 18 +- .../constraints/ConfigConstraintsViewModel.kt | 4 +- .../constraints/ConstraintErrorSnapshot.kt | 28 +-- .../constraints/CreateConstraintUseCase.kt | 12 +- .../constraints/DisplayConstraintUseCase.kt | 12 +- .../base/groups/GroupConstraintRow.kt | 6 +- .../base/home/HomeKeyMapListScreen.kt | 6 +- .../keymapper/base/home/KeyMapListAppBar.kt | 8 +- .../base/keymaps/ConfigKeyMapUseCase.kt | 7 +- .../keymaps/CreateKeyMapShortcutScreen.kt | 8 +- .../keymaps/CreateKeyMapShortcutUseCase.kt | 7 +- .../base/keymaps/DisplayKeyMapUseCase.kt | 34 ++-- .../base/keymaps/KeyMapListItemCreator.kt | 6 +- .../base/keymaps/KeyMapListScreen.kt | 14 +- .../base/keymaps/KeyMapListViewModel.kt | 10 +- .../base/keymaps/ListKeyMapsUseCase.kt | 6 +- .../keymaps/detection/KeyMapController.kt | 12 +- .../base/onboarding/OnboardingUseCase.kt | 4 +- .../base/purchasing/PurchasingError.kt | 4 +- .../base/purchasing/PurchasingManager.kt | 10 +- .../base/settings/ConfigSettingsUseCase.kt | 10 +- .../comparators/KeyMapActionsComparator.kt | 4 +- .../KeyMapConstraintsComparator.kt | 4 +- .../AccessibilityServiceAdapterImpl.kt | 10 +- .../accessibility/BaseAccessibilityService.kt | 38 ++-- .../accessibility/IAccessibilityService.kt | 12 +- .../system/apps/DisplayAppShortcutsUseCase.kt | 10 +- .../base/system/apps/DisplayAppsUseCase.kt | 18 +- .../system/inputmethod/KeyMapperImeHelper.kt | 19 +- .../inputmethod/ToggleCompatibleImeUseCase.kt | 6 +- .../base/system/navigation/OpenMenuHelper.kt | 4 +- .../trigger/BaseConfigTriggerViewModel.kt | 10 +- .../base/trigger/RecordTriggerUseCase.kt | 10 +- .../base/trigger/TriggerErrorSnapshot.kt | 4 +- .../sds100/keymapper/base/utils/ErrorUtils.kt | 157 ++++++++-------- .../base/utils/ui/BindingAdapters.kt | 1 - .../base/utils/ui/ViewModelHelper.kt | 4 +- .../base/utils/ui/compose/ComposeChipModel.kt | 2 +- .../keymapper/base/BackupManagerTest.kt | 12 +- .../actions/GetActionFailedUseCaseTest.kt | 4 +- .../base/actions/PerformActionsUseCaseTest.kt | 4 +- .../base/keymaps/KeyMapControllerTest.kt | 8 +- ...riggerKeyMapFromOtherAppsControllerTest.kt | 4 +- .../base/system/devices/FakeDevicesAdapter.kt | 4 +- .../base/system/files/FakeFileAdapter.kt | 8 +- .../keymapper/base/system/files/JavaFile.kt | 4 +- .../sds100/keymapper/common/utils/KMResult.kt | 169 +++++++++++++++++ .../sds100/keymapper/common/utils/Result.kt | 170 ------------------ .../github/sds100/keymapper/data/DataError.kt | 4 +- .../keymapper/data/entities/EntityExtra.kt | 4 +- .../github/sds100/keymapper/system/Shell.kt | 8 +- .../sds100/keymapper/system/SystemError.kt | 8 +- .../AccessibilityServiceAdapter.kt | 4 +- .../airplanemode/AirplaneModeAdapter.kt | 6 +- .../AndroidAirplaneModeAdapter.kt | 6 +- .../system/apps/AndroidAppShortcutAdapter.kt | 22 +-- .../apps/AndroidPackageManagerAdapter.kt | 56 +++--- .../system/apps/AppShortcutAdapter.kt | 10 +- .../system/apps/PackageManagerAdapter.kt | 24 +-- .../bluetooth/AndroidBluetoothAdapter.kt | 12 +- .../system/bluetooth/BluetoothAdapter.kt | 6 +- .../system/camera/AndroidCameraAdapter.kt | 40 ++--- .../keymapper/system/camera/CameraAdapter.kt | 10 +- .../system/devices/AndroidDevicesAdapter.kt | 8 +- .../system/devices/DevicesAdapter.kt | 4 +- .../system/display/AndroidDisplayAdapter.kt | 32 ++-- .../system/display/DisplayAdapter.kt | 16 +- .../system/files/AndroidFileAdapter.kt | 16 +- .../system/files/DocumentFileWrapper.kt | 24 +-- .../keymapper/system/files/FileAdapter.kt | 8 +- .../sds100/keymapper/system/files/IFile.kt | 4 +- .../inputmethod/AndroidInputMethodAdapter.kt | 30 ++-- .../system/inputmethod/InputMethodAdapter.kt | 12 +- .../keymapper/system/intents/IntentAdapter.kt | 10 +- .../system/lock/AndroidLockScreenAdapter.kt | 4 +- .../system/lock/LockScreenAdapter.kt | 4 +- .../system/media/AndroidMediaAdapter.kt | 38 ++-- .../keymapper/system/media/MediaAdapter.kt | 26 +-- .../system/network/AndroidNetworkAdapter.kt | 20 +-- .../system/network/NetworkAdapter.kt | 12 +- .../keymapper/system/nfc/AndroidNfcAdapter.kt | 6 +- .../sds100/keymapper/system/nfc/NfcAdapter.kt | 6 +- .../NotificationReceiverAdapter.kt | 4 +- .../NotificationReceiverAdapterImpl.kt | 4 +- .../permissions/AndroidPermissionAdapter.kt | 14 +- .../system/permissions/PermissionAdapter.kt | 4 +- .../system/phone/AndroidPhoneAdapter.kt | 8 +- .../keymapper/system/phone/PhoneAdapter.kt | 4 +- .../system/ringtones/RingtoneAdapter.kt | 16 +- .../sds100/keymapper/system/root/SuAdapter.kt | 17 +- .../keymapper/system/shell/ShellAdapter.kt | 4 +- .../system/url/AndroidOpenUrlAdapter.kt | 4 +- .../keymapper/system/url/OpenUrlAdapter.kt | 4 +- .../sds100/keymapper/system/url/UrlUtils.kt | 8 +- .../system/volume/AndroidVolumeAdapter.kt | 38 ++-- .../keymapper/system/volume/VolumeAdapter.kt | 20 +-- 110 files changed, 901 insertions(+), 914 deletions(-) create mode 100644 common/src/main/java/io/github/sds100/keymapper/common/utils/KMResult.kt delete mode 100644 common/src/main/java/io/github/sds100/keymapper/common/utils/Result.kt diff --git a/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt b/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt index c1a367b3b0..0011982ba9 100644 --- a/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt +++ b/app/src/main/java/io/github/sds100/keymapper/purchasing/PurchasingManagerImpl.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.purchasing import io.github.sds100.keymapper.base.purchasing.ProductId import io.github.sds100.keymapper.base.purchasing.PurchasingError import io.github.sds100.keymapper.base.purchasing.PurchasingManager -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow @@ -11,18 +11,18 @@ import kotlinx.coroutines.flow.MutableStateFlow class PurchasingManagerImpl : PurchasingManager { override val onCompleteProductPurchase: MutableSharedFlow = MutableSharedFlow() - override val purchases: Flow>>> = + override val purchases: Flow>>> = MutableStateFlow(State.Data(PurchasingError.PurchasingNotImplemented)) - override suspend fun launchPurchasingFlow(product: ProductId): Result { + override suspend fun launchPurchasingFlow(product: ProductId): KMResult { return PurchasingError.PurchasingNotImplemented } - override suspend fun getProductPrice(product: ProductId): Result { + override suspend fun getProductPrice(product: ProductId): KMResult { return PurchasingError.PurchasingNotImplemented } - override suspend fun isPurchased(product: ProductId): Result { + override suspend fun isPurchased(product: ProductId): KMResult { return PurchasingError.PurchasingNotImplemented } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt index f63dd59691..d90c383fd4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt @@ -2,8 +2,8 @@ package io.github.sds100.keymapper.base.actions import androidx.core.net.toUri import io.github.sds100.keymapper.common.utils.NodeInteractionType -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.common.utils.then @@ -609,10 +609,10 @@ object ActionDataEntityMapper { } } - private fun convertNodeInteractionType(string: String): Result = try { + private fun convertNodeInteractionType(string: String): KMResult = try { Success(NodeInteractionType.valueOf(string)) } catch (e: IllegalArgumentException) { - Error.Exception(e) + KMError.Exception(e) } fun toEntity(data: ActionData): ActionEntity { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt index 5e5860ba35..bc467fcf5c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.base.actions.sound.SoundsManager import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter @@ -53,7 +53,7 @@ class LazyActionErrorSnapshot( } } - override fun getError(action: ActionData): Error? { + override fun getError(action: ActionData): KMError? { val isSupportedError = isSupported(action.id) if (isSupportedError != null) { @@ -63,7 +63,7 @@ class LazyActionErrorSnapshot( if (action.canUseShizukuToPerform() && isShizukuInstalled) { if (!(action.canUseImeToPerform() && isCompatibleImeChosen)) { when { - !isShizukuStarted -> return Error.ShizukuNotStarted + !isShizukuStarted -> return KMError.ShizukuNotStarted !isPermissionGranted(Permission.SHIZUKU) -> return SystemError.PermissionDenied( Permission.SHIZUKU, @@ -72,11 +72,11 @@ class LazyActionErrorSnapshot( } } else if (action.canUseImeToPerform()) { if (!isCompatibleImeEnabled) { - return Error.NoCompatibleImeEnabled + return KMError.NoCompatibleImeEnabled } if (!isCompatibleImeChosen) { - return Error.NoCompatibleImeChosen + return KMError.NoCompatibleImeChosen } } @@ -112,21 +112,21 @@ class LazyActionErrorSnapshot( is ActionData.Sound.Ringtone -> { if (!ringtoneAdapter.exists(action.uri)) { - return Error.CantFindSoundFile + return KMError.CantFindSoundFile } } is ActionData.VoiceAssistant -> { if (!isVoiceAssistantInstalled) { - return Error.NoVoiceAssistant + return KMError.NoVoiceAssistant } } is ActionData.Flashlight -> if (!flashLenses.contains(action.lens)) { return when (action.lens) { - CameraLens.FRONT -> Error.FrontFlashNotFound - CameraLens.BACK -> Error.BackFlashNotFound + CameraLens.FRONT -> KMError.FrontFlashNotFound + CameraLens.BACK -> KMError.BackFlashNotFound } } @@ -141,15 +141,15 @@ class LazyActionErrorSnapshot( return null } - private fun getAppError(packageName: String): Error? { + private fun getAppError(packageName: String): KMError? { packageManager.isAppEnabled(packageName).onSuccess { isEnabled -> if (!isEnabled) { - return Error.AppDisabled(packageName) + return KMError.AppDisabled(packageName) } } if (!packageManager.isAppInstalled(packageName)) { - return Error.AppNotFound(packageName) + return KMError.AppNotFound(packageName) } return null @@ -167,5 +167,5 @@ class LazyActionErrorSnapshot( } interface ActionErrorSnapshot { - fun getError(action: ActionData): Error? + fun getError(action: ActionData): KMError? } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index ec0f6780a2..5f9fd63c2f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -19,7 +19,7 @@ import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.showDialog -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.common.utils.mapData @@ -251,7 +251,7 @@ class ConfigActionsViewModel( private suspend fun attemptTestAction(actionData: ActionData) { testAction.invoke(actionData).onFailure { error -> - if (error is Error.AccessibilityServiceDisabled) { + if (error is KMError.AccessibilityServiceDisabled) { ViewModelHelper.handleAccessibilityServiceStoppedDialog( resourceProvider = this, dialogProvider = this, @@ -259,7 +259,7 @@ class ConfigActionsViewModel( ) } - if (error is Error.AccessibilityServiceCrashed) { + if (error is KMError.AccessibilityServiceCrashed) { ViewModelHelper.handleAccessibilityServiceCrashedDialog( resourceProvider = this, dialogProvider = this, @@ -451,7 +451,7 @@ class ConfigActionsViewModel( } val icon: ComposeIconInfo = uiHelper.getIcon(action.data) - val error: Error? = errorSnapshot.getError(action.data) + val error: KMError? = errorSnapshot.getError(action.data) val extraInfo = buildString { val midDot = getString(R.string.middot) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt index 8e232b1917..ceb8958484 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/DisplayActionUseCase.kt @@ -1,17 +1,17 @@ package io.github.sds100.keymapper.base.actions import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import kotlinx.coroutines.flow.Flow interface DisplayActionUseCase : GetActionErrorUseCase { val showDeviceDescriptors: Flow - fun getAppName(packageName: String): Result - fun getAppIcon(packageName: String): Result - fun getInputMethodLabel(imeId: String): Result - fun getRingtoneLabel(uri: String): Result - suspend fun fixError(error: Error) + fun getAppName(packageName: String): KMResult + fun getAppIcon(packageName: String): KMResult + fun getInputMethodLabel(imeId: String): KMResult + fun getRingtoneLabel(uri: String): KMResult + suspend fun fixError(error: KMError) fun neverShowDndTriggerError() fun startAccessibilityService(): Boolean fun restartAccessibilityService(): Boolean diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt index 5a46a01db2..db65db77d6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/IsActionSupportedUseCase.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.actions import android.content.pm.PackageManager import android.os.Build -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraLens @@ -16,24 +16,24 @@ class IsActionSupportedUseCaseImpl( private val permissionAdapter: PermissionAdapter, ) : IsActionSupportedUseCase { - override fun isSupported(id: ActionId): Error? { + override fun isSupported(id: ActionId): KMError? { if (Build.VERSION.SDK_INT != 0) { val minApi = ActionUtils.getMinApi(id) if (Build.VERSION.SDK_INT < minApi) { - return Error.SdkVersionTooLow(minApi) + return KMError.SdkVersionTooLow(minApi) } val maxApi = ActionUtils.getMaxApi(id) if (Build.VERSION.SDK_INT > maxApi) { - return Error.SdkVersionTooHigh(maxApi) + return KMError.SdkVersionTooHigh(maxApi) } } ActionUtils.getRequiredSystemFeatures(id).forEach { feature -> if (!adapter.hasSystemFeature(feature)) { - return Error.SystemFeatureNotSupported(feature) + return KMError.SystemFeatureNotSupported(feature) } } @@ -41,7 +41,7 @@ class IsActionSupportedUseCaseImpl( if (cameraAdapter.getFlashInfo(CameraLens.BACK) == null && cameraAdapter.getFlashInfo(CameraLens.FRONT) == null ) { - return Error.SystemFeatureNotSupported(PackageManager.FEATURE_CAMERA_FLASH) + return KMError.SystemFeatureNotSupported(PackageManager.FEATURE_CAMERA_FLASH) } } @@ -49,7 +49,7 @@ class IsActionSupportedUseCaseImpl( if (cameraAdapter.getFlashInfo(CameraLens.BACK)?.supportsVariableStrength != true && cameraAdapter.getFlashInfo(CameraLens.FRONT)?.supportsVariableStrength != true ) { - return Error.CameraVariableFlashlightStrengthUnsupported + return KMError.CameraVariableFlashlightStrengthUnsupported } } @@ -65,5 +65,5 @@ class IsActionSupportedUseCaseImpl( } interface IsActionSupportedUseCase { - fun isSupported(id: ActionId): Error? + fun isSupported(id: ActionId): KMError? } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt index 130040d980..fc669881c4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt @@ -8,7 +8,6 @@ import android.view.accessibility.AccessibilityNodeInfo import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.sound.SoundsManager import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeAction @@ -18,10 +17,10 @@ import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.base.system.navigation.OpenMenuHelper import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.common.utils.Orientation -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.common.utils.firstBlocking @@ -148,7 +147,7 @@ class PerformActionsUseCaseImpl @AssistedInject constructor( /** * Is null if the action is being performed asynchronously */ - val result: Result<*> + val result: KMResult<*> when (action) { is ActionData.App -> { @@ -619,7 +618,7 @@ class PerformActionsUseCaseImpl @AssistedInject constructor( result = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { service.doGlobalAction(AccessibilityService.GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN) } else { - Error.SdkVersionTooLow(minSdk = Build.VERSION_CODES.N) + KMError.SdkVersionTooLow(minSdk = Build.VERSION_CODES.N) } } @@ -859,21 +858,21 @@ class PerformActionsUseCaseImpl @AssistedInject constructor( is ActionData.InteractUiElement -> { if (service.activeWindowPackage.first() != action.packageName) { - result = Error.UiElementNotFound + result = KMError.UiElementNotFound } else { result = service.performActionOnNode( findNode = { node -> matchAccessibilityNode(node, action) }, performAction = { AccessibilityNodeAction(action = action.nodeAction.accessibilityActionId) }, - ).otherwise { Error.UiElementNotFound } + ).otherwise { KMError.UiElementNotFound } } } } when (result) { is Success -> Timber.d("Performed action $action, input event type: $inputEventType, key meta state: $keyMetaState") - is Error -> Timber.d( + is KMError -> Timber.d( "Failed to perform action $action, reason: ${result.getFullMessage(resourceProvider)}, action: $action, input event type: $inputEventType, key meta state: $keyMetaState", ) } @@ -947,7 +946,7 @@ class PerformActionsUseCaseImpl @AssistedInject constructor( return device.id } - private fun closeStatusBarShade(): Result<*> { + private fun closeStatusBarShade(): KMResult<*> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { return service .doGlobalAction(AccessibilityService.GLOBAL_ACTION_DISMISS_NOTIFICATION_SHADE) @@ -956,7 +955,7 @@ class PerformActionsUseCaseImpl @AssistedInject constructor( } } - private fun Result<*>.showErrorMessageOnFail() { + private fun KMResult<*>.showErrorMessageOnFail() { onFailure { toastAdapter.show(it.getFullMessage(resourceProvider)) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt index fa3c45d07c..5459f60f53 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/TestActionUseCase.kt @@ -1,16 +1,15 @@ package io.github.sds100.keymapper.base.actions -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter -import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceEvent import javax.inject.Inject class TestActionUseCaseImpl @Inject constructor( private val serviceAdapter: AccessibilityServiceAdapter, ) : TestActionUseCase { - override suspend fun invoke(action: ActionData): Result<*> = serviceAdapter.send(TestActionEvent(action)) + override suspend fun invoke(action: ActionData): KMResult<*> = serviceAdapter.send(TestActionEvent(action)) } interface TestActionUseCase { - suspend operator fun invoke(action: ActionData): Result<*> + suspend operator fun invoke(action: ActionData): KMResult<*> } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt index 300c6dbf52..9c648b8286 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -15,8 +15,8 @@ import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.errorOrNull import io.github.sds100.keymapper.common.utils.handle @@ -113,8 +113,8 @@ class ConfigKeyEventActionViewModel @Inject constructor( fun onKeyCodeTextChanged(text: String) { val keyCodeState = when { - text.isBlank() -> Error.EmptyText - text.toIntOrNull() == null -> Error.InvalidNumber + text.isBlank() -> KMError.EmptyText + text.toIntOrNull() == null -> KMError.InvalidNumber else -> text.toInt().success() } @@ -237,7 +237,7 @@ class ConfigKeyEventActionViewModel @Inject constructor( } private data class KeyEventState( - val keyCode: Result = Error.EmptyText, + val keyCode: KMResult = KMError.EmptyText, val chosenDevice: InputDeviceInfo? = null, val useShell: Boolean = false, val metaState: Int = 0, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt index 52df79faf6..7f6566006d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileUseCase.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.actions.sound -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.files.FileAdapter import kotlinx.coroutines.flow.StateFlow @@ -13,13 +13,13 @@ class ChooseSoundFileUseCaseImpl @Inject constructor( ) : ChooseSoundFileUseCase { override val soundFiles = soundsManager.soundFiles - override suspend fun saveSound(uri: String): Result = soundsManager.saveNewSound(uri) + override suspend fun saveSound(uri: String): KMResult = soundsManager.saveNewSound(uri) - override fun getSoundFileName(uri: String): Result { + override fun getSoundFileName(uri: String): KMResult { val name = fileAdapter.getFileFromUri(uri).name return if (name == null) { - Error.NoFileName + KMError.NoFileName } else { Success(name) } @@ -31,7 +31,7 @@ interface ChooseSoundFileUseCase { /** * @return the sound file uid */ - suspend fun saveSound(uri: String): Result + suspend fun saveSound(uri: String): KMResult val soundFiles: StateFlow> - fun getSoundFileName(uri: String): Result + fun getSoundFileName(uri: String): KMResult } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt index ba01bab713..a9ead62745 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundsManager.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.actions.sound -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess @@ -34,7 +34,7 @@ class SoundsManagerImpl @Inject constructor( } } - override suspend fun saveNewSound(uri: String): Result { + override suspend fun saveNewSound(uri: String): KMResult { val uid = UUID.randomUUID().toString() val soundFile = fileAdapter.getFileFromUri(uri) @@ -47,13 +47,13 @@ class SoundsManagerImpl @Inject constructor( .then { Success(uid) } .onSuccess { updateSoundFilesFlow() } .onFailure { - if (it is Error.Exception) { + if (it is KMError.Exception) { Timber.d(it.exception) } } } - override suspend fun restoreSound(file: IFile): Result<*> { + override suspend fun restoreSound(file: IFile): KMResult<*> { val soundsDir = fileAdapter.getPrivateFile(SOUNDS_DIR_NAME) soundsDir.createDirectory() @@ -68,20 +68,20 @@ class SoundsManagerImpl @Inject constructor( } } - override fun getSound(uid: String): Result { + override fun getSound(uid: String): KMResult { val soundsDir = fileAdapter.getPrivateFile(SOUNDS_DIR_NAME) soundsDir.createDirectory() val matchingFile = soundsDir.listFiles()!!.find { it.name?.contains(uid) == true } if (matchingFile == null) { - return Error.CantFindSoundFile + return KMError.CantFindSoundFile } else { return Success(matchingFile) } } - override fun deleteSound(uid: String): Result<*> = getSound(uid) + override fun deleteSound(uid: String): KMResult<*> = getSound(uid) .then { Success(it.delete()) } .onSuccess { updateSoundFilesFlow() } @@ -118,8 +118,8 @@ interface SoundsManager { /** * @return the sound file uid */ - suspend fun saveNewSound(uri: String): Result - suspend fun restoreSound(file: IFile): Result<*> - fun getSound(uid: String): Result - fun deleteSound(uid: String): Result<*> + suspend fun saveNewSound(uri: String): KMResult + suspend fun restoreSound(file: IFile): KMResult<*> + fun getSound(uid: String): KMResult + fun deleteSound(uid: String): KMResult<*> } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt index 55a857b171..e97be98810 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementUseCase.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.base.actions.uielement import android.graphics.drawable.Drawable import io.github.sds100.keymapper.base.system.accessibility.RecordAccessibilityNodeEvent import io.github.sds100.keymapper.base.system.accessibility.RecordAccessibilityNodeState -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.mapData import io.github.sds100.keymapper.common.utils.onFailure @@ -61,11 +61,11 @@ class InteractUiElementController @Inject constructor( return nodeRepository.get(id) } - override fun getAppName(packageName: String): Result = packageManagerAdapter.getAppName(packageName) + override fun getAppName(packageName: String): KMResult = packageManagerAdapter.getAppName(packageName) - override fun getAppIcon(packageName: String): Result = packageManagerAdapter.getAppIcon(packageName) + override fun getAppIcon(packageName: String): KMResult = packageManagerAdapter.getAppIcon(packageName) - override suspend fun startRecording(): Result<*> { + override suspend fun startRecording(): KMResult<*> { nodeRepository.deleteAll() return serviceAdapter.send(RecordAccessibilityNodeEvent.StartRecordingNodes) } @@ -89,10 +89,10 @@ interface InteractUiElementUseCase { fun getInteractionsByPackage(packageName: String): Flow>> suspend fun getInteractionById(id: Long): AccessibilityNodeEntity? - fun getAppName(packageName: String): Result - fun getAppIcon(packageName: String): Result + fun getAppName(packageName: String): KMResult + fun getAppIcon(packageName: String): KMResult - suspend fun startRecording(): Result<*> + suspend fun startRecording(): KMResult<*> suspend fun stopRecording() fun startService(): Boolean diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt index 75c70b513e..b6d3f180a4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/InteractUiElementViewModel.kt @@ -15,7 +15,7 @@ import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemModel -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.NodeInteractionType import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success @@ -345,13 +345,13 @@ class InteractUiElementViewModel @Inject constructor( private suspend fun startRecording() { useCase.startRecording().onFailure { error -> - if (error == Error.AccessibilityServiceDisabled) { + if (error == KMError.AccessibilityServiceDisabled) { ViewModelHelper.handleAccessibilityServiceStoppedDialog( this, this, startService = { useCase.startService() }, ) - } else if (error == Error.AccessibilityServiceCrashed) { + } else if (error == KMError.AccessibilityServiceCrashed) { ViewModelHelper.handleAccessibilityServiceCrashedDialog( this, this, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt index c4cc23141f..84a81aa5ff 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupManager.kt @@ -19,8 +19,8 @@ import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider import io.github.sds100.keymapper.common.utils.DefaultUuidGenerator import io.github.sds100.keymapper.common.utils.DispatcherProvider -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.TreeNode @@ -107,7 +107,7 @@ class BackupManagerImpl @Inject constructor( private const val TEMP_RESTORE_ROOT_DIR = "restore_temp" } - override val onAutomaticBackupResult = MutableSharedFlow>() + override val onAutomaticBackupResult = MutableSharedFlow>() private val gson: Gson by lazy { GsonBuilder() @@ -150,7 +150,7 @@ class BackupManagerImpl @Inject constructor( } } - override suspend fun backupKeyMaps(output: IFile, keyMapIds: List): Result { + override suspend fun backupKeyMaps(output: IFile, keyMapIds: List): KMResult { return withContext(dispatchers.default()) { val allKeyMaps = keyMapRepository.keyMapList .filterIsInstance>>() @@ -164,7 +164,7 @@ class BackupManagerImpl @Inject constructor( } } - override suspend fun backupEverything(output: IFile): Result { + override suspend fun backupEverything(output: IFile): KMResult { return withContext(dispatchers.io()) { val keyMaps = keyMapRepository.keyMapList @@ -183,7 +183,7 @@ class BackupManagerImpl @Inject constructor( } } - override suspend fun getBackupContent(file: IFile): Result { + override suspend fun getBackupContent(file: IFile): KMResult { return extractFile(file).then { extractedDir -> val dataJsonFile = fileAdapter.getFile(extractedDir, DATA_JSON_FILE_NAME) @@ -191,20 +191,20 @@ class BackupManagerImpl @Inject constructor( val inputStream = dataJsonFile.inputStream() if (inputStream == null) { - return Error.UnknownIOError + return KMError.UnknownIOError } return parseBackupContent(inputStream) } } - private suspend fun parseBackupContent(jsonFile: InputStream): Result = withContext(dispatchers.io()) { + private suspend fun parseBackupContent(jsonFile: InputStream): KMResult = withContext(dispatchers.io()) { try { val rootElement = jsonFile.bufferedReader().use { val element = JsonParser().parse(it) if (element.isJsonNull) { - return@withContext Error.EmptyJson + return@withContext KMError.EmptyJson } element.asJsonObject @@ -214,11 +214,11 @@ class BackupManagerImpl @Inject constructor( val backupAppVersion = rootElement.get(BackupContent.NAME_APP_VERSION).nullInt if (backupAppVersion != null && backupAppVersion > buildConfigProvider.versionCode) { - return@withContext Error.BackupVersionTooNew + return@withContext KMError.BackupVersionTooNew } if (backupDbVersion > AppDatabase.DATABASE_VERSION) { - return@withContext Error.BackupVersionTooNew + return@withContext KMError.BackupVersionTooNew } val keyMapListJsonArray by rootElement.byNullableArray(BackupContent.NAME_KEYMAP_LIST) @@ -343,7 +343,7 @@ class BackupManagerImpl @Inject constructor( } if (backupVersionTooNew) { - return@withContext Error.BackupVersionTooNew + return@withContext KMError.BackupVersionTooNew } } @@ -387,19 +387,19 @@ class BackupManagerImpl @Inject constructor( return@withContext Success(content) } catch (e: MalformedJsonException) { - return@withContext Error.CorruptJsonFile(e.message ?: "") + return@withContext KMError.CorruptJsonFile(e.message ?: "") } catch (e: JsonSyntaxException) { - return@withContext Error.CorruptJsonFile(e.message ?: "") + return@withContext KMError.CorruptJsonFile(e.message ?: "") } catch (e: NoSuchElementException) { - return@withContext Error.CorruptJsonFile(e.message ?: "") + return@withContext KMError.CorruptJsonFile(e.message ?: "") } catch (e: Exception) { Timber.e(e) - return@withContext Error.Exception(e) + return@withContext KMError.Exception(e) } } - override suspend fun restore(file: IFile, restoreType: RestoreType): Result<*> { + override suspend fun restore(file: IFile, restoreType: RestoreType): KMResult<*> { return extractFile(file).then { extractedDir -> val dataJsonFile = fileAdapter.getFile(extractedDir, DATA_JSON_FILE_NAME) @@ -407,7 +407,7 @@ class BackupManagerImpl @Inject constructor( val inputStream = dataJsonFile.inputStream() if (inputStream == null) { - return@then Error.UnknownIOError + return@then KMError.UnknownIOError } val soundDir = fileAdapter.getFile(extractedDir, SOUNDS_DIR_NAME) @@ -427,7 +427,7 @@ class BackupManagerImpl @Inject constructor( /** * @return the directory with the extracted contents. */ - private suspend fun extractFile(file: IFile): Result { + private suspend fun extractFile(file: IFile): KMResult { val restoreUuid = uuidGenerator.random() val zipDestination = @@ -446,7 +446,7 @@ class BackupManagerImpl @Inject constructor( return Success(zipDestination) } catch (e: IOException) { - return Error.UnknownIOError + return KMError.UnknownIOError } } @@ -455,7 +455,7 @@ class BackupManagerImpl @Inject constructor( backupContent: BackupContent, soundFiles: List, currentTime: Long, - ): Result<*> { + ): KMResult<*> { try { // MUST come before restoring key maps so it is possible to // validate that each key map's group exists in the repository. @@ -552,15 +552,15 @@ class BackupManagerImpl @Inject constructor( return Success(Unit) } catch (e: MalformedJsonException) { - return Error.CorruptJsonFile(e.message ?: "") + return KMError.CorruptJsonFile(e.message ?: "") } catch (e: JsonSyntaxException) { - return Error.CorruptJsonFile(e.message ?: "") + return KMError.CorruptJsonFile(e.message ?: "") } catch (e: NoSuchElementException) { - return Error.CorruptJsonFile(e.message ?: "") + return KMError.CorruptJsonFile(e.message ?: "") } catch (e: Exception) { Timber.e(e) - return Error.Exception(e) + return KMError.Exception(e) } } @@ -683,7 +683,7 @@ class BackupManagerImpl @Inject constructor( keyMapList: List = emptyList(), extraGroups: List = emptyList(), extraLayouts: List = emptyList(), - ): Result { + ): KMResult { return withContext(dispatchers.io()) { val backupUid = uuidGenerator.random() @@ -733,7 +733,7 @@ class BackupManagerImpl @Inject constructor( } catch (e: Exception) { Timber.e(e) - return@withContext Error.Exception(e) + return@withContext KMError.Exception(e) } } } @@ -835,18 +835,18 @@ class BackupManagerImpl @Inject constructor( } interface BackupManager { - val onAutomaticBackupResult: Flow> + val onAutomaticBackupResult: Flow> - suspend fun getBackupContent(file: IFile): Result + suspend fun getBackupContent(file: IFile): KMResult /** * @return the URI to the back up */ - suspend fun backupKeyMaps(output: IFile, keyMapIds: List): Result + suspend fun backupKeyMaps(output: IFile, keyMapIds: List): KMResult /** * @return the URI to the back up file which can then be used for sharing. */ - suspend fun backupEverything(output: IFile): Result - suspend fun restore(file: IFile, restoreType: RestoreType): Result<*> + suspend fun backupEverything(output: IFile): KMResult + suspend fun restore(file: IFile, restoreType: RestoreType): KMResult<*> } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt index 5c388994fa..da5ff0cca0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/BackupRestoreMappingsUseCase.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.backup -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.then @@ -14,9 +14,9 @@ class BackupRestoreMappingsUseCaseImpl @Inject constructor( private val backupManager: BackupManager, ) : BackupRestoreMappingsUseCase { - override val onAutomaticBackupResult: Flow> = backupManager.onAutomaticBackupResult + override val onAutomaticBackupResult: Flow> = backupManager.onAutomaticBackupResult - override suspend fun backupEverything(): Result { + override suspend fun backupEverything(): KMResult { val fileName = BackupUtils.createBackupFileName() // Share in private files so the share sheet can show the file name. This is some quirk @@ -30,13 +30,13 @@ class BackupRestoreMappingsUseCaseImpl @Inject constructor( } } - override suspend fun restoreKeyMaps(uri: String, restoreType: RestoreType): Result<*> { + override suspend fun restoreKeyMaps(uri: String, restoreType: RestoreType): KMResult<*> { val file = fileAdapter.getFileFromUri(uri) return backupManager.restore(file, restoreType = restoreType) .onFailure { Timber.e(it.toString()) } } - override suspend fun getKeyMapCountInBackup(uri: String): Result { + override suspend fun getKeyMapCountInBackup(uri: String): KMResult { val file = fileAdapter.getFileFromUri(uri) return backupManager.getBackupContent(file) .then { Success(it.keyMapList?.size ?: 0) } @@ -45,9 +45,9 @@ class BackupRestoreMappingsUseCaseImpl @Inject constructor( } interface BackupRestoreMappingsUseCase { - val onAutomaticBackupResult: Flow> - suspend fun backupEverything(): Result - suspend fun restoreKeyMaps(uri: String, restoreType: RestoreType): Result<*> + val onAutomaticBackupResult: Flow> + suspend fun backupEverything(): KMResult + suspend fun restoreKeyMaps(uri: String, restoreType: RestoreType): KMResult<*> - suspend fun getKeyMapCountInBackup(uri: String): Result + suspend fun getKeyMapCountInBackup(uri: String): KMResult } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt index 6db9bf2fde..a2d941bbbd 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConfigConstraintsViewModel.kt @@ -14,7 +14,7 @@ import io.github.sds100.keymapper.base.utils.ui.DialogProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.common.utils.mapData @@ -160,7 +160,7 @@ class ConfigConstraintsViewModel( val constraintList = state.constraints.mapIndexed { index, constraint -> val title: String = uiHelper.getTitle(constraint) val icon: ComposeIconInfo = uiHelper.getIcon(constraint) - val error: Error? = errorSnapshot.getError(constraint) + val error: KMError? = errorSnapshot.getError(constraint) ConstraintListItemModel( id = constraint.uid, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt index 5b79b1aad5..6820372ab5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintErrorSnapshot.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.constraints import android.content.pm.PackageManager import android.os.Build -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.apps.PackageManagerAdapter @@ -35,7 +35,7 @@ class LazyConstraintErrorSnapshot( } } - override fun getError(constraint: Constraint): Error? { + override fun getError(constraint: Constraint): KMError? { when (constraint) { is Constraint.AppInForeground -> return getAppError(constraint.packageName) is Constraint.AppNotInForeground -> return getAppError(constraint.packageName) @@ -66,7 +66,7 @@ class LazyConstraintErrorSnapshot( is Constraint.BtDeviceDisconnected, -> { if (!systemFeatureAdapter.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) { - return Error.SystemFeatureNotSupported(PackageManager.FEATURE_BLUETOOTH) + return KMError.SystemFeatureNotSupported(PackageManager.FEATURE_BLUETOOTH) } if (!isPermissionGranted(Permission.FIND_NEARBY_DEVICES)) { @@ -84,26 +84,26 @@ class LazyConstraintErrorSnapshot( is Constraint.FlashlightOn -> { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - return Error.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) + return KMError.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) } if (!flashLenses.contains(constraint.lens)) { return when (constraint.lens) { - CameraLens.FRONT -> Error.FrontFlashNotFound - CameraLens.BACK -> Error.BackFlashNotFound + CameraLens.FRONT -> KMError.FrontFlashNotFound + CameraLens.BACK -> KMError.BackFlashNotFound } } } is Constraint.FlashlightOff -> { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - return Error.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) + return KMError.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) } if (!flashLenses.contains(constraint.lens)) { return when (constraint.lens) { - CameraLens.FRONT -> Error.FrontFlashNotFound - CameraLens.BACK -> Error.BackFlashNotFound + CameraLens.FRONT -> KMError.FrontFlashNotFound + CameraLens.BACK -> KMError.BackFlashNotFound } } } @@ -116,7 +116,7 @@ class LazyConstraintErrorSnapshot( is Constraint.ImeChosen -> { if (inputMethods.none { it.id == constraint.imeId }) { - return Error.InputMethodNotFound(constraint.imeLabel) + return KMError.InputMethodNotFound(constraint.imeLabel) } } @@ -132,15 +132,15 @@ class LazyConstraintErrorSnapshot( return null } - private fun getAppError(packageName: String): Error? { + private fun getAppError(packageName: String): KMError? { packageManager.isAppEnabled(packageName).onSuccess { isEnabled -> if (!isEnabled) { - return Error.AppDisabled(packageName) + return KMError.AppDisabled(packageName) } } if (!packageManager.isAppInstalled(packageName)) { - return Error.AppNotFound(packageName) + return KMError.AppNotFound(packageName) } return null @@ -158,5 +158,5 @@ class LazyConstraintErrorSnapshot( } interface ConstraintErrorSnapshot { - fun getError(constraint: Constraint): Error? + fun getError(constraint: Constraint): KMError? } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt index 668eccded1..9b8dcfb652 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/CreateConstraintUseCase.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.constraints import android.content.pm.PackageManager import android.os.Build -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.camera.CameraAdapter @@ -22,23 +22,23 @@ class CreateConstraintUseCaseImpl @Inject constructor( private val cameraAdapter: CameraAdapter, ) : CreateConstraintUseCase { - override fun isSupported(constraint: ConstraintId): Error? { + override fun isSupported(constraint: ConstraintId): KMError? { when (constraint) { ConstraintId.FLASHLIGHT_ON, ConstraintId.FLASHLIGHT_OFF -> { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - return Error.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) + return KMError.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) } if (cameraAdapter.getFlashInfo(CameraLens.BACK) == null && cameraAdapter.getFlashInfo(CameraLens.FRONT) == null ) { - return Error.SystemFeatureNotSupported(PackageManager.FEATURE_CAMERA_FLASH) + return KMError.SystemFeatureNotSupported(PackageManager.FEATURE_CAMERA_FLASH) } } ConstraintId.DEVICE_IS_LOCKED, ConstraintId.DEVICE_IS_UNLOCKED -> if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) { - return Error.SdkVersionTooLow(minSdk = Build.VERSION_CODES.LOLLIPOP_MR1) + return KMError.SdkVersionTooLow(minSdk = Build.VERSION_CODES.LOLLIPOP_MR1) } else -> Unit @@ -81,7 +81,7 @@ class CreateConstraintUseCaseImpl @Inject constructor( } interface CreateConstraintUseCase { - fun isSupported(constraint: ConstraintId): Error? + fun isSupported(constraint: ConstraintId): KMError? fun getKnownWiFiSSIDs(): List? fun getEnabledInputMethods(): List diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt index 823592c235..890ce8cbc3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/DisplayConstraintUseCase.kt @@ -1,13 +1,13 @@ package io.github.sds100.keymapper.base.constraints import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult interface DisplayConstraintUseCase : GetConstraintErrorUseCase { - fun getAppName(packageName: String): Result - fun getAppIcon(packageName: String): Result - fun getInputMethodLabel(imeId: String): Result + fun getAppName(packageName: String): KMResult + fun getAppIcon(packageName: String): KMResult + fun getInputMethodLabel(imeId: String): KMResult fun neverShowDndTriggerError() - suspend fun fixError(error: Error) + suspend fun fixError(error: KMError) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt index 642e6df248..cab19a605c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt @@ -39,7 +39,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.constraints.ConstraintMode import io.github.sds100.keymapper.base.utils.ui.drawable @@ -54,7 +54,7 @@ fun GroupConstraintRow( parentConstraintCount: Int, onNewConstraintClick: () -> Unit = {}, onRemoveConstraintClick: (String) -> Unit = {}, - onFixConstraintClick: (Error) -> Unit = {}, + onFixConstraintClick: (KMError) -> Unit = {}, enabled: Boolean = true, ) { BoxWithConstraints(modifier = modifier) { @@ -358,7 +358,7 @@ private fun PreviewMultipleItems() { ComposeChipModel.Error( id = "2", text = "Key Mapper not found", - error = Error.AppNotFound("io.github.sds100.keymapper"), + error = KMError.AppNotFound("io.github.sds100.keymapper"), ), ), mode = ConstraintMode.AND, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt index eb57a58cea..1b4175e7c8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/HomeKeyMapListScreen.kt @@ -75,7 +75,7 @@ import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperTapTarget import io.github.sds100.keymapper.base.utils.ui.compose.keyMapperShowcaseStyle import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe import io.github.sds100.keymapper.base.utils.ui.drawable -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.files.FileUtils @@ -387,7 +387,7 @@ private fun sampleList(): List { ComposeChipModel.Error( id = "1", text = "Input KEYCODE_0 • Repeat until released", - error = Error.NoCompatibleImeChosen, + error = KMError.NoCompatibleImeChosen, ), ComposeChipModel.Normal( id = "2", @@ -410,7 +410,7 @@ private fun sampleList(): List { ComposeChipModel.Error( id = "1", "Key Mapper is playing media", - error = Error.AppNotFound(""), + error = KMError.AppNotFound(""), ), ), options = listOf("Vibrate"), diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt index 6828ee910e..fdc5721935 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt @@ -91,7 +91,7 @@ import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.base.constraints.ConstraintMode @@ -134,7 +134,7 @@ fun KeyMapListAppBar( onNewConstraintClick: () -> Unit = {}, onRemoveConstraintClick: (String) -> Unit = {}, onConstraintModeChanged: (ConstraintMode) -> Unit = {}, - onFixConstraintClick: (Error) -> Unit = {}, + onFixConstraintClick: (KMError) -> Unit = {}, ) { BackHandler(onBack = onBackClick) @@ -426,7 +426,7 @@ private fun ChildGroupAppBar( onNewConstraintClick: () -> Unit = {}, onRemoveConstraintClick: (String) -> Unit = {}, onConstraintModeChanged: (ConstraintMode) -> Unit = {}, - onFixConstraintClick: (Error) -> Unit = {}, + onFixConstraintClick: (KMError) -> Unit = {}, actions: @Composable RowScope.() -> Unit = {}, ) { // Make custom top app bar because the height can not be set to fix the text field error in. @@ -922,7 +922,7 @@ private fun constraintsSampleList(): List { ComposeChipModel.Error( id = "2", text = "Key Mapper not found", - error = Error.AppNotFound("io.github.sds100.keymapper"), + error = KMError.AppNotFound("io.github.sds100.keymapper"), ), ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt index 83cc0a34b9..9622f48373 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapUseCase.kt @@ -1,7 +1,6 @@ package io.github.sds100.keymapper.base.keymaps import android.database.sqlite.SQLiteConstraintException -import dagger.hilt.android.scopes.ActivityScoped import io.github.sds100.keymapper.base.actions.Action import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.RepeatMode @@ -20,7 +19,7 @@ import io.github.sds100.keymapper.base.trigger.Trigger import io.github.sds100.keymapper.base.trigger.TriggerKey import io.github.sds100.keymapper.base.trigger.TriggerKeyDevice import io.github.sds100.keymapper.base.trigger.TriggerMode -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.common.utils.firstBlocking @@ -874,7 +873,7 @@ class ConfigKeyMapUseCaseController @Inject constructor( return floatingLayoutRepository.count() } - override suspend fun sendServiceEvent(event: AccessibilityServiceEvent): Result<*> { + override suspend fun sendServiceEvent(event: AccessibilityServiceEvent): KMResult<*> { return serviceAdapter.send(event) } @@ -991,7 +990,7 @@ interface ConfigKeyMapUseCase : GetDefaultKeyMapOptionsUseCase { fun removeConstraint(id: String) fun setAndMode() fun setOrMode() - suspend fun sendServiceEvent(event: AccessibilityServiceEvent): Result<*> + suspend fun sendServiceEvent(event: AccessibilityServiceEvent): KMResult<*> // trigger fun addKeyCodeTriggerKey( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt index 312ce38e5e..366566c45a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutScreen.kt @@ -49,7 +49,7 @@ import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.CustomDialog import io.github.sds100.keymapper.base.utils.ui.drawable -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.State @Composable @@ -268,7 +268,7 @@ private fun keyMapSampleList(): List { ComposeChipModel.Error( id = "1", text = "Input KEYCODE_0 • Repeat until released", - error = Error.NoCompatibleImeChosen, + error = KMError.NoCompatibleImeChosen, ), ComposeChipModel.Normal( id = "2", @@ -291,7 +291,7 @@ private fun keyMapSampleList(): List { ComposeChipModel.Error( id = "1", "Key Mapper is playing media", - error = Error.AppNotFound("io.github.sds100.keymapper"), + error = KMError.AppNotFound("io.github.sds100.keymapper"), ), ), options = listOf("Vibrate"), @@ -334,7 +334,7 @@ private fun constraintsSampleList(): List { ComposeChipModel.Error( id = "2", text = "Key Mapper not found", - error = Error.AppNotFound("io.github.sds100.keymapper"), + error = KMError.AppNotFound("io.github.sds100.keymapper"), ), ) } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt index 6b3e68bd6f..3950afe6df 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt @@ -5,10 +5,9 @@ import android.graphics.drawable.Drawable import androidx.core.os.bundleOf import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.system.apps.AppShortcutAdapter import javax.inject.Inject -import javax.inject.Singleton class CreateKeyMapShortcutUseCaseImpl @Inject constructor( private val appShortcutAdapter: AppShortcutAdapter, @@ -28,7 +27,7 @@ class CreateKeyMapShortcutUseCaseImpl @Inject constructor( keyMapUid: String, shortcutLabel: String, icon: Drawable?, - ): Result<*> { + ): KMResult<*> { val shortcut = if (icon == null) { appShortcutAdapter.createLauncherShortcut( iconResId = R.mipmap.ic_launcher_round, @@ -78,7 +77,7 @@ interface CreateKeyMapShortcutUseCase { keyMapUid: String, shortcutLabel: String, icon: Drawable?, - ): Result<*> + ): KMResult<*> fun createIntent( keyMapUid: String, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index 2da6a8feab..072f263d72 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -13,8 +13,8 @@ import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.base.trigger.TriggerError import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.dataOrNull @@ -73,10 +73,10 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( * This waits for the purchases to be processed with a timeout so the UI doesn't * say there are no purchases while it is loading. */ - private val purchasesFlow: Flow>>> = callbackFlow { + private val purchasesFlow: Flow>>> = callbackFlow { try { val value = withTimeout(5000L) { - purchasingManager.purchases.filterIsInstance>>>() + purchasingManager.purchases.filterIsInstance>>>() .first() } @@ -139,14 +139,14 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( ), ) - TriggerError.CANT_DETECT_IN_PHONE_CALL -> fixError(Error.CantDetectKeyEventsInPhoneCall) + TriggerError.CANT_DETECT_IN_PHONE_CALL -> fixError(KMError.CantDetectKeyEventsInPhoneCall) TriggerError.ASSISTANT_TRIGGER_NOT_PURCHASED -> fixError( PurchasingError.ProductNotPurchased( ProductId.ASSISTANT_TRIGGER, ), ) - TriggerError.DPAD_IME_NOT_SELECTED -> fixError(Error.DpadTriggerImeNotSelected) + TriggerError.DPAD_IME_NOT_SELECTED -> fixError(KMError.DpadTriggerImeNotSelected) TriggerError.FLOATING_BUTTON_DELETED -> {} TriggerError.FLOATING_BUTTONS_NOT_PURCHASED -> fixError( PurchasingError.ProductNotPurchased( @@ -158,27 +158,27 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( } } - override fun getAppName(packageName: String): Result = packageManagerAdapter.getAppName(packageName) + override fun getAppName(packageName: String): KMResult = packageManagerAdapter.getAppName(packageName) - override fun getAppIcon(packageName: String): Result = packageManagerAdapter.getAppIcon(packageName) + override fun getAppIcon(packageName: String): KMResult = packageManagerAdapter.getAppIcon(packageName) - override fun getInputMethodLabel(imeId: String): Result = + override fun getInputMethodLabel(imeId: String): KMResult = inputMethodAdapter.getInfoById(imeId).then { Success(it.label) } - override suspend fun fixError(error: Error) { + override suspend fun fixError(error: KMError) { when (error) { - is Error.AppDisabled -> packageManagerAdapter.enableApp(error.packageName) - is Error.AppNotFound -> packageManagerAdapter.downloadApp(error.packageName) - Error.NoCompatibleImeChosen -> + is KMError.AppDisabled -> packageManagerAdapter.enableApp(error.packageName) + is KMError.AppNotFound -> packageManagerAdapter.downloadApp(error.packageName) + KMError.NoCompatibleImeChosen -> keyMapperImeHelper.chooseCompatibleInputMethod().otherwise { inputMethodAdapter.showImePicker(fromForeground = true) } - Error.NoCompatibleImeEnabled -> keyMapperImeHelper.enableCompatibleInputMethods() + KMError.NoCompatibleImeEnabled -> keyMapperImeHelper.enableCompatibleInputMethods() is SystemError.ImeDisabled -> inputMethodAdapter.enableIme(error.ime.id) is SystemError.PermissionDenied -> permissionAdapter.request(error.permission) - is Error.ShizukuNotStarted -> packageManagerAdapter.openApp(ShizukuUtils.SHIZUKU_PACKAGE) - is Error.CantDetectKeyEventsInPhoneCall -> { + is KMError.ShizukuNotStarted -> packageManagerAdapter.openApp(ShizukuUtils.SHIZUKU_PACKAGE) + is KMError.CantDetectKeyEventsInPhoneCall -> { if (!keyMapperImeHelper.isCompatibleImeEnabled()) { keyMapperImeHelper.enableCompatibleInputMethods() } @@ -203,7 +203,7 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( settingsRepository.set(Keys.neverShowDndAccessError, true) } - override fun getRingtoneLabel(uri: String): Result { + override fun getRingtoneLabel(uri: String): KMResult { return ringtoneAdapter.getLabel(uri) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt index 29e32530ae..bfed5a0afb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListItemCreator.kt @@ -25,7 +25,7 @@ import io.github.sds100.keymapper.base.utils.isFixable import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.system.devices.InputDeviceUtils class KeyMapListItemCreator( @@ -148,7 +148,7 @@ class KeyMapListItemCreator( } val icon: ComposeIconInfo = actionUiHelper.getIcon(action.data) - val error: Error? = errorSnapshot.getError(action.data) + val error: KMError? = errorSnapshot.getError(action.data) val chip = if (error == null) { ComposeChipModel.Normal(id = action.uid, text = chipText, icon = icon) @@ -167,7 +167,7 @@ class KeyMapListItemCreator( for (constraint in constraintState.constraints) { val text: String = constraintUiHelper.getTitle(constraint) val icon: ComposeIconInfo = constraintUiHelper.getIcon(constraint) - val error: Error? = errorSnapshot.getError(constraint) + val error: KMError? = errorSnapshot.getError(constraint) val chip: ComposeChipModel = if (error == null) { ComposeChipModel.Normal( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt index 6fc9754cf9..c18452592d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListScreen.kt @@ -63,7 +63,7 @@ import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.ErrorCompactChip import io.github.sds100.keymapper.base.utils.ui.drawable -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.State @Composable @@ -76,7 +76,7 @@ fun KeyMapList( onClickKeyMap: (String) -> Unit = {}, onLongClickKeyMap: (String) -> Unit = {}, onSelectedChange: (String, Boolean) -> Unit = { _, _ -> }, - onFixClick: (Error) -> Unit = {}, + onFixClick: (KMError) -> Unit = {}, onTriggerErrorClick: (TriggerError) -> Unit = {}, bottomListPadding: Dp = 100.dp, ) { @@ -154,7 +154,7 @@ private fun LoadedKeyMapList( onClickKeyMap: (String) -> Unit, onLongClickKeyMap: (String) -> Unit, onSelectedChange: (String, Boolean) -> Unit, - onFixClick: (Error) -> Unit, + onFixClick: (KMError) -> Unit, onTriggerErrorClick: (TriggerError) -> Unit, bottomListPadding: Dp, ) { @@ -210,7 +210,7 @@ private fun KeyMapListItem( onClickKeyMap: () -> Unit, onLongClickKeyMap: () -> Unit, onSelectedChange: (Boolean) -> Unit, - onFixClick: (Error) -> Unit, + onFixClick: (KMError) -> Unit, onTriggerErrorClick: (TriggerError) -> Unit, ) { OutlinedCard( @@ -443,7 +443,7 @@ private fun OptionsDescription( @Composable private fun ActionConstraintChip( model: ComposeChipModel, - onFixClick: (Error) -> Unit, + onFixClick: (KMError) -> Unit, ) { when (model) { is ComposeChipModel.Normal -> { @@ -513,7 +513,7 @@ private fun sampleList(): List { ComposeChipModel.Error( id = "1", text = "Input KEYCODE_0 • Repeat until released", - error = Error.NoCompatibleImeChosen, + error = KMError.NoCompatibleImeChosen, ), ComposeChipModel.Normal( id = "2", @@ -536,7 +536,7 @@ private fun sampleList(): List { ComposeChipModel.Error( id = "1", "Key Mapper is playing media", - error = Error.AppNotFound(""), + error = KMError.AppNotFound(""), ), ), options = listOf("Vibrate"), diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index eefde26941..9e9dfff95f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -40,8 +40,8 @@ import io.github.sds100.keymapper.base.utils.ui.SelectionState import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.showDialog -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.dataOrNull @@ -546,7 +546,7 @@ class KeyMapListViewModel( } } - fun onFixClick(error: Error) { + fun onFixClick(error: KMError) { coroutineScope.launch { when (error) { SystemError.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) -> { @@ -899,11 +899,11 @@ class KeyMapListViewModel( showInputMethodPickerUseCase.show(fromForeground = true) } - private suspend fun onAutomaticBackupResult(result: Result<*>) { + private suspend fun onAutomaticBackupResult(result: KMResult<*>) { when (result) { is Success -> {} - is Error -> { + is KMError -> { val response = showDialog( "automatic_backup_error", DialogModel.Alert( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt index f19d47d003..d1dc791061 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ListKeyMapsUseCase.kt @@ -13,7 +13,7 @@ import io.github.sds100.keymapper.base.groups.Group import io.github.sds100.keymapper.base.groups.GroupEntityMapper import io.github.sds100.keymapper.base.groups.GroupFamily import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.dataOrNull @@ -342,7 +342,7 @@ class ListKeyMapsUseCaseImpl @Inject constructor( keyMapRepository.duplicate(*uid) } - override suspend fun backupKeyMaps(vararg uid: String): Result { + override suspend fun backupKeyMaps(vararg uid: String): KMResult { val fileName = BackupUtils.createBackupFileName() // Share in private files so the share sheet can show the file name. This is some quirk @@ -380,5 +380,5 @@ interface ListKeyMapsUseCase : DisplayKeyMapUseCase { fun enableKeyMap(vararg uid: String) fun disableKeyMap(vararg uid: String) fun duplicateKeyMap(vararg uid: String) - suspend fun backupKeyMaps(vararg uid: String): Result + suspend fun backupKeyMaps(vararg uid: String): KMResult } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt index 9406f584c8..bf8b61c731 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt @@ -4,10 +4,6 @@ import android.view.KeyEvent import androidx.collection.SparseArrayCompat import androidx.collection.keyIterator import androidx.collection.valueIterator -import dagger.assisted.Assisted -import dagger.assisted.AssistedFactory -import dagger.assisted.AssistedInject -import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.actions.Action import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.PerformActionsUseCase @@ -27,9 +23,9 @@ import io.github.sds100.keymapper.base.trigger.Trigger import io.github.sds100.keymapper.base.trigger.TriggerKey import io.github.sds100.keymapper.base.trigger.TriggerKeyDevice import io.github.sds100.keymapper.base.trigger.TriggerMode -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.InputEventType -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.minusFlag import io.github.sds100.keymapper.common.utils.withFlag import io.github.sds100.keymapper.data.PreferenceDefaults @@ -783,7 +779,7 @@ class KeyMapController ( /* cache whether an action can be performed to avoid repeatedly checking when multiple triggers have the same action */ - val canActionBePerformed = SparseArrayCompat>() + val canActionBePerformed = SparseArrayCompat>() /* loop through triggers in a different loop first to increment the last matched index. @@ -814,7 +810,7 @@ class KeyMapController ( canActionBePerformed.put(actionKey, result) continue@triggerLoop } - } else if (canActionBePerformed[actionKey] is Error) { + } else if (canActionBePerformed[actionKey] is KMError) { continue@triggerLoop } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt index 0cba645234..98de65111a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.shizuku.ShizukuUtils import io.github.sds100.keymapper.base.utils.VersionHelper import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.handle import io.github.sds100.keymapper.data.Keys @@ -156,7 +156,7 @@ class OnboardingUseCaseImpl @Inject constructor( if (tapTarget == OnboardingTapTarget.ADVANCED_TRIGGERS) { return combine( settingsRepository.get(shownKey).map { it ?: false }, - purchasingManager.purchases.filterIsInstance>>>(), + purchasingManager.purchases.filterIsInstance>>>(), keyMapRepository.keyMapList.filterIsInstance>>(), ) { isShown, purchases, keyMapList -> // Only show the tap target for advanced triggers if it has not already been shown diff --git a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt index fb0e5df86a..f1cee2affe 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingError.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.purchasing -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError -sealed class PurchasingError : Error() { +sealed class PurchasingError : KMError() { data object PurchasingNotImplemented : PurchasingError() data class ProductNotPurchased(val product: ProductId) : PurchasingError() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt index b9f6239df8..c81183faf1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt @@ -1,15 +1,15 @@ package io.github.sds100.keymapper.base.purchasing import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow interface PurchasingManager { val onCompleteProductPurchase: MutableSharedFlow - val purchases: Flow>>> - suspend fun launchPurchasingFlow(product: ProductId): Result - suspend fun getProductPrice(product: ProductId): Result - suspend fun isPurchased(product: ProductId): Result + val purchases: Flow>>> + suspend fun launchPurchasingFlow(product: ProductId): KMResult + suspend fun getProductPrice(product: ProductId): KMResult + suspend fun isPurchased(product: ProductId): KMResult fun refresh() } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt index 5641136c76..9a8158ab5c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt @@ -4,7 +4,7 @@ import androidx.datastore.preferences.core.Preferences import io.github.sds100.keymapper.base.actions.sound.SoundFileInfo import io.github.sds100.keymapper.base.actions.sound.SoundsManager import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.PreferenceDefaults @@ -90,9 +90,9 @@ class ConfigSettingsUseCaseImpl @Inject constructor( imeHelper.enableCompatibleInputMethods() } - override suspend fun chooseCompatibleIme(): Result = imeHelper.chooseCompatibleInputMethod() + override suspend fun chooseCompatibleIme(): KMResult = imeHelper.chooseCompatibleInputMethod() - override suspend fun showImePicker(): Result<*> = inputMethodAdapter.showImePicker(fromForeground = true) + override suspend fun showImePicker(): KMResult<*> = inputMethodAdapter.showImePicker(fromForeground = true) override fun getPreference(key: Preferences.Key) = preferences.get(key) @@ -196,8 +196,8 @@ interface ConfigSettingsUseCase { val isCompatibleImeChosen: Flow val isCompatibleImeEnabled: Flow suspend fun enableCompatibleIme() - suspend fun chooseCompatibleIme(): Result - suspend fun showImePicker(): Result<*> + suspend fun chooseCompatibleIme(): KMResult + suspend fun showImePicker(): KMResult<*> val defaultLongPressDelay: Flow val defaultDoublePressDelay: Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt index df6bc1dfa5..64917615f7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.sorting.comparators import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.DisplayActionUseCase -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.base.keymaps.KeyMap @@ -63,7 +63,7 @@ class KeyMapActionsComparator( result } - private fun getSecondarySortField(action: ActionData): Result { + private fun getSecondarySortField(action: ActionData): KMResult { return when (action) { is ActionData.App -> displayActions.getAppName(action.packageName) is ActionData.AppShortcut -> Success(action.shortcutTitle) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt index 90775285bd..b3e2136389 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.sorting.comparators -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.common.utils.valueOrNull @@ -85,7 +85,7 @@ class KeyMapConstraintsComparator( return constraint.id.ordinal.compareTo(otherConstraint.id.ordinal) } - private fun getSecondarySortField(constraint: Constraint): Result { + private fun getSecondarySortField(constraint: Constraint): KMResult { return when (constraint) { is Constraint.AppInForeground -> displayConstraints.getAppName(constraint.packageName) is Constraint.AppNotInForeground -> displayConstraints.getAppName(constraint.packageName) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapterImpl.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapterImpl.kt index c8f6afbac8..01cb749de0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapterImpl.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityServiceAdapterImpl.kt @@ -12,8 +12,8 @@ import android.provider.Settings import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.KeyMapperClassProvider -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess @@ -88,17 +88,17 @@ class AccessibilityServiceAdapterImpl @Inject constructor( } } - override suspend fun send(event: AccessibilityServiceEvent): Result<*> { + override suspend fun send(event: AccessibilityServiceEvent): KMResult<*> { state.value = getState() if (state.value == AccessibilityServiceState.DISABLED) { Timber.e("Failed to send event to accessibility service because disabled: $event") - return Error.AccessibilityServiceDisabled + return KMError.AccessibilityServiceDisabled } if (state.value == AccessibilityServiceState.CRASHED) { Timber.e("Failed to send event to accessibility service because crashed: $event") - return Error.AccessibilityServiceCrashed + return KMError.AccessibilityServiceCrashed } coroutineScope.launch { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt index b4e90d3d04..64eca889cc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt @@ -26,11 +26,11 @@ import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjectorImpl import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.common.utils.MathUtils import io.github.sds100.keymapper.common.utils.PinchScreenType -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent @@ -348,17 +348,17 @@ abstract class BaseAccessibilityService : } } - override fun doGlobalAction(action: Int): Result<*> { + override fun doGlobalAction(action: Int): KMResult<*> { val success = performGlobalAction(action) if (success) { return Success(Unit) } else { - return Error.FailedToPerformAccessibilityGlobalAction(action) + return KMError.FailedToPerformAccessibilityGlobalAction(action) } } - override fun tapScreen(x: Int, y: Int, inputEventType: InputEventType): Result<*> { + override fun tapScreen(x: Int, y: Int, inputEventType: InputEventType): KMResult<*> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { val duration = 1L // ms @@ -397,12 +397,12 @@ abstract class BaseAccessibilityService : return if (success) { Success(Unit) } else { - Error.FailedToDispatchGesture + KMError.FailedToDispatchGesture } } } - return Error.SdkVersionTooLow(Build.VERSION_CODES.N) + return KMError.SdkVersionTooLow(Build.VERSION_CODES.N) } override fun swipeScreen( @@ -413,16 +413,16 @@ abstract class BaseAccessibilityService : fingerCount: Int, duration: Int, inputEventType: InputEventType, - ): Result<*> { + ): KMResult<*> { // virtual distance between fingers on multitouch gestures val fingerGestureDistance = 10L if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (fingerCount >= GestureDescription.getMaxStrokeCount()) { - return Error.GestureStrokeCountTooHigh + return KMError.GestureStrokeCountTooHigh } if (duration >= GestureDescription.getMaxGestureDuration()) { - return Error.GestureDurationTooHigh + return KMError.GestureDurationTooHigh } val pStart = Point(xStart, yStart) @@ -500,11 +500,11 @@ abstract class BaseAccessibilityService : return if (success) { Success(Unit) } else { - Error.FailedToDispatchGesture + KMError.FailedToDispatchGesture } } - return Error.SdkVersionTooLow(Build.VERSION_CODES.N) + return KMError.SdkVersionTooLow(Build.VERSION_CODES.N) } override fun pinchScreen( @@ -515,13 +515,13 @@ abstract class BaseAccessibilityService : fingerCount: Int, duration: Int, inputEventType: InputEventType, - ): Result<*> { + ): KMResult<*> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (fingerCount >= GestureDescription.getMaxStrokeCount()) { - return Error.GestureStrokeCountTooHigh + return KMError.GestureStrokeCountTooHigh } if (duration >= GestureDescription.getMaxGestureDuration()) { - return Error.GestureDurationTooHigh + return KMError.GestureDurationTooHigh } val gestureBuilder = GestureDescription.Builder() @@ -552,23 +552,23 @@ abstract class BaseAccessibilityService : return if (success) { Success(Unit) } else { - Error.FailedToDispatchGesture + KMError.FailedToDispatchGesture } } - return Error.SdkVersionTooLow(Build.VERSION_CODES.N) + return KMError.SdkVersionTooLow(Build.VERSION_CODES.N) } override fun performActionOnNode( findNode: (node: AccessibilityNodeModel) -> Boolean, performAction: (node: AccessibilityNodeModel) -> AccessibilityNodeAction?, - ): Result<*> { + ): KMResult<*> { val node = rootInActiveWindow.findNodeRecursively { findNode(it.toModel()) } if (node == null) { - return Error.FailedToFindAccessibilityNode + return KMError.FailedToFindAccessibilityNode } val (action, extras) = performAction(node.toModel()) ?: return Success(Unit) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt index 1028157fd3..facafe833a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt @@ -4,13 +4,13 @@ import android.os.Build import androidx.annotation.RequiresApi import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.common.utils.PinchScreenType -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import kotlinx.coroutines.flow.Flow interface IAccessibilityService { - fun doGlobalAction(action: Int): Result<*> + fun doGlobalAction(action: Int): KMResult<*> - fun tapScreen(x: Int, y: Int, inputEventType: InputEventType): Result<*> + fun tapScreen(x: Int, y: Int, inputEventType: InputEventType): KMResult<*> fun swipeScreen( xStart: Int, @@ -20,7 +20,7 @@ interface IAccessibilityService { fingerCount: Int, duration: Int, inputEventType: InputEventType, - ): Result<*> + ): KMResult<*> fun pinchScreen( x: Int, @@ -30,7 +30,7 @@ interface IAccessibilityService { fingerCount: Int, duration: Int, inputEventType: InputEventType, - ): Result<*> + ): KMResult<*> val isFingerprintGestureDetectionAvailable: Boolean @@ -42,7 +42,7 @@ interface IAccessibilityService { fun performActionOnNode( findNode: (node: AccessibilityNodeModel) -> Boolean, performAction: (node: AccessibilityNodeModel) -> AccessibilityNodeAction?, - ): Result<*> + ): KMResult<*> val rootNode: AccessibilityNodeModel? val activeWindowPackage: Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt index 2fa25cd9d2..ed74512319 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppShortcutsUseCase.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.system.apps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.apps.AppShortcutAdapter import io.github.sds100.keymapper.system.apps.AppShortcutInfo @@ -14,16 +14,16 @@ class DisplayAppShortcutsUseCaseImpl @Inject constructor( override val shortcuts: Flow>> = appShortcutAdapter.installedAppShortcuts - override fun getShortcutName(appShortcutInfo: AppShortcutInfo): Result = + override fun getShortcutName(appShortcutInfo: AppShortcutInfo): KMResult = appShortcutAdapter.getShortcutName(appShortcutInfo) - override fun getShortcutIcon(appShortcutInfo: AppShortcutInfo): Result = + override fun getShortcutIcon(appShortcutInfo: AppShortcutInfo): KMResult = appShortcutAdapter.getShortcutIcon(appShortcutInfo) } interface DisplayAppShortcutsUseCase { val shortcuts: Flow>> - fun getShortcutName(appShortcutInfo: AppShortcutInfo): Result - fun getShortcutIcon(appShortcutInfo: AppShortcutInfo): Result + fun getShortcutName(appShortcutInfo: AppShortcutInfo): KMResult + fun getShortcutIcon(appShortcutInfo: AppShortcutInfo): KMResult } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt index 629a16c519..a0d651f115 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/DisplayAppsUseCase.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.system.apps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.apps.PackageInfo import io.github.sds100.keymapper.system.apps.PackageManagerAdapter @@ -13,20 +13,20 @@ class DisplayAppsUseCaseImpl @Inject constructor( ) : DisplayAppsUseCase { override val installedPackages: Flow>> = adapter.installedPackages - override fun getAppName(packageName: String): Result = adapter.getAppName(packageName) + override fun getAppName(packageName: String): KMResult = adapter.getAppName(packageName) - override fun getAppIcon(packageName: String): Result = adapter.getAppIcon(packageName) + override fun getAppIcon(packageName: String): KMResult = adapter.getAppIcon(packageName) - override fun getActivityLabel(packageName: String, activityClass: String): Result = adapter.getActivityLabel(packageName, activityClass) + override fun getActivityLabel(packageName: String, activityClass: String): KMResult = adapter.getActivityLabel(packageName, activityClass) - override fun getActivityIcon(packageName: String, activityClass: String): Result = adapter.getActivityIcon(packageName, activityClass) + override fun getActivityIcon(packageName: String, activityClass: String): KMResult = adapter.getActivityIcon(packageName, activityClass) } interface DisplayAppsUseCase { val installedPackages: Flow>> - fun getActivityLabel(packageName: String, activityClass: String): Result - fun getActivityIcon(packageName: String, activityClass: String): Result - fun getAppName(packageName: String): Result - fun getAppIcon(packageName: String): Result + fun getActivityLabel(packageName: String, activityClass: String): KMResult + fun getActivityIcon(packageName: String, activityClass: String): KMResult + fun getAppName(packageName: String): KMResult + fun getAppIcon(packageName: String): KMResult } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/KeyMapperImeHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/KeyMapperImeHelper.kt index d5724f37b4..16ae6f195c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/KeyMapperImeHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/KeyMapperImeHelper.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.system.inputmethod -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.common.utils.onSuccess @@ -11,7 +11,6 @@ import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map -import javax.inject.Inject class KeyMapperImeHelper( private val imeAdapter: InputMethodAdapter, @@ -49,15 +48,15 @@ class KeyMapperImeHelper( } } - suspend fun chooseCompatibleInputMethod(): Result = getLastUsedCompatibleImeId().suspendThen { + suspend fun chooseCompatibleInputMethod(): KMResult = getLastUsedCompatibleImeId().suspendThen { imeAdapter.chooseImeWithoutUserInput(it) } - suspend fun chooseLastUsedIncompatibleInputMethod(): Result = getLastUsedIncompatibleImeId().then { + suspend fun chooseLastUsedIncompatibleInputMethod(): KMResult = getLastUsedIncompatibleImeId().then { imeAdapter.chooseImeWithoutUserInput(it) } - suspend fun toggleCompatibleInputMethod(): Result = if (isCompatibleImeChosen()) { + suspend fun toggleCompatibleInputMethod(): KMResult = if (isCompatibleImeChosen()) { chooseLastUsedIncompatibleInputMethod() } else { chooseCompatibleInputMethod() @@ -73,7 +72,7 @@ class KeyMapperImeHelper( .filter { it.isEnabled } .any { it.packageName in keyMapperImePackageList } - private fun getLastUsedCompatibleImeId(): Result { + private fun getLastUsedCompatibleImeId(): KMResult { for (ime in imeAdapter.inputMethodHistory.firstBlocking()) { if (ime.packageName in keyMapperImePackageList && ime.isEnabled) { return Success(ime.id) @@ -90,18 +89,18 @@ class KeyMapperImeHelper( if (ime.isEnabled) { Success(ime.id) } else { - Error.NoCompatibleImeEnabled + KMError.NoCompatibleImeEnabled } } } - private fun getLastUsedIncompatibleImeId(): Result { + private fun getLastUsedIncompatibleImeId(): KMResult { for (ime in imeAdapter.inputMethodHistory.firstBlocking()) { if (ime.packageName !in keyMapperImePackageList) { return Success(ime.id) } } - return Error.NoIncompatibleKeyboardsInstalled + return KMError.NoIncompatibleKeyboardsInstalled } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ToggleCompatibleImeUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ToggleCompatibleImeUseCase.kt index 615e276c24..f73ed91346 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ToggleCompatibleImeUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/inputmethod/ToggleCompatibleImeUseCase.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.system.inputmethod import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import kotlinx.coroutines.flow.Flow @@ -19,11 +19,11 @@ class ToggleCompatibleImeUseCaseImpl @Inject constructor( override val sufficientPermissions: Flow = inputMethodAdapter.isUserInputRequiredToChangeIme - override suspend fun toggle(): Result = keyMapperImeHelper.toggleCompatibleInputMethod() + override suspend fun toggle(): KMResult = keyMapperImeHelper.toggleCompatibleInputMethod() } interface ToggleCompatibleImeUseCase { val sufficientPermissions: Flow - suspend fun toggle(): Result + suspend fun toggle(): KMResult } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/navigation/OpenMenuHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/navigation/OpenMenuHelper.kt index 5ce3d1988a..78120f505d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/navigation/OpenMenuHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/navigation/OpenMenuHelper.kt @@ -5,7 +5,7 @@ import androidx.core.view.accessibility.AccessibilityNodeInfoCompat import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeAction import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.common.utils.InputEventType -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.system.inputevents.InputEventInjector @@ -28,7 +28,7 @@ class OpenMenuHelper( private const val OVERFLOW_MENU_CONTENT_DESCRIPTION = "More options" } - fun openMenu(): Result<*> { + fun openMenu(): KMResult<*> { when { permissionAdapter.isGranted(Permission.SHIZUKU) -> { val inputKeyModel = InputKeyModel( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index 659c53342f..49bd1f74c4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -33,8 +33,8 @@ import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.showDialog -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.common.utils.ifIsData @@ -616,8 +616,8 @@ abstract class BaseConfigTriggerViewModel( } } - suspend fun handleServiceEventResult(result: Result<*>) { - if (result is Error.AccessibilityServiceDisabled) { + suspend fun handleServiceEventResult(result: KMResult<*>) { + if (result is KMError.AccessibilityServiceDisabled) { ViewModelHelper.handleAccessibilityServiceStoppedDialog( resourceProvider = this@BaseConfigTriggerViewModel, dialogProvider = this@BaseConfigTriggerViewModel, @@ -625,7 +625,7 @@ abstract class BaseConfigTriggerViewModel( ) } - if (result is Error.AccessibilityServiceCrashed) { + if (result is KMError.AccessibilityServiceCrashed) { ViewModelHelper.handleAccessibilityServiceCrashedDialog( resourceProvider = this@BaseConfigTriggerViewModel, dialogProvider = this@BaseConfigTriggerViewModel, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt index 74122c5497..0564e382c5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerUseCase.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.trigger import android.view.KeyEvent import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.InputEventUtils @@ -61,13 +61,13 @@ class RecordTriggerController @Inject constructor( .launchIn(coroutineScope) } - override suspend fun startRecording(): Result<*> { + override suspend fun startRecording(): KMResult<*> { recordedKeys.clear() dpadMotionEventTracker.reset() return serviceAdapter.send(RecordTriggerEvent.StartRecordingTrigger) } - override suspend fun stopRecording(): Result<*> { + override suspend fun stopRecording(): KMResult<*> { return serviceAdapter.send(RecordTriggerEvent.StopRecordingTrigger) } @@ -127,6 +127,6 @@ interface RecordTriggerUseCase { /** * @return Success if started and an Error if failed to start. */ - suspend fun startRecording(): Result<*> - suspend fun stopRecording(): Result<*> + suspend fun startRecording(): KMResult<*> + suspend fun stopRecording(): KMResult<*> } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt index 977558a7b6..32c82937c8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.trigger import android.os.Build import android.view.KeyEvent -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.base.keymaps.KeyMap @@ -19,7 +19,7 @@ data class TriggerErrorSnapshot( val isKeyMapperImeChosen: Boolean, val isDndAccessGranted: Boolean, val isRootGranted: Boolean, - val purchases: Result>, + val purchases: KMResult>, val showDpadImeSetupError: Boolean, ) { companion object { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt index 04e77abfbc..2dedb5f341 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ErrorUtils.kt @@ -4,12 +4,12 @@ import android.content.pm.PackageManager import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.utils.BuildUtils -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.data.DataError import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -fun Error.getFullMessage(resourceProvider: ResourceProvider): String { +fun KMError.getFullMessage(resourceProvider: ResourceProvider): String { return when (this) { is SystemError.PermissionDenied -> { val resId = when (permission) { @@ -33,19 +33,19 @@ fun Error.getFullMessage(resourceProvider: ResourceProvider): String { resourceProvider.getString(resId) } - is Error.AppNotFound -> resourceProvider.getString( + is KMError.AppNotFound -> resourceProvider.getString( R.string.error_app_isnt_installed, packageName, ) - is Error.AppDisabled -> resourceProvider.getString( + is KMError.AppDisabled -> resourceProvider.getString( R.string.error_app_is_disabled_package_name, this.packageName, ) - is Error.NoCompatibleImeEnabled -> resourceProvider.getString(R.string.error_key_mapper_ime_service_disabled) - is Error.NoCompatibleImeChosen -> resourceProvider.getString(R.string.error_ime_must_be_chosen) - is Error.SystemFeatureNotSupported -> when (this.feature) { + is KMError.NoCompatibleImeEnabled -> resourceProvider.getString(R.string.error_key_mapper_ime_service_disabled) + is KMError.NoCompatibleImeChosen -> resourceProvider.getString(R.string.error_ime_must_be_chosen) + is KMError.SystemFeatureNotSupported -> when (this.feature) { PackageManager.FEATURE_NFC -> resourceProvider.getString(R.string.error_system_feature_nfc_unsupported) PackageManager.FEATURE_CAMERA -> resourceProvider.getString(R.string.error_system_feature_camera_unsupported) PackageManager.FEATURE_FINGERPRINT -> resourceProvider.getString(R.string.error_system_feature_fingerprint_unsupported) @@ -62,58 +62,58 @@ fun Error.getFullMessage(resourceProvider: ResourceProvider): String { extraId, ) - is Error.SdkVersionTooLow -> resourceProvider.getString( + is KMError.SdkVersionTooLow -> resourceProvider.getString( R.string.error_sdk_version_too_low, BuildUtils.getSdkVersionName(minSdk), ) - is Error.SdkVersionTooHigh -> resourceProvider.getString( + is KMError.SdkVersionTooHigh -> resourceProvider.getString( R.string.error_sdk_version_too_high, BuildUtils.getSdkVersionName(maxSdk), ) - is Error.InputMethodNotFound -> resourceProvider.getString( + is KMError.InputMethodNotFound -> resourceProvider.getString( R.string.error_ime_not_found, imeLabel, ) - is Error.FrontFlashNotFound -> resourceProvider.getString(R.string.error_front_flash_not_found) - is Error.BackFlashNotFound -> resourceProvider.getString(R.string.error_back_flash_not_found) - is Error.DeviceNotFound -> resourceProvider.getString(R.string.error_device_not_found) - is Error.Exception -> exception.toString() - is Error.EmptyJson -> resourceProvider.getString(R.string.error_empty_json) - is Error.InvalidNumber -> resourceProvider.getString(R.string.error_invalid_number) - is Error.NumberTooSmall -> resourceProvider.getString(R.string.error_number_too_small, min) - is Error.NumberTooBig -> resourceProvider.getString(R.string.error_number_too_big, max) - is Error.EmptyText -> resourceProvider.getString(R.string.error_cant_be_empty) - Error.BackupVersionTooNew -> resourceProvider.getString(R.string.error_backup_version_too_new) - Error.NoIncompatibleKeyboardsInstalled -> resourceProvider.getString(R.string.error_no_incompatible_input_methods_installed) - Error.NoMediaSessions -> resourceProvider.getString(R.string.error_no_media_sessions) - Error.NoVoiceAssistant -> resourceProvider.getString(R.string.error_voice_assistant_not_found) - Error.AccessibilityServiceDisabled -> resourceProvider.getString(R.string.error_accessibility_service_disabled) - Error.LauncherShortcutsNotSupported -> resourceProvider.getString(R.string.error_launcher_shortcuts_not_supported) - Error.AccessibilityServiceCrashed -> resourceProvider.getString(R.string.error_accessibility_service_crashed) - Error.CantFindImeSettings -> resourceProvider.getString(R.string.error_cant_find_ime_settings) - Error.CantShowImePickerInBackground -> resourceProvider.getString(R.string.error_cant_show_ime_picker_in_background) - Error.FailedToFindAccessibilityNode -> resourceProvider.getString(R.string.error_failed_to_find_accessibility_node) - is Error.FailedToPerformAccessibilityGlobalAction -> resourceProvider.getString( + is KMError.FrontFlashNotFound -> resourceProvider.getString(R.string.error_front_flash_not_found) + is KMError.BackFlashNotFound -> resourceProvider.getString(R.string.error_back_flash_not_found) + is KMError.DeviceNotFound -> resourceProvider.getString(R.string.error_device_not_found) + is KMError.Exception -> exception.toString() + is KMError.EmptyJson -> resourceProvider.getString(R.string.error_empty_json) + is KMError.InvalidNumber -> resourceProvider.getString(R.string.error_invalid_number) + is KMError.NumberTooSmall -> resourceProvider.getString(R.string.error_number_too_small, min) + is KMError.NumberTooBig -> resourceProvider.getString(R.string.error_number_too_big, max) + is KMError.EmptyText -> resourceProvider.getString(R.string.error_cant_be_empty) + KMError.BackupVersionTooNew -> resourceProvider.getString(R.string.error_backup_version_too_new) + KMError.NoIncompatibleKeyboardsInstalled -> resourceProvider.getString(R.string.error_no_incompatible_input_methods_installed) + KMError.NoMediaSessions -> resourceProvider.getString(R.string.error_no_media_sessions) + KMError.NoVoiceAssistant -> resourceProvider.getString(R.string.error_voice_assistant_not_found) + KMError.AccessibilityServiceDisabled -> resourceProvider.getString(R.string.error_accessibility_service_disabled) + KMError.LauncherShortcutsNotSupported -> resourceProvider.getString(R.string.error_launcher_shortcuts_not_supported) + KMError.AccessibilityServiceCrashed -> resourceProvider.getString(R.string.error_accessibility_service_crashed) + KMError.CantFindImeSettings -> resourceProvider.getString(R.string.error_cant_find_ime_settings) + KMError.CantShowImePickerInBackground -> resourceProvider.getString(R.string.error_cant_show_ime_picker_in_background) + KMError.FailedToFindAccessibilityNode -> resourceProvider.getString(R.string.error_failed_to_find_accessibility_node) + is KMError.FailedToPerformAccessibilityGlobalAction -> resourceProvider.getString( R.string.error_failed_to_perform_accessibility_global_action, action, ) - Error.FailedToDispatchGesture -> resourceProvider.getString(R.string.error_failed_to_dispatch_gesture) - Error.AppShortcutCantBeOpened -> resourceProvider.getString(R.string.error_opening_app_shortcut) - Error.InsufficientPermissionsToOpenAppShortcut -> resourceProvider.getString(R.string.error_keymapper_doesnt_have_permission_app_shortcut) - Error.NoAppToPhoneCall -> resourceProvider.getString(R.string.error_no_app_to_phone_call) + KMError.FailedToDispatchGesture -> resourceProvider.getString(R.string.error_failed_to_dispatch_gesture) + KMError.AppShortcutCantBeOpened -> resourceProvider.getString(R.string.error_opening_app_shortcut) + KMError.InsufficientPermissionsToOpenAppShortcut -> resourceProvider.getString(R.string.error_keymapper_doesnt_have_permission_app_shortcut) + KMError.NoAppToPhoneCall -> resourceProvider.getString(R.string.error_no_app_to_phone_call) - Error.CameraInUse -> resourceProvider.getString(R.string.error_camera_in_use) - Error.CameraError -> resourceProvider.getString(R.string.error_camera_error) - Error.CameraDisabled -> resourceProvider.getString(R.string.error_camera_disabled) - Error.CameraDisconnected -> resourceProvider.getString(R.string.error_camera_disconnected) - Error.MaxCamerasInUse -> resourceProvider.getString(R.string.error_max_cameras_in_use) - Error.CameraVariableFlashlightStrengthUnsupported -> resourceProvider.getString(R.string.error_variable_flashlight_strength_unsupported) + KMError.CameraInUse -> resourceProvider.getString(R.string.error_camera_in_use) + KMError.CameraError -> resourceProvider.getString(R.string.error_camera_error) + KMError.CameraDisabled -> resourceProvider.getString(R.string.error_camera_disabled) + KMError.CameraDisconnected -> resourceProvider.getString(R.string.error_camera_disconnected) + KMError.MaxCamerasInUse -> resourceProvider.getString(R.string.error_max_cameras_in_use) + KMError.CameraVariableFlashlightStrengthUnsupported -> resourceProvider.getString(R.string.error_variable_flashlight_strength_unsupported) - is Error.FailedToModifySystemSetting -> resourceProvider.getString( + is KMError.FailedToModifySystemSetting -> resourceProvider.getString( R.string.error_failed_to_modify_system_setting, setting, ) @@ -123,73 +123,72 @@ fun Error.getFullMessage(resourceProvider: ResourceProvider): String { this.ime.label, ) - Error.FailedToChangeIme -> resourceProvider.getString(R.string.error_failed_to_change_ime) - Error.NoCameraApp -> resourceProvider.getString(R.string.error_no_camera_app) - Error.NoDeviceAssistant -> resourceProvider.getString(R.string.error_no_device_assistant) - Error.NoSettingsApp -> resourceProvider.getString(R.string.error_no_settings_app) - Error.NoAppToOpenUrl -> resourceProvider.getString(R.string.error_no_app_to_open_url) + KMError.FailedToChangeIme -> resourceProvider.getString(R.string.error_failed_to_change_ime) + KMError.NoCameraApp -> resourceProvider.getString(R.string.error_no_camera_app) + KMError.NoDeviceAssistant -> resourceProvider.getString(R.string.error_no_device_assistant) + KMError.NoSettingsApp -> resourceProvider.getString(R.string.error_no_settings_app) + KMError.NoAppToOpenUrl -> resourceProvider.getString(R.string.error_no_app_to_open_url) - Error.CantFindSoundFile -> resourceProvider.getString(R.string.error_cant_find_sound_file) - is Error.CorruptJsonFile -> reason + KMError.CantFindSoundFile -> resourceProvider.getString(R.string.error_cant_find_sound_file) + is KMError.CorruptJsonFile -> reason - is Error.CannotCreateFileInTarget -> resourceProvider.getString( + is KMError.CannotCreateFileInTarget -> resourceProvider.getString( R.string.error_file_access_denied, uri, ) - Error.FileOperationCancelled -> resourceProvider.getString(R.string.error_file_operation_cancelled) - is Error.NoSpaceLeftOnTarget -> resourceProvider.getString( + KMError.FileOperationCancelled -> resourceProvider.getString(R.string.error_file_operation_cancelled) + is KMError.NoSpaceLeftOnTarget -> resourceProvider.getString( R.string.error_no_space_left_at_target, uri, ) - is Error.NotADirectory -> resourceProvider.getString(R.string.error_not_a_directory, uri) - is Error.NotAFile -> resourceProvider.getString(R.string.error_not_a_file, uri) - is Error.SourceFileNotFound -> resourceProvider.getString( + is KMError.NotADirectory -> resourceProvider.getString(R.string.error_not_a_directory, uri) + is KMError.NotAFile -> resourceProvider.getString(R.string.error_not_a_file, uri) + is KMError.SourceFileNotFound -> resourceProvider.getString( R.string.error_source_file_not_found, uri, ) - Error.StoragePermissionDenied -> resourceProvider.getString(R.string.error_storage_permission_denied) - Error.TargetDirectoryMatchesSourceDirectory -> resourceProvider.getString(R.string.error_matching_source_and_target_paths) - is Error.TargetDirectoryNotFound -> resourceProvider.getString( + KMError.StoragePermissionDenied -> resourceProvider.getString(R.string.error_storage_permission_denied) + KMError.TargetDirectoryMatchesSourceDirectory -> resourceProvider.getString(R.string.error_matching_source_and_target_paths) + is KMError.TargetDirectoryNotFound -> resourceProvider.getString( R.string.error_directory_not_found, uri, ) - is Error.TargetFileNotFound -> resourceProvider.getString( + is KMError.TargetFileNotFound -> resourceProvider.getString( R.string.error_target_file_not_found, uri, ) - Error.UnknownIOError -> resourceProvider.getString(R.string.error_io_error) - Error.ShizukuNotStarted -> resourceProvider.getString(R.string.error_shizuku_not_started) - Error.NoFileName -> resourceProvider.getString(R.string.error_no_file_name) - Error.CantDetectKeyEventsInPhoneCall -> resourceProvider.getString(R.string.trigger_error_cant_detect_in_phone_call_explanation) - Error.GestureStrokeCountTooHigh -> resourceProvider.getString(R.string.trigger_error_gesture_stroke_count_too_high) - Error.GestureDurationTooHigh -> resourceProvider.getString(R.string.trigger_error_gesture_duration_too_high) - - Error.DpadTriggerImeNotSelected -> resourceProvider.getString(R.string.trigger_error_dpad_ime_not_selected) - Error.InvalidBackup -> resourceProvider.getString(R.string.error_invalid_backup) - Error.MalformedUrl -> resourceProvider.getString(R.string.error_malformed_url) - Error.UiElementNotFound -> resourceProvider.getString(R.string.error_ui_element_not_found) + KMError.UnknownIOError -> resourceProvider.getString(R.string.error_io_error) + KMError.ShizukuNotStarted -> resourceProvider.getString(R.string.error_shizuku_not_started) + KMError.NoFileName -> resourceProvider.getString(R.string.error_no_file_name) + KMError.CantDetectKeyEventsInPhoneCall -> resourceProvider.getString(R.string.trigger_error_cant_detect_in_phone_call_explanation) + KMError.GestureStrokeCountTooHigh -> resourceProvider.getString(R.string.trigger_error_gesture_stroke_count_too_high) + KMError.GestureDurationTooHigh -> resourceProvider.getString(R.string.trigger_error_gesture_duration_too_high) + + KMError.DpadTriggerImeNotSelected -> resourceProvider.getString(R.string.trigger_error_dpad_ime_not_selected) + KMError.InvalidBackup -> resourceProvider.getString(R.string.error_invalid_backup) + KMError.MalformedUrl -> resourceProvider.getString(R.string.error_malformed_url) + KMError.UiElementNotFound -> resourceProvider.getString(R.string.error_ui_element_not_found) else -> throw IllegalArgumentException("Unknown error $this") } } -// TODO move this to a field inside each error class -val Error.isFixable: Boolean +val KMError.isFixable: Boolean get() = when (this) { - is Error.AppNotFound, - is Error.AppDisabled, - Error.NoCompatibleImeEnabled, - Error.NoCompatibleImeChosen, + is KMError.AppNotFound, + is KMError.AppDisabled, + KMError.NoCompatibleImeEnabled, + KMError.NoCompatibleImeChosen, is SystemError.ImeDisabled, - Error.AccessibilityServiceDisabled, - Error.AccessibilityServiceCrashed, + KMError.AccessibilityServiceDisabled, + KMError.AccessibilityServiceCrashed, is SystemError.PermissionDenied, - is Error.ShizukuNotStarted, - is Error.CantDetectKeyEventsInPhoneCall, + is KMError.ShizukuNotStarted, + is KMError.CantDetectKeyEventsInPhoneCall, -> true diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/BindingAdapters.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/BindingAdapters.kt index 2d49556745..004ef3d711 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/BindingAdapters.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/BindingAdapters.kt @@ -107,7 +107,6 @@ fun View.enabled(isEnabled: Boolean) { } } -// TODO check this is correct fun TintType.toColor(ctx: Context): Int? = when (this) { TintType.None -> null TintType.OnSurface -> ctx.color(R.color.md_theme_onSurface) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt index fedb42518c..fb131bd140 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.utils.ui import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.base.utils.getFullMessage @@ -122,7 +122,7 @@ object ViewModelHelper { suspend fun showFixErrorDialog( resourceProvider: ResourceProvider, dialogProvider: DialogProvider, - error: Error, + error: KMError, fixError: suspend () -> Unit, ) { if (error.isFixable) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeChipModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeChipModel.kt index 29b28f6c70..15f44addaf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeChipModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/ComposeChipModel.kt @@ -13,7 +13,7 @@ sealed class ComposeChipModel { data class Error( override val id: String, override val text: String, - val error: io.github.sds100.keymapper.common.utils.Error, + val error: io.github.sds100.keymapper.common.utils.KMError, val isFixable: Boolean = true, ) : ComposeChipModel() } diff --git a/base/src/test/java/io/github/sds100/keymapper/base/BackupManagerTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/BackupManagerTest.kt index 5f7e11f1bc..5d38528b8b 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/BackupManagerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/BackupManagerTest.kt @@ -12,7 +12,7 @@ import io.github.sds100.keymapper.base.repositories.FakePreferenceRepository import io.github.sds100.keymapper.base.system.files.FakeFileAdapter import io.github.sds100.keymapper.base.system.files.JavaFile import io.github.sds100.keymapper.base.utils.TestBuildConfigProvider -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.UuidGenerator @@ -315,7 +315,7 @@ class BackupManagerTest { advanceUntilIdle() // THEN - assertThat(result, `is`(Error.BackupVersionTooNew)) + assertThat(result, `is`(KMError.BackupVersionTooNew)) } /** @@ -539,7 +539,7 @@ class BackupManagerTest { val result = backupManager.restore(copyFileToPrivateFolder(fileName), RestoreType.REPLACE) - assertThat(result, `is`(Error.BackupVersionTooNew)) + assertThat(result, `is`(KMError.BackupVersionTooNew)) verify(mockKeyMapRepository, never()).insert(anyVararg()) } @@ -550,7 +550,7 @@ class BackupManagerTest { val result = backupManager.restore(copyFileToPrivateFolder(fileName), RestoreType.REPLACE) - assertThat(result, `is`(Error.BackupVersionTooNew)) + assertThat(result, `is`(KMError.BackupVersionTooNew)) } @Test @@ -559,7 +559,7 @@ class BackupManagerTest { val result = backupManager.restore(copyFileToPrivateFolder(fileName), RestoreType.REPLACE) - assertThat(result, `is`(Error.EmptyJson)) + assertThat(result, `is`(KMError.EmptyJson)) } @Test @@ -568,7 +568,7 @@ class BackupManagerTest { val result = backupManager.restore(copyFileToPrivateFolder(fileName), RestoreType.REPLACE) - assertThat(result, IsInstanceOf(Error.CorruptJsonFile::class.java)) + assertThat(result, IsInstanceOf(KMError.CorruptJsonFile::class.java)) } @Test diff --git a/base/src/test/java/io/github/sds100/keymapper/base/actions/GetActionFailedUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/actions/GetActionFailedUseCaseTest.kt index 1ec995c4d7..3cc610d0ee 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/actions/GetActionFailedUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/actions/GetActionFailedUseCaseTest.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.base.actions import android.view.KeyEvent import io.github.sds100.keymapper.base.utils.TestBuildConfigProvider -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter @@ -109,6 +109,6 @@ class GetActionFailedUseCaseTest { val error = useCase.actionErrorSnapshot.first().getError(action) // THEN - assertThat(error, `is`(Error.ShizukuNotStarted)) + assertThat(error, `is`(KMError.ShizukuNotStarted)) } } diff --git a/base/src/test/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCaseTest.kt index f26e7f8889..a7f9283faf 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCaseTest.kt @@ -5,7 +5,7 @@ import android.view.KeyEvent import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.base.system.devices.FakeDevicesAdapter import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.devices.InputDeviceInfo @@ -98,7 +98,7 @@ class PerformActionsUseCaseTest { any(), any(), ), - ).doReturn(Error.FailedToFindAccessibilityNode) + ).doReturn(KMError.FailedToFindAccessibilityNode) // WHEN useCase.perform(action) diff --git a/base/src/test/java/io/github/sds100/keymapper/base/keymaps/KeyMapControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/KeyMapControllerTest.kt index 928be53228..655d87924c 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/keymaps/KeyMapControllerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/KeyMapControllerTest.kt @@ -28,7 +28,7 @@ import io.github.sds100.keymapper.base.utils.parallelTrigger import io.github.sds100.keymapper.base.utils.sequenceTrigger import io.github.sds100.keymapper.base.utils.singleKeyTrigger import io.github.sds100.keymapper.base.utils.triggerKey -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.common.utils.withFlag import io.github.sds100.keymapper.system.camera.CameraLens @@ -180,7 +180,7 @@ class KeyMapControllerTest { } on { getErrorSnapshot() } doReturn object : ActionErrorSnapshot { - override fun getError(action: ActionData): Error? = null + override fun getError(action: ActionData): KMError? = null } } @@ -1320,8 +1320,8 @@ class KeyMapControllerTest { // WHEN whenever(performActionsUseCase.getErrorSnapshot()).thenReturn(object : ActionErrorSnapshot { - override fun getError(action: ActionData): Error { - return Error.NoCompatibleImeChosen + override fun getError(action: ActionData): KMError { + return KMError.NoCompatibleImeChosen } }) diff --git a/base/src/test/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt index c418d55b80..70f5ff5df9 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt @@ -10,7 +10,7 @@ import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.TriggerKeyMapFromOtherAppsController import io.github.sds100.keymapper.base.trigger.Trigger import io.github.sds100.keymapper.base.utils.TestConstraintSnapshot -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import junitparams.JUnitParamsRunner import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.delay @@ -79,7 +79,7 @@ class TriggerKeyMapFromOtherAppsControllerTest { } on { getErrorSnapshot() } doReturn object : ActionErrorSnapshot { - override fun getError(action: ActionData): Error? = null + override fun getError(action: ActionData): KMError? = null } } diff --git a/base/src/test/java/io/github/sds100/keymapper/base/system/devices/FakeDevicesAdapter.kt b/base/src/test/java/io/github/sds100/keymapper/base/system/devices/FakeDevicesAdapter.kt index 142878867d..ba2e23d056 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/system/devices/FakeDevicesAdapter.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/system/devices/FakeDevicesAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.system.devices -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.devices.DevicesAdapter @@ -28,7 +28,7 @@ class FakeDevicesAdapter : DevicesAdapter { return deviceHasKey.invoke(id, keyCode) } - override fun getInputDeviceName(descriptor: String): Result { + override fun getInputDeviceName(descriptor: String): KMResult { throw Exception() } } diff --git a/base/src/test/java/io/github/sds100/keymapper/base/system/files/FakeFileAdapter.kt b/base/src/test/java/io/github/sds100/keymapper/base/system/files/FakeFileAdapter.kt index 6daa728fc6..6321c20df8 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/system/files/FakeFileAdapter.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/system/files/FakeFileAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.base.system.files -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.files.FileAdapter import io.github.sds100.keymapper.system.files.IFile @@ -23,7 +23,7 @@ class FakeFileAdapter( throw Exception() } - override fun openDownloadsFile(fileName: String, mimeType: String): Result { + override fun openDownloadsFile(fileName: String, mimeType: String): KMResult { throw Exception() } @@ -45,7 +45,7 @@ class FakeFileAdapter( return "" } - override fun createZipFile(destination: IFile, files: Set): Result<*> { + override fun createZipFile(destination: IFile, files: Set): KMResult<*> { runBlocking { files.forEach { file -> file.copyTo(destination) @@ -55,7 +55,7 @@ class FakeFileAdapter( return Success(Unit) } - override suspend fun extractZipFile(zipFile: IFile, destination: IFile): Result<*> { + override suspend fun extractZipFile(zipFile: IFile, destination: IFile): KMResult<*> { zipFile.listFiles()!!.forEach { file -> file.copyTo(destination) } diff --git a/base/src/test/java/io/github/sds100/keymapper/base/system/files/JavaFile.kt b/base/src/test/java/io/github/sds100/keymapper/base/system/files/JavaFile.kt index 7c7ada3cb5..4e86d7b9ee 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/system/files/JavaFile.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/system/files/JavaFile.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.system.files import com.anggrayudi.storage.file.recreateFile -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.files.IFile import timber.log.Timber @@ -72,7 +72,7 @@ class JavaFile(val file: File) : IFile { file.mkdirs() } - override suspend fun copyTo(directory: IFile, fileName: String?): Result<*> { + override suspend fun copyTo(directory: IFile, fileName: String?): KMResult<*> { val targetFile = File((directory as JavaFile).file, fileName ?: this.name) if (this.isDirectory) { diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/KMResult.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/KMResult.kt new file mode 100644 index 0000000000..a634446e3e --- /dev/null +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/KMResult.kt @@ -0,0 +1,169 @@ +package io.github.sds100.keymapper.common.utils + +/** + * Inspired from @antonyharfield great example! + */ + +sealed class KMResult + +data class Success(val value: T) : KMResult() + +// TODO move all these errors to their respective packages + +abstract class KMError : KMResult() { + data class Exception(val exception: java.lang.Exception) : KMError() + data class SystemFeatureNotSupported(val feature: String) : KMError() + data class SdkVersionTooLow(val minSdk: Int) : KMError() + data class SdkVersionTooHigh(val maxSdk: Int) : KMError() + data class InputMethodNotFound(val imeLabel: String) : KMError() + data object NoVoiceAssistant : KMError() + data object NoDeviceAssistant : KMError() + data object NoCameraApp : KMError() + data object NoSettingsApp : KMError() + data object FrontFlashNotFound : KMError() + data object BackFlashNotFound : KMError() + data class DeviceNotFound(val descriptor: String) : KMError() + data object InvalidNumber : KMError() + data class NumberTooBig(val max: Int) : KMError() + data class NumberTooSmall(val min: Int) : KMError() + data object EmptyText : KMError() + data object NoIncompatibleKeyboardsInstalled : KMError() + data object NoMediaSessions : KMError() + data object BackupVersionTooNew : KMError() + data object LauncherShortcutsNotSupported : KMError() + + data class AppNotFound(val packageName: String) : KMError() + data class AppDisabled(val packageName: String) : KMError() + data object AppShortcutCantBeOpened : KMError() + data object InsufficientPermissionsToOpenAppShortcut : KMError() + data object NoCompatibleImeEnabled : KMError() + data object NoCompatibleImeChosen : KMError() + + data object AccessibilityServiceDisabled : KMError() + data object AccessibilityServiceCrashed : KMError() + + data object CantShowImePickerInBackground : KMError() + data object CantFindImeSettings : KMError() + data object GestureStrokeCountTooHigh : KMError() + data object GestureDurationTooHigh : KMError() + + data object FailedToFindAccessibilityNode : KMError() + data class FailedToPerformAccessibilityGlobalAction(val action: Int) : KMError() + data object FailedToDispatchGesture : KMError() + + data object CameraInUse : KMError() + data object CameraDisconnected : KMError() + data object CameraDisabled : KMError() + data object MaxCamerasInUse : KMError() + data object CameraError : KMError() + data object CameraVariableFlashlightStrengthUnsupported : KMError() + + data class FailedToModifySystemSetting(val setting: String) : KMError() + data object FailedToChangeIme : KMError() + data object NoAppToOpenUrl : KMError() + data object NoAppToPhoneCall : KMError() + + data class NotAFile(val uri: String) : KMError() + data class NotADirectory(val uri: String) : KMError() + data object StoragePermissionDenied : KMError() + data class CannotCreateFileInTarget(val uri: String) : KMError() + data class SourceFileNotFound(val uri: String) : KMError() + data class TargetFileNotFound(val uri: String) : KMError() + data class TargetDirectoryNotFound(val uri: String) : KMError() + data object UnknownIOError : KMError() + data object FileOperationCancelled : KMError() + data object TargetDirectoryMatchesSourceDirectory : KMError() + data class NoSpaceLeftOnTarget(val uri: String) : KMError() + data object NoFileName : KMError() + data object InvalidBackup : KMError() + + data object EmptyJson : KMError() + data object CantFindSoundFile : KMError() + data class CorruptJsonFile(val reason: String) : KMError() + + data object ShizukuNotStarted : KMError() + data object CantDetectKeyEventsInPhoneCall : KMError() + + /** + * DPAD triggers require a Key Mapper keyboard to be selected. + */ + data object DpadTriggerImeNotSelected : KMError() + data object MalformedUrl : KMError() + + data object UiElementNotFound : KMError() +} + +inline fun KMResult.onSuccess(f: (T) -> Unit): KMResult { + if (this is Success) { + f(this.value) + } + + return this +} + +inline fun KMResult.onFailure(f: (error: KMError) -> U): KMResult { + if (this is KMError) { + f(this) + } + + return this +} + +inline infix fun KMResult.then(f: (T) -> KMResult) = when (this) { + is Success -> f(this.value) + is KMError -> this +} + +suspend infix fun KMResult.suspendThen(f: suspend (T) -> KMResult) = when (this) { + is Success -> f(this.value) + is KMError -> this +} + +inline infix fun KMResult.otherwise(f: (error: KMError) -> KMResult) = when (this) { + is Success -> this + is KMError -> f(this) +} + +inline fun KMResult.resolve( + onSuccess: (value: T) -> U, + onFailure: (error: KMError) -> U, +) = when (this) { + is Success -> onSuccess(this.value) + is KMError -> onFailure(this) +} + +inline infix fun KMResult.valueIfFailure(f: (error: KMError) -> T): T = when (this) { + is Success -> this.value + is KMError -> f(this) +} + +fun KMResult.errorOrNull(): KMError? { + when (this) { + is KMError -> return this + else -> Unit + } + + return null +} + +fun KMResult.valueOrNull(): T? { + when (this) { + is Success -> return this.value + else -> Unit + } + + return null +} + +val KMResult.isError: Boolean + get() = this is KMError + +val KMResult.isSuccess: Boolean + get() = this is Success + +fun KMResult.handle(onSuccess: (value: T) -> U, onError: (error: KMError) -> U): U = when (this) { + is Success -> onSuccess(value) + is KMError -> onError(this) +} + +fun T.success() = Success(this) diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/Result.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/Result.kt deleted file mode 100644 index f147661744..0000000000 --- a/common/src/main/java/io/github/sds100/keymapper/common/utils/Result.kt +++ /dev/null @@ -1,170 +0,0 @@ -package io.github.sds100.keymapper.common.utils - -/** - * Inspired from @antonyharfield great example! - */ - -// TODO rename KMResult -sealed class Result - -data class Success(val value: T) : Result() - -// TODO move all these errors to their respective packages - -abstract class Error : Result() { - data class Exception(val exception: java.lang.Exception) : Error() - data class SystemFeatureNotSupported(val feature: String) : Error() - data class SdkVersionTooLow(val minSdk: Int) : Error() - data class SdkVersionTooHigh(val maxSdk: Int) : Error() - data class InputMethodNotFound(val imeLabel: String) : Error() - data object NoVoiceAssistant : Error() - data object NoDeviceAssistant : Error() - data object NoCameraApp : Error() - data object NoSettingsApp : Error() - data object FrontFlashNotFound : Error() - data object BackFlashNotFound : Error() - data class DeviceNotFound(val descriptor: String) : Error() - data object InvalidNumber : Error() - data class NumberTooBig(val max: Int) : Error() - data class NumberTooSmall(val min: Int) : Error() - data object EmptyText : Error() - data object NoIncompatibleKeyboardsInstalled : Error() - data object NoMediaSessions : Error() - data object BackupVersionTooNew : Error() - data object LauncherShortcutsNotSupported : Error() - - data class AppNotFound(val packageName: String) : Error() - data class AppDisabled(val packageName: String) : Error() - data object AppShortcutCantBeOpened : Error() - data object InsufficientPermissionsToOpenAppShortcut : Error() - data object NoCompatibleImeEnabled : Error() - data object NoCompatibleImeChosen : Error() - - data object AccessibilityServiceDisabled : Error() - data object AccessibilityServiceCrashed : Error() - - data object CantShowImePickerInBackground : Error() - data object CantFindImeSettings : Error() - data object GestureStrokeCountTooHigh : Error() - data object GestureDurationTooHigh : Error() - - data object FailedToFindAccessibilityNode : Error() - data class FailedToPerformAccessibilityGlobalAction(val action: Int) : Error() - data object FailedToDispatchGesture : Error() - - data object CameraInUse : Error() - data object CameraDisconnected : Error() - data object CameraDisabled : Error() - data object MaxCamerasInUse : Error() - data object CameraError : Error() - data object CameraVariableFlashlightStrengthUnsupported : Error() - - data class FailedToModifySystemSetting(val setting: String) : Error() - data object FailedToChangeIme : Error() - data object NoAppToOpenUrl : Error() - data object NoAppToPhoneCall : Error() - - data class NotAFile(val uri: String) : Error() - data class NotADirectory(val uri: String) : Error() - data object StoragePermissionDenied : Error() - data class CannotCreateFileInTarget(val uri: String) : Error() - data class SourceFileNotFound(val uri: String) : Error() - data class TargetFileNotFound(val uri: String) : Error() - data class TargetDirectoryNotFound(val uri: String) : Error() - data object UnknownIOError : Error() - data object FileOperationCancelled : Error() - data object TargetDirectoryMatchesSourceDirectory : Error() - data class NoSpaceLeftOnTarget(val uri: String) : Error() - data object NoFileName : Error() - data object InvalidBackup : Error() - - data object EmptyJson : Error() - data object CantFindSoundFile : Error() - data class CorruptJsonFile(val reason: String) : Error() - - data object ShizukuNotStarted : Error() - data object CantDetectKeyEventsInPhoneCall : Error() - - /** - * DPAD triggers require a Key Mapper keyboard to be selected. - */ - data object DpadTriggerImeNotSelected : Error() - data object MalformedUrl : Error() - - data object UiElementNotFound : Error() -} - -inline fun Result.onSuccess(f: (T) -> Unit): Result { - if (this is Success) { - f(this.value) - } - - return this -} - -inline fun Result.onFailure(f: (error: Error) -> U): Result { - if (this is Error) { - f(this) - } - - return this -} - -inline infix fun Result.then(f: (T) -> Result) = when (this) { - is Success -> f(this.value) - is Error -> this -} - -suspend infix fun Result.suspendThen(f: suspend (T) -> Result) = when (this) { - is Success -> f(this.value) - is Error -> this -} - -inline infix fun Result.otherwise(f: (error: Error) -> Result) = when (this) { - is Success -> this - is Error -> f(this) -} - -inline fun Result.resolve( - onSuccess: (value: T) -> U, - onFailure: (error: Error) -> U, -) = when (this) { - is Success -> onSuccess(this.value) - is Error -> onFailure(this) -} - -inline infix fun Result.valueIfFailure(f: (error: Error) -> T): T = when (this) { - is Success -> this.value - is Error -> f(this) -} - -fun Result.errorOrNull(): Error? { - when (this) { - is Error -> return this - else -> Unit - } - - return null -} - -fun Result.valueOrNull(): T? { - when (this) { - is Success -> return this.value - else -> Unit - } - - return null -} - -val Result.isError: Boolean - get() = this is Error - -val Result.isSuccess: Boolean - get() = this is Success - -fun Result.handle(onSuccess: (value: T) -> U, onError: (error: Error) -> U): U = when (this) { - is Success -> onSuccess(value) - is Error -> onError(this) -} - -fun T.success() = Success(this) diff --git a/data/src/main/java/io/github/sds100/keymapper/data/DataError.kt b/data/src/main/java/io/github/sds100/keymapper/data/DataError.kt index 5313bff94b..556b951bdb 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/DataError.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/DataError.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.data -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError object DataError { - data class ExtraNotFound(val extraId: String) : Error() + data class ExtraNotFound(val extraId: String) : KMError() } \ No newline at end of file diff --git a/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt index 10b296f49e..7427a6e02e 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/EntityExtra.kt @@ -4,7 +4,7 @@ import android.os.Parcelable import com.github.salomonbrys.kotson.byString import com.github.salomonbrys.kotson.jsonDeserializer import com.google.gson.annotations.SerializedName -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.data.DataError import kotlinx.parcelize.Parcelize @@ -32,7 +32,7 @@ data class EntityExtra( } } -fun List.getData(extraId: String): Result { +fun List.getData(extraId: String): KMResult { return find { it.id == extraId }.let { it ?: return@let DataError.ExtraNotFound(extraId) diff --git a/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt b/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt index 29e165b9e5..1b9d0b7535 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/Shell.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.shell.ShellAdapter import java.io.IOException @@ -38,13 +38,13 @@ class Shell @Inject constructor() : ShellAdapter { @Throws(IOException::class) fun getShellCommandStdErr(vararg command: String): InputStream = Runtime.getRuntime().exec(command).errorStream - override fun execute(command: String): Result<*> { + override fun execute(command: String): KMResult<*> { try { Runtime.getRuntime().exec(command) return Success(Unit) } catch (e: IOException) { - return Error.Exception(e) + return KMError.Exception(e) } } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt b/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt index 4a6b892152..09a56f818e 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/SystemError.kt @@ -1,10 +1,10 @@ package io.github.sds100.keymapper.system -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.permissions.Permission -sealed class SystemError : Error() { - data class PermissionDenied(val permission: Permission) : Error() - data class ImeDisabled(val ime: ImeInfo) : Error() +sealed class SystemError : KMError() { + data class PermissionDenied(val permission: Permission) : KMError() + data class ImeDisabled(val ime: ImeInfo) : KMError() } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt index da582b7dda..b3c4c68464 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.accessibility -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow @@ -29,7 +29,7 @@ interface AccessibilityServiceAdapter { /** * Send an event to the service. */ - suspend fun send(event: AccessibilityServiceEvent): Result<*> + suspend fun send(event: AccessibilityServiceEvent): KMResult<*> /** * Send an event to the service asynchronously. This method diff --git a/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt index 3c0b59ede8..6c38f9f3a4 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AirplaneModeAdapter.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.system.airplanemode -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult interface AirplaneModeAdapter { fun isEnabled(): Boolean - fun enable(): Result<*> - fun disable(): Result<*> + fun enable(): KMResult<*> + fun disable(): KMResult<*> } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt index 4e995642af..df7c4a7c5c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/airplanemode/AndroidAirplaneModeAdapter.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.airplanemode import android.content.Context import android.provider.Settings -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.SettingsUtils import io.github.sds100.keymapper.system.root.SuAdapter @@ -17,12 +17,12 @@ class AndroidAirplaneModeAdapter @Inject constructor( ) : AirplaneModeAdapter { private val ctx = context.applicationContext - override fun enable(): Result<*> = + override fun enable(): KMResult<*> = suAdapter.execute("settings put global airplane_mode_on 1").onSuccess { broadcastAirplaneModeChanged(false) } - override fun disable(): Result<*> = + override fun disable(): KMResult<*> = suAdapter.execute("settings put global airplane_mode_on 0").onSuccess { broadcastAirplaneModeChanged(false) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt index f5157a9f44..69072392a7 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt @@ -14,8 +14,8 @@ import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.graphics.drawable.IconCompat import androidx.core.graphics.drawable.toBitmap import dagger.hilt.android.qualifiers.ApplicationContext -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.success @@ -96,11 +96,11 @@ class AndroidAppShortcutAdapter @Inject constructor( return builder.build() } - override fun pinShortcut(shortcut: ShortcutInfoCompat): Result<*> { + override fun pinShortcut(shortcut: ShortcutInfoCompat): KMResult<*> { val supported = ShortcutManagerCompat.requestPinShortcut(ctx, shortcut, null) if (!supported) { - return Error.LauncherShortcutsNotSupported + return KMError.LauncherShortcutsNotSupported } else { return Success(Unit) } @@ -108,7 +108,7 @@ class AndroidAppShortcutAdapter @Inject constructor( override fun createShortcutResultIntent(shortcut: ShortcutInfoCompat): Intent = ShortcutManagerCompat.createShortcutResultIntent(ctx, shortcut) - override fun getShortcutName(info: AppShortcutInfo): Result { + override fun getShortcutName(info: AppShortcutInfo): KMResult { try { return ctx.packageManager .getActivityInfo(ComponentName(info.packageName, info.activityName), 0) @@ -116,22 +116,22 @@ class AndroidAppShortcutAdapter @Inject constructor( .toString() .success() } catch (e: PackageManager.NameNotFoundException) { - return Error.AppNotFound(info.packageName) + return KMError.AppNotFound(info.packageName) } } - override fun getShortcutIcon(info: AppShortcutInfo): Result { + override fun getShortcutIcon(info: AppShortcutInfo): KMResult { try { return ctx.packageManager .getActivityInfo(ComponentName(info.packageName, info.activityName), 0) .loadIcon(ctx.packageManager) .success() } catch (e: PackageManager.NameNotFoundException) { - return Error.AppNotFound(info.packageName) + return KMError.AppNotFound(info.packageName) } } - override fun launchShortcut(uri: String): Result<*> { + override fun launchShortcut(uri: String): KMResult<*> { val intent = Intent.parseUri(uri, 0) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) @@ -157,9 +157,9 @@ class AndroidAppShortcutAdapter @Inject constructor( return Success(Unit) } catch (e: SecurityException) { - return Error.InsufficientPermissionsToOpenAppShortcut + return KMError.InsufficientPermissionsToOpenAppShortcut } catch (e: Exception) { - return Error.AppShortcutCantBeOpened + return KMError.AppShortcutCantBeOpened } } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt index ce3a09abfa..f28b595ea0 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AndroidPackageManagerAdapter.kt @@ -22,8 +22,8 @@ import android.provider.Settings import androidx.core.content.ContextCompat import androidx.core.content.pm.PackageInfoCompat import dagger.hilt.android.qualifiers.ApplicationContext -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.success @@ -141,7 +141,7 @@ class AndroidPackageManagerAdapter @Inject constructor( } } - override fun launchVoiceAssistant(): Result<*> { + override fun launchVoiceAssistant(): KMResult<*> { try { Intent(Intent.ACTION_VOICE_COMMAND).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK @@ -150,11 +150,11 @@ class AndroidPackageManagerAdapter @Inject constructor( return Success(Unit) } catch (e: ActivityNotFoundException) { - return Error.NoVoiceAssistant + return KMError.NoVoiceAssistant } } - override fun launchDeviceAssistant(): Result<*> { + override fun launchDeviceAssistant(): KMResult<*> { try { Intent(Intent.ACTION_ASSIST).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK @@ -163,15 +163,15 @@ class AndroidPackageManagerAdapter @Inject constructor( return Success(Unit) } catch (e: ActivityNotFoundException) { - return Error.NoDeviceAssistant + return KMError.NoDeviceAssistant } } - override fun getDeviceAssistantPackage(): Result { + override fun getDeviceAssistantPackage(): KMResult { val settingValue = Settings.Secure.getString(ctx.contentResolver, "assistant") if (settingValue.isNullOrEmpty()) { - return Error.NoDeviceAssistant + return KMError.NoDeviceAssistant } val packageName = settingValue.split("/").first() @@ -187,7 +187,7 @@ class AndroidPackageManagerAdapter @Inject constructor( } } - override fun isAppEnabled(packageName: String): Result { + override fun isAppEnabled(packageName: String): KMResult { when (val packagesState = installedPackages.value) { is State.Data -> { val packages = packagesState.data @@ -195,7 +195,7 @@ class AndroidPackageManagerAdapter @Inject constructor( val appPackage = packages.find { it.packageName == packageName } if (appPackage == null) { - return Error.AppNotFound(packageName) + return KMError.AppNotFound(packageName) } else { return Success(appPackage.isEnabled) } @@ -204,7 +204,7 @@ class AndroidPackageManagerAdapter @Inject constructor( State.Loading -> return try { Success(packageManager.getApplicationInfo(packageName, 0).enabled) } catch (e: PackageManager.NameNotFoundException) { - Error.AppNotFound(packageName) + KMError.AppNotFound(packageName) } } } @@ -229,7 +229,7 @@ class AndroidPackageManagerAdapter @Inject constructor( } @SuppressLint("UnspecifiedImmutableFlag") // only specify the flag on SDK 23+. SDK 31 is first to enforce it. - override fun openApp(packageName: String): Result<*> { + override fun openApp(packageName: String): KMResult<*> { val leanbackIntent = packageManager.getLeanbackLaunchIntentForPackage(packageName) val normalIntent = packageManager.getLaunchIntentForPackage(packageName) @@ -242,12 +242,12 @@ class AndroidPackageManagerAdapter @Inject constructor( // if the app is disabled, show an error message because it won't open if (!appInfo.enabled) { - return Error.AppDisabled(packageName) + return KMError.AppDisabled(packageName) } return Success(Unit) } catch (e: Exception) { - return Error.AppNotFound(packageName) + return KMError.AppNotFound(packageName) } } else { val pendingIntent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { @@ -279,7 +279,7 @@ class AndroidPackageManagerAdapter @Inject constructor( return activityExists } - override fun launchCameraApp(): Result<*> { + override fun launchCameraApp(): KMResult<*> { try { /** * See this guide on how the camera is launched with double press power button in @@ -304,12 +304,12 @@ class AndroidPackageManagerAdapter @Inject constructor( return Success(Unit) } catch (e: ActivityNotFoundException) { - return Error.NoCameraApp + return KMError.NoCameraApp } } } - override fun launchSettingsApp(): Result<*> { + override fun launchSettingsApp(): KMResult<*> { try { Intent(Settings.ACTION_SETTINGS).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK @@ -318,7 +318,7 @@ class AndroidPackageManagerAdapter @Inject constructor( return Success(Unit) } catch (e: ActivityNotFoundException) { - return Error.NoSettingsApp + return KMError.NoSettingsApp } } @@ -333,7 +333,7 @@ class AndroidPackageManagerAdapter @Inject constructor( } } - override fun getAppName(packageName: String): Result { + override fun getAppName(packageName: String): KMResult { try { return packageManager .getApplicationInfo(packageName, 0) @@ -341,26 +341,26 @@ class AndroidPackageManagerAdapter @Inject constructor( .toString() .success() } catch (e: PackageManager.NameNotFoundException) { - return Error.AppNotFound(packageName) + return KMError.AppNotFound(packageName) } catch (e: IOException) { - return Error.AppNotFound(packageName) + return KMError.AppNotFound(packageName) } } - override fun getAppIcon(packageName: String): Result { + override fun getAppIcon(packageName: String): KMResult { try { return packageManager .getApplicationInfo(packageName, 0) .loadIcon(packageManager) .success() } catch (e: PackageManager.NameNotFoundException) { - return Error.AppNotFound(packageName) + return KMError.AppNotFound(packageName) } catch (e: IOException) { - return Error.AppNotFound(packageName) + return KMError.AppNotFound(packageName) } } - override fun getActivityLabel(packageName: String, activityClass: String): Result { + override fun getActivityLabel(packageName: String, activityClass: String): KMResult { try { val component = ComponentName(packageName, activityClass) @@ -370,11 +370,11 @@ class AndroidPackageManagerAdapter @Inject constructor( .toString() .success() } catch (e: PackageManager.NameNotFoundException) { - return Error.AppNotFound(packageName) + return KMError.AppNotFound(packageName) } } - override fun getActivityIcon(packageName: String, activityClass: String): Result { + override fun getActivityIcon(packageName: String, activityClass: String): KMResult { try { val component = ComponentName(packageName, activityClass) @@ -383,7 +383,7 @@ class AndroidPackageManagerAdapter @Inject constructor( .loadIcon(packageManager) .success() } catch (e: PackageManager.NameNotFoundException) { - return Error.AppNotFound(packageName) + return KMError.AppNotFound(packageName) } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt index 4b5cec3707..724cc4a17d 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/AppShortcutAdapter.kt @@ -4,7 +4,7 @@ import android.content.Intent import android.graphics.drawable.Drawable import android.os.Bundle import androidx.core.content.pm.ShortcutInfoCompat -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow @@ -26,10 +26,10 @@ interface AppShortcutAdapter { intentExtras: Bundle, ): ShortcutInfoCompat - fun pinShortcut(shortcut: ShortcutInfoCompat): Result<*> + fun pinShortcut(shortcut: ShortcutInfoCompat): KMResult<*> fun createShortcutResultIntent(shortcut: ShortcutInfoCompat): Intent - fun getShortcutName(info: AppShortcutInfo): Result - fun getShortcutIcon(info: AppShortcutInfo): Result - fun launchShortcut(uri: String): Result<*> + fun getShortcutName(info: AppShortcutInfo): KMResult + fun getShortcutIcon(info: AppShortcutInfo): KMResult + fun launchShortcut(uri: String): KMResult<*> } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt index fd887d6bad..6e61c822cf 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/apps/PackageManagerAdapter.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.system.apps import android.graphics.drawable.Drawable -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow @@ -12,25 +12,25 @@ interface PackageManagerAdapter { val onPackagesChanged: Flow val installedPackages: StateFlow>> - fun getAppName(packageName: String): Result - fun getAppIcon(packageName: String): Result + fun getAppName(packageName: String): KMResult + fun getAppIcon(packageName: String): KMResult fun getPackageInfo(packageName: String): PackageInfo? - fun getActivityLabel(packageName: String, activityClass: String): Result - fun getActivityIcon(packageName: String, activityClass: String): Result - fun isAppEnabled(packageName: String): Result + fun getActivityLabel(packageName: String, activityClass: String): KMResult + fun getActivityIcon(packageName: String, activityClass: String): KMResult + fun isAppEnabled(packageName: String): KMResult fun isAppInstalled(packageName: String): Boolean - fun openApp(packageName: String): Result<*> + fun openApp(packageName: String): KMResult<*> fun enableApp(packageName: String) fun downloadApp(packageName: String) - fun launchVoiceAssistant(): Result<*> - fun launchDeviceAssistant(): Result<*> + fun launchVoiceAssistant(): KMResult<*> + fun launchDeviceAssistant(): KMResult<*> fun isVoiceAssistantInstalled(): Boolean - fun getDeviceAssistantPackage(): Result + fun getDeviceAssistantPackage(): KMResult - fun launchCameraApp(): Result<*> - fun launchSettingsApp(): Result<*> + fun launchCameraApp(): KMResult<*> + fun launchSettingsApp(): KMResult<*> } fun PackageManagerAdapter.isAppInstalledFlow(packageName: String): Flow = callbackFlow { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt index d2897e80d4..942f313e6d 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/AndroidBluetoothAdapter.kt @@ -10,8 +10,8 @@ import android.content.IntentFilter import android.content.pm.PackageManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow @@ -129,9 +129,9 @@ class AndroidBluetoothAdapter @Inject constructor( } } - override fun enable(): Result<*> { + override fun enable(): KMResult<*> { if (adapter == null) { - return Error.SystemFeatureNotSupported(PackageManager.FEATURE_BLUETOOTH) + return KMError.SystemFeatureNotSupported(PackageManager.FEATURE_BLUETOOTH) } adapter.enable() @@ -139,9 +139,9 @@ class AndroidBluetoothAdapter @Inject constructor( return Success(Unit) } - override fun disable(): Result<*> { + override fun disable(): KMResult<*> { if (adapter == null) { - return Error.SystemFeatureNotSupported(PackageManager.FEATURE_BLUETOOTH) + return KMError.SystemFeatureNotSupported(PackageManager.FEATURE_BLUETOOTH) } adapter.disable() diff --git a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt index 8f23c4cee2..15e7448164 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/bluetooth/BluetoothAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.bluetooth -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import kotlinx.coroutines.flow.Flow interface BluetoothAdapter { @@ -10,6 +10,6 @@ interface BluetoothAdapter { val isBluetoothEnabled: Flow - fun enable(): Result<*> - fun disable(): Result<*> + fun enable(): KMResult<*> + fun disable(): KMResult<*> } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt index d701c7edd7..18de04aadd 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/camera/AndroidCameraAdapter.kt @@ -7,8 +7,8 @@ import android.hardware.camera2.CameraManager import android.os.Build import androidx.annotation.RequiresApi import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow @@ -138,11 +138,11 @@ class AndroidCameraAdapter @Inject constructor( return null } - override fun enableFlashlight(lens: CameraLens, strengthPercent: Float?): Result<*> = setFlashlightMode(true, lens, strengthPercent) + override fun enableFlashlight(lens: CameraLens, strengthPercent: Float?): KMResult<*> = setFlashlightMode(true, lens, strengthPercent) - override fun disableFlashlight(lens: CameraLens): Result<*> = setFlashlightMode(false, lens) + override fun disableFlashlight(lens: CameraLens): KMResult<*> = setFlashlightMode(false, lens) - override fun toggleFlashlight(lens: CameraLens, strengthPercent: Float?): Result<*> = setFlashlightMode(!isFlashEnabledMap.value[lens]!!, lens, strengthPercent) + override fun toggleFlashlight(lens: CameraLens, strengthPercent: Float?): KMResult<*> = setFlashlightMode(!isFlashEnabledMap.value[lens]!!, lens, strengthPercent) override fun isFlashlightOn(lens: CameraLens): Boolean = isFlashEnabledMap.value[lens] ?: false @@ -150,9 +150,9 @@ class AndroidCameraAdapter @Inject constructor( return isFlashEnabledMap.map { it[lens] ?: false } } - override fun changeFlashlightStrength(lens: CameraLens, percent: Float): Result<*> { + override fun changeFlashlightStrength(lens: CameraLens, percent: Float): KMResult<*> { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { - return Error.SdkVersionTooLow(minSdk = Build.VERSION_CODES.TIRAMISU) + return KMError.SdkVersionTooLow(minSdk = Build.VERSION_CODES.TIRAMISU) } // If the flash is disabled and it should be decreased then do nothing. @@ -165,8 +165,8 @@ class AndroidCameraAdapter @Inject constructor( if (cameraId == null) { return when (lens) { - CameraLens.FRONT -> Error.FrontFlashNotFound - CameraLens.BACK -> Error.BackFlashNotFound + CameraLens.FRONT -> KMError.FrontFlashNotFound + CameraLens.BACK -> KMError.BackFlashNotFound } } @@ -205,9 +205,9 @@ class AndroidCameraAdapter @Inject constructor( enabled: Boolean, lens: CameraLens, strengthPercent: Float? = null, - ): Result<*> { + ): KMResult<*> { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - return Error.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) + return KMError.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) } try { @@ -216,8 +216,8 @@ class AndroidCameraAdapter @Inject constructor( if (cameraId == null || flashInfo == null) { return when (lens) { - CameraLens.FRONT -> Error.FrontFlashNotFound - CameraLens.BACK -> Error.BackFlashNotFound + CameraLens.FRONT -> KMError.FrontFlashNotFound + CameraLens.BACK -> KMError.BackFlashNotFound } } @@ -237,17 +237,17 @@ class AndroidCameraAdapter @Inject constructor( } catch (e: CameraAccessException) { return convertCameraException(e) } catch (e: Exception) { - return Error.Exception(e) + return KMError.Exception(e) } } private fun convertCameraException(e: CameraAccessException) = when (e.reason) { - CameraAccessException.CAMERA_IN_USE -> Error.CameraInUse - CameraAccessException.CAMERA_DISCONNECTED -> Error.CameraDisconnected - CameraAccessException.CAMERA_DISABLED -> Error.CameraDisabled - CameraAccessException.CAMERA_ERROR -> Error.CameraError - CameraAccessException.MAX_CAMERAS_IN_USE -> Error.MaxCamerasInUse - else -> Error.Exception(e) + CameraAccessException.CAMERA_IN_USE -> KMError.CameraInUse + CameraAccessException.CAMERA_DISCONNECTED -> KMError.CameraDisconnected + CameraAccessException.CAMERA_DISABLED -> KMError.CameraDisabled + CameraAccessException.CAMERA_ERROR -> KMError.CameraError + CameraAccessException.MAX_CAMERAS_IN_USE -> KMError.MaxCamerasInUse + else -> KMError.Exception(e) } private fun updateState(lens: CameraLens, enabled: Boolean) { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt index ac7ac858cc..c9f34b0843 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/camera/CameraAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.camera -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import kotlinx.coroutines.flow.Flow interface CameraAdapter { @@ -13,14 +13,14 @@ interface CameraAdapter { * @param strengthPercent is a percentage of the brightness from 0 to 1.0. Null if the default * brightness should be used. */ - fun enableFlashlight(lens: CameraLens, strengthPercent: Float?): Result<*> + fun enableFlashlight(lens: CameraLens, strengthPercent: Float?): KMResult<*> /** * @param strengthPercent is a percentage of the brightness from 0 to 1.0. Null if the default * brightness should be used. */ - fun toggleFlashlight(lens: CameraLens, strengthPercent: Float?): Result<*> - fun disableFlashlight(lens: CameraLens): Result<*> + fun toggleFlashlight(lens: CameraLens, strengthPercent: Float?): KMResult<*> + fun disableFlashlight(lens: CameraLens): KMResult<*> fun isFlashlightOn(lens: CameraLens): Boolean fun isFlashlightOnFlow(lens: CameraLens): Flow @@ -28,5 +28,5 @@ interface CameraAdapter { * @param percent This is the percentage of the max strength to increase/decrease by. Set it * negative to decrease the strength. */ - fun changeFlashlightStrength(lens: CameraLens, percent: Float): Result<*> + fun changeFlashlightStrength(lens: CameraLens, percent: Float): KMResult<*> } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt index 998e9666ac..4de8e4696a 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/devices/AndroidDevicesAdapter.kt @@ -8,8 +8,8 @@ import android.os.Handler import android.os.Looper import android.view.InputDevice import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.permissions.Permission @@ -125,7 +125,7 @@ class AndroidDevicesAdapter @Inject constructor( return device.hasKeys(keyCode)[0] } - override fun getInputDeviceName(descriptor: String): Result { + override fun getInputDeviceName(descriptor: String): KMResult { for (id in InputDevice.getDeviceIds()) { val device = InputDevice.getDevice(id) ?: continue @@ -134,7 +134,7 @@ class AndroidDevicesAdapter @Inject constructor( } } - return Error.DeviceNotFound(descriptor) + return KMError.DeviceNotFound(descriptor) } private fun updateInputDevices() { diff --git a/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt index c0567d2953..b244531a06 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/devices/DevicesAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.devices -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow @@ -15,5 +15,5 @@ interface DevicesAdapter { val connectedBluetoothDevices: StateFlow> fun deviceHasKey(id: Int, keyCode: Int): Boolean - fun getInputDeviceName(descriptor: String): Result + fun getInputDeviceName(descriptor: String): KMResult } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt index 567f67e904..3c4eaf1c08 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/display/AndroidDisplayAdapter.kt @@ -10,9 +10,9 @@ import android.view.Surface import androidx.core.content.ContextCompat import androidx.core.content.getSystemService import dagger.hilt.android.qualifiers.ApplicationContext -import io.github.sds100.keymapper.common.utils.Error +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.Orientation -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.SizeKM import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.getRealDisplaySize @@ -114,27 +114,27 @@ class AndroidDisplayAdapter @Inject constructor( override fun isAutoRotateEnabled(): Boolean = SettingsUtils.getSystemSetting(ctx, Settings.System.ACCELEROMETER_ROTATION) == 1 - override fun enableAutoRotate(): Result<*> { + override fun enableAutoRotate(): KMResult<*> { val success = SettingsUtils.putSystemSetting(ctx, Settings.System.ACCELEROMETER_ROTATION, 1) if (success) { return Success(Unit) } else { - return Error.FailedToModifySystemSetting(Settings.System.ACCELEROMETER_ROTATION) + return KMError.FailedToModifySystemSetting(Settings.System.ACCELEROMETER_ROTATION) } } - override fun disableAutoRotate(): Result<*> { + override fun disableAutoRotate(): KMResult<*> { val success = SettingsUtils.putSystemSetting(ctx, Settings.System.ACCELEROMETER_ROTATION, 0) if (success) { return Success(Unit) } else { - return Error.FailedToModifySystemSetting(Settings.System.ACCELEROMETER_ROTATION) + return KMError.FailedToModifySystemSetting(Settings.System.ACCELEROMETER_ROTATION) } } - override fun setOrientation(orientation: Orientation): Result<*> { + override fun setOrientation(orientation: Orientation): KMResult<*> { val sdkRotationValue = when (orientation) { Orientation.ORIENTATION_0 -> Surface.ROTATION_0 Orientation.ORIENTATION_90 -> Surface.ROTATION_90 @@ -148,7 +148,7 @@ class AndroidDisplayAdapter @Inject constructor( if (success) { return Success(Unit) } else { - return Error.FailedToModifySystemSetting(Settings.System.USER_ROTATION) + return KMError.FailedToModifySystemSetting(Settings.System.USER_ROTATION) } } @@ -157,7 +157,7 @@ class AndroidDisplayAdapter @Inject constructor( Settings.System.SCREEN_BRIGHTNESS_MODE, ) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC - override fun increaseBrightness(): Result<*> { + override fun increaseBrightness(): KMResult<*> { // auto-brightness must be disabled disableAutoBrightness() @@ -181,11 +181,11 @@ class AndroidDisplayAdapter @Inject constructor( return if (success) { Success(Unit) } else { - Error.FailedToModifySystemSetting(Settings.System.SCREEN_BRIGHTNESS) + KMError.FailedToModifySystemSetting(Settings.System.SCREEN_BRIGHTNESS) } } - override fun decreaseBrightness(): Result<*> { + override fun decreaseBrightness(): KMResult<*> { // auto-brightness must be disabled disableAutoBrightness() @@ -209,22 +209,22 @@ class AndroidDisplayAdapter @Inject constructor( return if (success) { Success(Unit) } else { - Error.FailedToModifySystemSetting(Settings.System.SCREEN_BRIGHTNESS) + KMError.FailedToModifySystemSetting(Settings.System.SCREEN_BRIGHTNESS) } } - override fun enableAutoBrightness(): Result<*> = setBrightnessMode(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) + override fun enableAutoBrightness(): KMResult<*> = setBrightnessMode(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) - override fun disableAutoBrightness(): Result<*> = setBrightnessMode(Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL) + override fun disableAutoBrightness(): KMResult<*> = setBrightnessMode(Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL) - private fun setBrightnessMode(mode: Int): Result<*> { + private fun setBrightnessMode(mode: Int): KMResult<*> { val success = SettingsUtils.putSystemSetting(ctx, Settings.System.SCREEN_BRIGHTNESS_MODE, mode) return if (success) { Success(Unit) } else { - Error.FailedToModifySystemSetting(Settings.System.SCREEN_BRIGHTNESS_MODE) + KMError.FailedToModifySystemSetting(Settings.System.SCREEN_BRIGHTNESS_MODE) } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt index 0ccf3a5800..a38fe5a177 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/display/DisplayAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.display -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.SizeKM import io.github.sds100.keymapper.common.utils.Orientation import kotlinx.coroutines.flow.Flow @@ -13,9 +13,9 @@ interface DisplayAdapter { val isAmbientDisplayEnabled: Flow fun isAutoRotateEnabled(): Boolean - fun enableAutoRotate(): Result<*> - fun disableAutoRotate(): Result<*> - fun setOrientation(orientation: Orientation): Result<*> + fun enableAutoRotate(): KMResult<*> + fun disableAutoRotate(): KMResult<*> + fun setOrientation(orientation: Orientation): KMResult<*> /** * Fetch the orientation and bypass the cached value that updates when the listener changes. @@ -23,8 +23,8 @@ interface DisplayAdapter { fun fetchOrientation(): Orientation fun isAutoBrightnessEnabled(): Boolean - fun increaseBrightness(): Result<*> - fun decreaseBrightness(): Result<*> - fun enableAutoBrightness(): Result<*> - fun disableAutoBrightness(): Result<*> + fun increaseBrightness(): KMResult<*> + fun decreaseBrightness(): KMResult<*> + fun enableAutoBrightness(): KMResult<*> + fun disableAutoBrightness(): KMResult<*> } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt index 6042c24aed..448ce230da 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/AndroidFileAdapter.kt @@ -10,8 +10,8 @@ import androidx.core.content.FileProvider import androidx.core.net.toUri import androidx.documentfile.provider.DocumentFile import com.anggrayudi.storage.file.toDocumentFile -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -54,7 +54,7 @@ class AndroidFileAdapter @Inject constructor( override fun openAsset(fileName: String): InputStream = ctx.assets.open(fileName) - override fun openDownloadsFile(fileName: String, mimeType: String): Result { + override fun openDownloadsFile(fileName: String, mimeType: String): KMResult { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { val contentValues = ContentValues().apply { put(MediaStore.MediaColumns.DISPLAY_NAME, fileName) @@ -65,15 +65,15 @@ class AndroidFileAdapter @Inject constructor( val uri = contentResolver.insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI, contentValues) - ?: return Error.UnknownIOError + ?: return KMError.UnknownIOError - val file = DocumentFile.fromSingleUri(ctx, uri) ?: return Error.UnknownIOError + val file = DocumentFile.fromSingleUri(ctx, uri) ?: return KMError.UnknownIOError return Success(DocumentFileWrapper(file, ctx)) } else { val downloadsFile = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) - val documentFile = downloadsFile.toDocumentFile(ctx) ?: return Error.UnknownIOError + val documentFile = downloadsFile.toDocumentFile(ctx) ?: return KMError.UnknownIOError val file = DocumentFileWrapper(documentFile, ctx) return Success(file) @@ -82,7 +82,7 @@ class AndroidFileAdapter @Inject constructor( override fun getPicturesFolder(): String = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).path - override fun createZipFile(destination: IFile, files: Set): Result<*> { + override fun createZipFile(destination: IFile, files: Set): KMResult<*> { val zipUid = UUID.randomUUID().toString() val tempZipFile = File(ctx.filesDir, "$zipUid.zip") @@ -111,7 +111,7 @@ class AndroidFileAdapter @Inject constructor( return Success(Unit) } - override suspend fun extractZipFile(zipFile: IFile, destination: IFile): Result<*> { + override suspend fun extractZipFile(zipFile: IFile, destination: IFile): KMResult<*> { withContext(Dispatchers.IO) { val zipUid = UUID.randomUUID().toString() val tempZipFileCopy = File(ctx.filesDir, "$zipUid.zip") diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt index 66d0875346..1bf21fb57e 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/DocumentFileWrapper.kt @@ -12,8 +12,8 @@ import com.anggrayudi.storage.file.openInputStream import com.anggrayudi.storage.file.openOutputStream import com.anggrayudi.storage.file.recreateFile import com.anggrayudi.storage.media.FileDescription -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -90,7 +90,7 @@ class DocumentFileWrapper(val file: DocumentFile, context: Context) : IFile { } } - override suspend fun copyTo(directory: IFile, fileName: String?): Result<*> = withContext(Dispatchers.Default) { + override suspend fun copyTo(directory: IFile, fileName: String?): KMResult<*> = withContext(Dispatchers.Default) { suspendCoroutine { continuation -> val callback = object : FileCallback() { override fun onCompleted(result: Any) { @@ -103,21 +103,21 @@ class DocumentFileWrapper(val file: DocumentFile, context: Context) : IFile { super.onFailed(errorCode) val error = when (errorCode) { - ErrorCode.STORAGE_PERMISSION_DENIED -> Error.StoragePermissionDenied - ErrorCode.CANNOT_CREATE_FILE_IN_TARGET -> Error.CannotCreateFileInTarget( + ErrorCode.STORAGE_PERMISSION_DENIED -> KMError.StoragePermissionDenied + ErrorCode.CANNOT_CREATE_FILE_IN_TARGET -> KMError.CannotCreateFileInTarget( directory.uri, ) - ErrorCode.SOURCE_FILE_NOT_FOUND -> Error.SourceFileNotFound(this@DocumentFileWrapper.uri) - ErrorCode.TARGET_FILE_NOT_FOUND -> Error.TargetFileNotFound(directory.uri) - ErrorCode.TARGET_FOLDER_NOT_FOUND -> Error.TargetDirectoryNotFound( + ErrorCode.SOURCE_FILE_NOT_FOUND -> KMError.SourceFileNotFound(this@DocumentFileWrapper.uri) + ErrorCode.TARGET_FILE_NOT_FOUND -> KMError.TargetFileNotFound(directory.uri) + ErrorCode.TARGET_FOLDER_NOT_FOUND -> KMError.TargetDirectoryNotFound( directory.uri, ) - ErrorCode.UNKNOWN_IO_ERROR -> Error.UnknownIOError - ErrorCode.CANCELED -> Error.FileOperationCancelled - ErrorCode.TARGET_FOLDER_CANNOT_HAVE_SAME_PATH_WITH_SOURCE_FOLDER -> Error.TargetDirectoryMatchesSourceDirectory - ErrorCode.NO_SPACE_LEFT_ON_TARGET_PATH -> Error.NoSpaceLeftOnTarget( + ErrorCode.UNKNOWN_IO_ERROR -> KMError.UnknownIOError + ErrorCode.CANCELED -> KMError.FileOperationCancelled + ErrorCode.TARGET_FOLDER_CANNOT_HAVE_SAME_PATH_WITH_SOURCE_FOLDER -> KMError.TargetDirectoryMatchesSourceDirectory + ErrorCode.NO_SPACE_LEFT_ON_TARGET_PATH -> KMError.NoSpaceLeftOnTarget( directory.uri, ) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt index 7fa90dc748..fa7d4aa035 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/FileAdapter.kt @@ -1,19 +1,19 @@ package io.github.sds100.keymapper.system.files -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import java.io.InputStream interface FileAdapter { fun openAsset(fileName: String): InputStream fun getPicturesFolder(): String - fun openDownloadsFile(fileName: String, mimeType: String): Result + fun openDownloadsFile(fileName: String, mimeType: String): KMResult fun getPrivateFile(path: String): IFile fun getFile(parent: IFile, path: String): IFile fun getFileFromUri(uri: String): IFile fun getPublicUriForPrivateFile(privateFile: IFile): String - fun createZipFile(destination: IFile, files: Set): Result<*> - suspend fun extractZipFile(zipFile: IFile, destination: IFile): Result<*> + fun createZipFile(destination: IFile, files: Set): KMResult<*> + suspend fun extractZipFile(zipFile: IFile, destination: IFile): KMResult<*> } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt b/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt index 18e86d2f57..9ceb791937 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/files/IFile.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.files -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import java.io.File import java.io.InputStream import java.io.OutputStream @@ -23,7 +23,7 @@ interface IFile { fun createFile() fun createDirectory() - suspend fun copyTo(directory: IFile, fileName: String? = null): Result<*> + suspend fun copyTo(directory: IFile, fileName: String? = null): KMResult<*> } fun IFile.toJavaFile(): File = File(path) diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt index 27a911b1b2..71da8a1a1d 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/AndroidInputMethodAdapter.kt @@ -15,8 +15,8 @@ import androidx.core.content.ContextCompat import androidx.core.content.getSystemService import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess @@ -165,7 +165,7 @@ class AndroidInputMethodAdapter @Inject constructor( ) } - override fun showImePicker(fromForeground: Boolean): Result<*> { + override fun showImePicker(fromForeground: Boolean): KMResult<*> { when { fromForeground || Build.VERSION.SDK_INT < Build.VERSION_CODES.O_MR1 -> { inputMethodManager.showInputMethodPicker() @@ -178,11 +178,11 @@ class AndroidInputMethodAdapter @Inject constructor( return suAdapter.execute(command) } - else -> return Error.CantShowImePickerInBackground + else -> return KMError.CantShowImePickerInBackground } } - override suspend fun enableIme(imeId: String): Result<*> = enableImeWithoutUserInput(imeId).otherwise { + override suspend fun enableIme(imeId: String): KMResult<*> = enableImeWithoutUserInput(imeId).otherwise { try { val intent = Intent(Settings.ACTION_INPUT_METHOD_SETTINGS) intent.flags = Intent.FLAG_ACTIVITY_NO_HISTORY or Intent.FLAG_ACTIVITY_NEW_TASK @@ -190,11 +190,11 @@ class AndroidInputMethodAdapter @Inject constructor( ctx.startActivity(intent) Success(Unit) } catch (e: Exception) { - Error.CantFindImeSettings + KMError.CantFindImeSettings } } - private suspend fun enableImeWithoutUserInput(imeId: String): Result<*> { + private suspend fun enableImeWithoutUserInput(imeId: String): KMResult<*> { return getInfoByPackageName(buildConfigProvider.packageName).then { keyMapperImeInfo -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && imeId == keyMapperImeInfo.id) { serviceAdapter.send(AccessibilityServiceEvent.EnableInputMethod(keyMapperImeInfo.id)) @@ -204,7 +204,7 @@ class AndroidInputMethodAdapter @Inject constructor( } } - override suspend fun chooseImeWithoutUserInput(imeId: String): Result { + override suspend fun chooseImeWithoutUserInput(imeId: String): KMResult { getInfoById(imeId).onSuccess { if (!it.isEnabled) { return SystemError.ImeDisabled(it) @@ -232,7 +232,7 @@ class AndroidInputMethodAdapter @Inject constructor( } if (failed) { - return Error.FailedToChangeIme + return KMError.FailedToChangeIme } // wait for the ime to change and then return the info of the ime @@ -243,18 +243,18 @@ class AndroidInputMethodAdapter @Inject constructor( if (didImeChange != null) { return Success(didImeChange) } else { - return Error.FailedToChangeIme + return KMError.FailedToChangeIme } } - override fun getInfoById(imeId: String): Result { + override fun getInfoById(imeId: String): KMResult { val info = - getInputMethods().find { it.id == imeId } ?: return Error.InputMethodNotFound(imeId) + getInputMethods().find { it.id == imeId } ?: return KMError.InputMethodNotFound(imeId) return Success(info) } - override fun getInfoByPackageName(packageName: String): Result = getImeId(packageName).then { getInfoById(it) } + override fun getInfoByPackageName(packageName: String): KMResult = getImeId(packageName).then { getInfoById(it) } /** * Example: @@ -304,12 +304,12 @@ class AndroidInputMethodAdapter @Inject constructor( private fun getChosenImeId(): String = Settings.Secure.getString(ctx.contentResolver, Settings.Secure.DEFAULT_INPUT_METHOD) - private fun getImeId(packageName: String): Result { + private fun getImeId(packageName: String): KMResult { val imeId = inputMethodManager.inputMethodList.find { it.packageName == packageName }?.id return if (imeId == null) { - Error.InputMethodNotFound(packageName) + KMError.InputMethodNotFound(packageName) } else { Success(imeId) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt index 2dda7a9bf5..07ef2b30a2 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/inputmethod/InputMethodAdapter.kt @@ -1,19 +1,19 @@ package io.github.sds100.keymapper.system.inputmethod -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow interface InputMethodAdapter { val isUserInputRequiredToChangeIme: Flow - fun showImePicker(fromForeground: Boolean): Result<*> - suspend fun enableIme(imeId: String): Result<*> + fun showImePicker(fromForeground: Boolean): KMResult<*> + suspend fun enableIme(imeId: String): KMResult<*> - suspend fun chooseImeWithoutUserInput(imeId: String): Result + suspend fun chooseImeWithoutUserInput(imeId: String): KMResult - fun getInfoById(imeId: String): Result - fun getInfoByPackageName(packageName: String): Result + fun getInfoById(imeId: String): KMResult + fun getInfoByPackageName(packageName: String): KMResult /** * The last used input method is first. diff --git a/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt index d68262782f..ebb6d120d1 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/intents/IntentAdapter.kt @@ -3,8 +3,8 @@ package io.github.sds100.keymapper.system.intents import android.content.Context import android.content.Intent import dagger.hilt.android.qualifiers.ApplicationContext -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import javax.inject.Inject import javax.inject.Singleton @@ -17,7 +17,7 @@ class IntentAdapterImpl @Inject constructor(@ApplicationContext private val cont target: IntentTarget, uri: String, extras: List, - ): Result<*> { + ): KMResult<*> { val intent = Intent.parseUri(uri, 0) extras.forEach { e -> @@ -39,11 +39,11 @@ class IntentAdapterImpl @Inject constructor(@ApplicationContext private val cont } return Success(Unit) } catch (e: Exception) { - return Error.Exception(e) + return KMError.Exception(e) } } } interface IntentAdapter { - fun send(target: IntentTarget, uri: String, extras: List): Result<*> + fun send(target: IntentTarget, uri: String, extras: List): KMResult<*> } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt index 7df6c5fcc6..2674c3081f 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/lock/AndroidLockScreenAdapter.kt @@ -11,7 +11,7 @@ import androidx.annotation.RequiresApi import androidx.core.content.ContextCompat import androidx.core.content.getSystemService import dagger.hilt.android.qualifiers.ApplicationContext -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow @@ -75,7 +75,7 @@ class AndroidLockScreenAdapter @Inject constructor(@ApplicationContext private v override fun isLockedFlow(): Flow = isLockedFlow - override fun secureLockDevice(): Result<*> { + override fun secureLockDevice(): KMResult<*> { devicePolicyManager.lockNow() return Success(Unit) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt index 0f2374a6f2..2823fbe325 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/lock/LockScreenAdapter.kt @@ -2,12 +2,12 @@ package io.github.sds100.keymapper.system.lock import android.os.Build import androidx.annotation.RequiresApi -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import kotlinx.coroutines.flow.Flow interface LockScreenAdapter { - fun secureLockDevice(): Result<*> + fun secureLockDevice(): KMResult<*> @RequiresApi(Build.VERSION_CODES.LOLLIPOP_MR1) fun isLocked(): Boolean diff --git a/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt index ee7d119307..d764a2945e 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt @@ -12,8 +12,8 @@ import android.os.Build import android.view.KeyEvent import androidx.annotation.RequiresApi import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.volume.VolumeStream import kotlinx.coroutines.CoroutineScope @@ -72,23 +72,23 @@ class AndroidMediaAdapter @Inject constructor( } } - override fun fastForward(packageName: String?): Result<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_FAST_FORWARD, packageName) + override fun fastForward(packageName: String?): KMResult<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_FAST_FORWARD, packageName) - override fun rewind(packageName: String?): Result<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_REWIND, packageName) + override fun rewind(packageName: String?): KMResult<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_REWIND, packageName) - override fun play(packageName: String?): Result<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_PLAY, packageName) + override fun play(packageName: String?): KMResult<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_PLAY, packageName) - override fun pause(packageName: String?): Result<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_PAUSE, packageName) + override fun pause(packageName: String?): KMResult<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_PAUSE, packageName) - override fun playPause(packageName: String?): Result<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, packageName) + override fun playPause(packageName: String?): KMResult<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, packageName) - override fun previousTrack(packageName: String?): Result<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_PREVIOUS, packageName) + override fun previousTrack(packageName: String?): KMResult<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_PREVIOUS, packageName) - override fun nextTrack(packageName: String?): Result<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_NEXT, packageName) + override fun nextTrack(packageName: String?): KMResult<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_NEXT, packageName) - override fun stop(packageName: String?): Result<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_STOP, packageName) + override fun stop(packageName: String?): KMResult<*> = sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_STOP, packageName) - override fun stopFileMedia(): Result<*> { + override fun stopFileMedia(): KMResult<*> { synchronized(mediaPlayerLock) { mediaPlayer?.stop() mediaPlayer?.release() @@ -98,19 +98,19 @@ class AndroidMediaAdapter @Inject constructor( return Success(Unit) } - override fun stepForward(packageName: String?): Result<*> { + override fun stepForward(packageName: String?): KMResult<*> { return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_STEP_FORWARD, packageName) } else { - return Error.SdkVersionTooLow(Build.VERSION_CODES.M) + return KMError.SdkVersionTooLow(Build.VERSION_CODES.M) } } - override fun stepBackward(packageName: String?): Result<*> { + override fun stepBackward(packageName: String?): KMResult<*> { return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { sendMediaKeyEvent(KeyEvent.KEYCODE_MEDIA_STEP_BACKWARD, packageName) } else { - return Error.SdkVersionTooLow(Build.VERSION_CODES.M) + return KMError.SdkVersionTooLow(Build.VERSION_CODES.M) } } @@ -137,7 +137,7 @@ class AndroidMediaAdapter @Inject constructor( return audioVolumeControlStreams } - override fun playFile(uri: String, stream: VolumeStream): Result<*> { + override fun playFile(uri: String, stream: VolumeStream): KMResult<*> { try { synchronized(mediaPlayerLock) { mediaPlayer?.stop() @@ -173,9 +173,9 @@ class AndroidMediaAdapter @Inject constructor( return Success(Unit) } catch (e: FileNotFoundException) { - return Error.SourceFileNotFound(uri) + return KMError.SourceFileNotFound(uri) } catch (e: Exception) { - return Error.Exception(e) + return KMError.Exception(e) } } @@ -183,7 +183,7 @@ class AndroidMediaAdapter @Inject constructor( activeMediaSessions.update { mediaSessions } } - private fun sendMediaKeyEvent(keyCode: Int, packageName: String?): Result<*> { + private fun sendMediaKeyEvent(keyCode: Int, packageName: String?): KMResult<*> { if (packageName == null) { audioManager.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, keyCode)) audioManager.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_UP, keyCode)) diff --git a/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt index 032f20d5ed..79e16d53dc 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt @@ -2,7 +2,7 @@ package io.github.sds100.keymapper.system.media import android.os.Build import androidx.annotation.RequiresApi -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.system.volume.VolumeStream import kotlinx.coroutines.flow.Flow @@ -26,17 +26,17 @@ interface MediaAdapter { fun getActiveAudioVolumeStreams(): Set fun getActiveAudioVolumeStreamsFlow(): Flow> - fun fastForward(packageName: String? = null): Result<*> - fun rewind(packageName: String? = null): Result<*> - fun play(packageName: String? = null): Result<*> - fun pause(packageName: String? = null): Result<*> - fun playPause(packageName: String? = null): Result<*> - fun previousTrack(packageName: String? = null): Result<*> - fun nextTrack(packageName: String? = null): Result<*> - fun stop(packageName: String? = null): Result<*> - fun stepForward(packageName: String? = null): Result<*> - fun stepBackward(packageName: String? = null): Result<*> + fun fastForward(packageName: String? = null): KMResult<*> + fun rewind(packageName: String? = null): KMResult<*> + fun play(packageName: String? = null): KMResult<*> + fun pause(packageName: String? = null): KMResult<*> + fun playPause(packageName: String? = null): KMResult<*> + fun previousTrack(packageName: String? = null): KMResult<*> + fun nextTrack(packageName: String? = null): KMResult<*> + fun stop(packageName: String? = null): KMResult<*> + fun stepForward(packageName: String? = null): KMResult<*> + fun stepBackward(packageName: String? = null): KMResult<*> - fun playFile(uri: String, stream: VolumeStream): Result<*> - fun stopFileMedia(): Result<*> + fun playFile(uri: String, stream: VolumeStream): KMResult<*> + fun stopFileMedia(): KMResult<*> } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt index 773ff31161..8c05233836 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/network/AndroidNetworkAdapter.kt @@ -9,8 +9,8 @@ import android.os.Build import android.telephony.TelephonyManager import androidx.core.content.ContextCompat import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.root.SuAdapter import kotlinx.coroutines.Dispatchers @@ -87,7 +87,7 @@ class AndroidNetworkAdapter @Inject constructor( override fun isWifiEnabledFlow(): Flow = isWifiEnabled - override fun enableWifi(): Result<*> { + override fun enableWifi(): KMResult<*> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { return suAdapter.execute("svc wifi enable") } else { @@ -96,7 +96,7 @@ class AndroidNetworkAdapter @Inject constructor( } } - override fun disableWifi(): Result<*> { + override fun disableWifi(): KMResult<*> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { return suAdapter.execute("svc wifi disable") } else { @@ -113,9 +113,9 @@ class AndroidNetworkAdapter @Inject constructor( } } - override fun enableMobileData(): Result<*> = suAdapter.execute("svc data enable") + override fun enableMobileData(): KMResult<*> = suAdapter.execute("svc data enable") - override fun disableMobileData(): Result<*> = suAdapter.execute("svc data disable") + override fun disableMobileData(): KMResult<*> = suAdapter.execute("svc data disable") /** * @return Null on Android 10+ because there is no API to do this anymore. @@ -135,7 +135,7 @@ class AndroidNetworkAdapter @Inject constructor( url: String, body: String, authorizationHeader: String, - ): Result<*> { + ): KMResult<*> { try { val requestBody = when (method) { HttpMethod.HEAD -> Request.Builder().head() @@ -163,16 +163,16 @@ class AndroidNetworkAdapter @Inject constructor( Timber.d(response.toString()) if (!response.isSuccessful) { - return Error.UnknownIOError + return KMError.UnknownIOError } return Success(Unit) } } catch (e: IOException) { Timber.e(e) - return Error.UnknownIOError + return KMError.UnknownIOError } catch (e: IllegalArgumentException) { - return Error.MalformedUrl + return KMError.MalformedUrl } } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt index 54a6ee3905..d7a1f04a7c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/network/NetworkAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.network -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import kotlinx.coroutines.flow.Flow @@ -11,13 +11,13 @@ interface NetworkAdapter { fun isWifiEnabled(): Boolean fun isWifiEnabledFlow(): Flow - fun enableWifi(): Result<*> - fun disableWifi(): Result<*> + fun enableWifi(): KMResult<*> + fun disableWifi(): KMResult<*> fun isMobileDataEnabled(): Boolean - fun enableMobileData(): Result<*> - fun disableMobileData(): Result<*> + fun enableMobileData(): KMResult<*> + fun disableMobileData(): KMResult<*> fun getKnownWifiSSIDs(): List? @@ -26,5 +26,5 @@ interface NetworkAdapter { url: String, body: String, authorizationHeader: String, - ): Result<*> + ): KMResult<*> } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt index 747144fbda..0f11120f17 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/nfc/AndroidNfcAdapter.kt @@ -3,7 +3,7 @@ package io.github.sds100.keymapper.system.nfc import android.content.Context import android.nfc.NfcManager import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.system.root.SuAdapter import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject @@ -20,7 +20,7 @@ class AndroidNfcAdapter @Inject constructor( override fun isEnabled(): Boolean = nfcManager.defaultAdapter.isEnabled - override fun enable(): Result<*> = suAdapter.execute("svc nfc enable") + override fun enable(): KMResult<*> = suAdapter.execute("svc nfc enable") - override fun disable(): Result<*> = suAdapter.execute("svc nfc disable") + override fun disable(): KMResult<*> = suAdapter.execute("svc nfc disable") } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt index 31a9c84ace..e155ffd1e4 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/nfc/NfcAdapter.kt @@ -1,10 +1,10 @@ package io.github.sds100.keymapper.system.nfc -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult interface NfcAdapter { fun isEnabled(): Boolean - fun enable(): Result<*> - fun disable(): Result<*> + fun enable(): KMResult<*> + fun disable(): KMResult<*> } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt index 42940e09f1..92027920b2 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.notifications -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow @@ -25,7 +25,7 @@ interface NotificationReceiverAdapter { /** * Send an event to the service. */ - suspend fun send(event: NotificationServiceEvent): Result<*> + suspend fun send(event: NotificationServiceEvent): KMResult<*> /** * Send an event to the service asynchronously. This method diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapterImpl.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapterImpl.kt index 8a893f503b..401479513e 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapterImpl.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiverAdapterImpl.kt @@ -12,7 +12,7 @@ import android.provider.Settings import androidx.core.app.NotificationManagerCompat import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.withFlag import io.github.sds100.keymapper.system.JobSchedulerHelper @@ -62,7 +62,7 @@ class NotificationReceiverAdapterImpl @Inject constructor( } } - override suspend fun send(event: NotificationServiceEvent): Result<*> { + override suspend fun send(event: NotificationServiceEvent): KMResult<*> { if (isEnabled.value) { return SystemError.PermissionDenied(Permission.NOTIFICATION_LISTENER) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt index ec14c0aad5..61a23cea99 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/AndroidPermissionAdapter.kt @@ -17,8 +17,8 @@ import androidx.core.content.ContextCompat import androidx.core.content.getSystemService import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.common.BuildConfigProvider -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.getIdentifier import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess @@ -133,8 +133,8 @@ class AndroidPermissionAdapter @Inject constructor( coroutineScope.launch { _request.emit(permission) } } - override fun grant(permissionName: String): Result<*> { - val result: Result<*> + override fun grant(permissionName: String): KMResult<*> { + val result: KMResult<*> if (ContextCompat.checkSelfPermission( ctx, @@ -152,10 +152,10 @@ class AndroidPermissionAdapter @Inject constructor( if (ContextCompat.checkSelfPermission(ctx, permissionName) == PERMISSION_GRANTED) { success() } else { - Error.Exception(Exception("Failed to grant permission with Shizuku.")) + KMError.Exception(Exception("Failed to grant permission with Shizuku.")) } } catch (e: Exception) { - Error.Exception(e) + KMError.Exception(e) } } else if (isGranted(Permission.ROOT)) { suAdapter.execute( @@ -166,7 +166,7 @@ class AndroidPermissionAdapter @Inject constructor( result = success() } else { result = - Error.Exception(Exception("Failed to grant permission with root. Key Mapper may not actually have root permission.")) + KMError.Exception(Exception("Failed to grant permission with root. Key Mapper may not actually have root permission.")) } } else { result = SystemError.PermissionDenied(Permission.SHIZUKU) diff --git a/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt index c78b9dda75..62427cf3ce 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/permissions/PermissionAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.permissions -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import kotlinx.coroutines.flow.Flow @@ -18,5 +18,5 @@ interface PermissionAdapter { * Grant a permission automatically without requiring the user. * Requires root access or Shizuku. */ - fun grant(permissionName: String): Result<*> + fun grant(permissionName: String): KMResult<*> } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt index fa99dd4824..fd23ff5917 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/phone/AndroidPhoneAdapter.kt @@ -9,8 +9,8 @@ import android.telecom.TelecomManager import android.telephony.PhoneStateListener import android.telephony.TelephonyManager import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableSharedFlow @@ -57,7 +57,7 @@ class AndroidPhoneAdapter @Inject constructor( override fun getCallState(): CallState = callStateConverter(telephonyManager.callState) - override fun startCall(number: String): Result<*> { + override fun startCall(number: String): KMResult<*> { try { Intent(Intent.ACTION_CALL).apply { data = Uri.parse("tel:$number") @@ -67,7 +67,7 @@ class AndroidPhoneAdapter @Inject constructor( return Success(Unit) } catch (e: ActivityNotFoundException) { - return Error.NoAppToPhoneCall + return KMError.NoAppToPhoneCall } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt index 5955480900..83fe2973be 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/phone/PhoneAdapter.kt @@ -1,6 +1,6 @@ package io.github.sds100.keymapper.system.phone -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import kotlinx.coroutines.flow.Flow @@ -12,7 +12,7 @@ interface PhoneAdapter { * a security exception will be thrown. */ fun getCallState(): CallState - fun startCall(number: String): Result<*> + fun startCall(number: String): KMResult<*> fun answerCall() fun endCall() } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt index 65f1d7155a..136fae35bc 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/ringtones/RingtoneAdapter.kt @@ -6,8 +6,8 @@ import android.media.RingtoneManager import android.os.Build import androidx.core.net.toUri import dagger.hilt.android.qualifiers.ApplicationContext -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import javax.inject.Inject import javax.inject.Singleton @@ -25,11 +25,11 @@ class AndroidRingtoneAdapter @Inject constructor(@ApplicationContext private val private val lock = Any() private var playingRingtone: Ringtone? = null - override fun getLabel(uri: String): Result { + override fun getLabel(uri: String): KMResult { val ringtone = getRingtone(uri) if (ringtone == null) { - return Error.CantFindSoundFile + return KMError.CantFindSoundFile } return Success(ringtone.getTitle(ctx)) @@ -39,11 +39,11 @@ class AndroidRingtoneAdapter @Inject constructor(@ApplicationContext private val return getRingtone(uri) != null } - override fun play(uri: String): Result { + override fun play(uri: String): KMResult { val ringtone = getRingtone(uri) if (ringtone == null) { - return Error.CantFindSoundFile + return KMError.CantFindSoundFile } else { ringtoneManager.stopPreviousRingtone() @@ -76,8 +76,8 @@ class AndroidRingtoneAdapter @Inject constructor(@ApplicationContext private val } interface RingtoneAdapter { - fun getLabel(uri: String): Result + fun getLabel(uri: String): KMResult fun exists(uri: String): Boolean - fun play(uri: String): Result + fun play(uri: String): KMResult fun stopPlaying() } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt index 5c94c71c48..081f1deafb 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/root/SuAdapter.kt @@ -1,12 +1,11 @@ package io.github.sds100.keymapper.system.root -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository -import io.github.sds100.keymapper.system.Shell import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.shell.ShellAdapter @@ -41,7 +40,7 @@ class SuAdapterImpl @Inject constructor( return true } - override fun execute(command: String, block: Boolean): Result<*> { + override fun execute(command: String, block: Boolean): KMResult<*> { if (!isGranted.firstBlocking()) { return SystemError.PermissionDenied(Permission.ROOT) } @@ -63,11 +62,11 @@ class SuAdapterImpl @Inject constructor( return Success(Unit) } catch (e: Exception) { - return Error.Exception(e) + return KMError.Exception(e) } } - override fun getCommandOutput(command: String): Result { + override fun getCommandOutput(command: String): KMResult { if (!isGranted.firstBlocking()) { return SystemError.PermissionDenied(Permission.ROOT) } @@ -76,7 +75,7 @@ class SuAdapterImpl @Inject constructor( val inputStream = shell.getShellCommandStdOut("su", "-c", command) return Success(inputStream) } catch (e: IOException) { - return Error.UnknownIOError + return KMError.UnknownIOError } } } @@ -88,6 +87,6 @@ interface SuAdapter { * @return whether root permission was granted successfully */ fun requestPermission(): Boolean - fun execute(command: String, block: Boolean = false): Result<*> - fun getCommandOutput(command: String): Result + fun execute(command: String, block: Boolean = false): KMResult<*> + fun getCommandOutput(command: String): KMResult } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt index fb00020ac9..f22b677ec6 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/shell/ShellAdapter.kt @@ -1,10 +1,10 @@ package io.github.sds100.keymapper.system.shell -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult import java.io.InputStream interface ShellAdapter { fun run(vararg command: String, waitFor: Boolean = false): Boolean - fun execute(command: String): Result<*> + fun execute(command: String): KMResult<*> fun getShellCommandStdOut(vararg command: String): InputStream } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt index c649cfc587..6c29a4cb36 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/url/AndroidOpenUrlAdapter.kt @@ -4,7 +4,7 @@ import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult @Singleton class AndroidOpenUrlAdapter @Inject constructor( @@ -13,5 +13,5 @@ class AndroidOpenUrlAdapter @Inject constructor( private val ctx = context.applicationContext - override fun openUrl(url: String): Result<*> = UrlUtils.openUrl(ctx, url) + override fun openUrl(url: String): KMResult<*> = UrlUtils.openUrl(ctx, url) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt index f3380f1309..3fa4ec3c2e 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/url/OpenUrlAdapter.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.system.url -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult interface OpenUrlAdapter { - fun openUrl(url: String): Result<*> + fun openUrl(url: String): KMResult<*> } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt b/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt index 708e747095..68a5e58afe 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/url/UrlUtils.kt @@ -4,14 +4,14 @@ import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import androidx.core.net.toUri -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.success object UrlUtils { - fun openUrl(ctx: Context, url: String): Result<*> { + fun openUrl(ctx: Context, url: String): KMResult<*> { Intent(Intent.ACTION_VIEW, url.toUri()).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK @@ -19,7 +19,7 @@ object UrlUtils { ctx.startActivity(this) return success() } catch (e: ActivityNotFoundException) { - return Error.NoAppToOpenUrl + return KMError.NoAppToOpenUrl } } } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt index 5b0caf1819..e0b3c50c73 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/volume/AndroidVolumeAdapter.kt @@ -6,8 +6,8 @@ import android.media.AudioManager import android.os.Build import androidx.annotation.RequiresApi import androidx.core.content.getSystemService -import io.github.sds100.keymapper.common.utils.Error -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.system.SystemError @@ -33,50 +33,50 @@ class AndroidVolumeAdapter @Inject constructor( else -> throw Exception("Don't know how to convert this ringer moder ${audioManager.ringerMode}") } - override fun raiseVolume(stream: VolumeStream?, showVolumeUi: Boolean): Result<*> = + override fun raiseVolume(stream: VolumeStream?, showVolumeUi: Boolean): KMResult<*> = stream.convert().then { streamType -> adjustVolume(AudioManager.ADJUST_RAISE, showVolumeUi, streamType) } - override fun lowerVolume(stream: VolumeStream?, showVolumeUi: Boolean): Result<*> = + override fun lowerVolume(stream: VolumeStream?, showVolumeUi: Boolean): KMResult<*> = stream.convert().then { streamType -> adjustVolume(AudioManager.ADJUST_LOWER, showVolumeUi, streamType) } - override fun muteVolume(stream: VolumeStream?, showVolumeUi: Boolean): Result<*> { + override fun muteVolume(stream: VolumeStream?, showVolumeUi: Boolean): KMResult<*> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { return stream.convert().then { streamType -> adjustVolume(AudioManager.ADJUST_MUTE, showVolumeUi, streamType) } } else { - return Error.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) + return KMError.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) } } - override fun unmuteVolume(stream: VolumeStream?, showVolumeUi: Boolean): Result<*> { + override fun unmuteVolume(stream: VolumeStream?, showVolumeUi: Boolean): KMResult<*> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { return stream.convert().then { streamType -> adjustVolume(AudioManager.ADJUST_UNMUTE, showVolumeUi, streamType) } } else { - return Error.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) + return KMError.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) } } - override fun toggleMuteVolume(stream: VolumeStream?, showVolumeUi: Boolean): Result<*> { + override fun toggleMuteVolume(stream: VolumeStream?, showVolumeUi: Boolean): KMResult<*> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { return stream.convert().then { streamType -> adjustVolume(AudioManager.ADJUST_TOGGLE_MUTE, showVolumeUi, streamType) } } else { - return Error.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) + return KMError.SdkVersionTooLow(minSdk = Build.VERSION_CODES.M) } } - override fun showVolumeUi(): Result<*> = + override fun showVolumeUi(): KMResult<*> = adjustVolume(AudioManager.ADJUST_SAME, showVolumeUi = true) - override fun setRingerMode(mode: RingerMode): Result<*> { + override fun setRingerMode(mode: RingerMode): KMResult<*> { try { val sdkMode = when (mode) { RingerMode.NORMAL -> AudioManager.RINGER_MODE_NORMAL @@ -92,22 +92,22 @@ class AndroidVolumeAdapter @Inject constructor( } } - override fun enableDndMode(dndMode: DndMode): Result<*> { + override fun enableDndMode(dndMode: DndMode): KMResult<*> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { notificationManager.setInterruptionFilter(dndMode.convert()) return Success(Unit) } - return Error.SdkVersionTooLow(Build.VERSION_CODES.M) + return KMError.SdkVersionTooLow(Build.VERSION_CODES.M) } - override fun disableDndMode(): Result<*> { + override fun disableDndMode(): KMResult<*> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { notificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_ALL) return Success(Unit) } - return Error.SdkVersionTooLow(Build.VERSION_CODES.M) + return KMError.SdkVersionTooLow(Build.VERSION_CODES.M) } override fun isDndEnabled(): Boolean = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { @@ -123,7 +123,7 @@ class AndroidVolumeAdapter @Inject constructor( DndMode.NONE -> NotificationManager.INTERRUPTION_FILTER_NONE } - private fun VolumeStream?.convert(): Result = when (this) { + private fun VolumeStream?.convert(): KMResult = when (this) { VolumeStream.ALARM -> Success(AudioManager.STREAM_ALARM) VolumeStream.DTMF -> Success(AudioManager.STREAM_DTMF) VolumeStream.MUSIC -> Success(AudioManager.STREAM_MUSIC) @@ -135,7 +135,7 @@ class AndroidVolumeAdapter @Inject constructor( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { Success(AudioManager.STREAM_ACCESSIBILITY) } else { - Error.SdkVersionTooLow(minSdk = Build.VERSION_CODES.O) + KMError.SdkVersionTooLow(minSdk = Build.VERSION_CODES.O) } null -> Success(null) @@ -145,7 +145,7 @@ class AndroidVolumeAdapter @Inject constructor( adjustMode: Int, showVolumeUi: Boolean = false, streamType: Int? = null, - ): Result<*> { + ): KMResult<*> { try { val flag = if (showVolumeUi) { AudioManager.FLAG_SHOW_UI diff --git a/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt b/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt index cebe0611f4..2c71fd9020 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/volume/VolumeAdapter.kt @@ -1,20 +1,20 @@ package io.github.sds100.keymapper.system.volume -import io.github.sds100.keymapper.common.utils.Result +import io.github.sds100.keymapper.common.utils.KMResult interface VolumeAdapter { val ringerMode: RingerMode - fun raiseVolume(stream: VolumeStream? = null, showVolumeUi: Boolean): Result<*> - fun lowerVolume(stream: VolumeStream? = null, showVolumeUi: Boolean): Result<*> - fun muteVolume(stream: VolumeStream? = null, showVolumeUi: Boolean): Result<*> - fun unmuteVolume(stream: VolumeStream? = null, showVolumeUi: Boolean): Result<*> - fun toggleMuteVolume(stream: VolumeStream? = null, showVolumeUi: Boolean): Result<*> - fun showVolumeUi(): Result<*> - fun setRingerMode(mode: RingerMode): Result<*> + fun raiseVolume(stream: VolumeStream? = null, showVolumeUi: Boolean): KMResult<*> + fun lowerVolume(stream: VolumeStream? = null, showVolumeUi: Boolean): KMResult<*> + fun muteVolume(stream: VolumeStream? = null, showVolumeUi: Boolean): KMResult<*> + fun unmuteVolume(stream: VolumeStream? = null, showVolumeUi: Boolean): KMResult<*> + fun toggleMuteVolume(stream: VolumeStream? = null, showVolumeUi: Boolean): KMResult<*> + fun showVolumeUi(): KMResult<*> + fun setRingerMode(mode: RingerMode): KMResult<*> fun isDndEnabled(): Boolean - fun enableDndMode(dndMode: DndMode): Result<*> - fun disableDndMode(): Result<*> + fun enableDndMode(dndMode: DndMode): KMResult<*> + fun disableDndMode(): KMResult<*> } From 5ca646d93bc5227d2918858e1b5de07d12b6648a Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 14:38:54 +0200 Subject: [PATCH 61/71] #1711 complete more TODOs --- .../java/io/github/sds100/keymapper/common/utils/KMResult.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/KMResult.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/KMResult.kt index a634446e3e..ac7493b303 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/utils/KMResult.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/KMResult.kt @@ -8,8 +8,6 @@ sealed class KMResult data class Success(val value: T) : KMResult() -// TODO move all these errors to their respective packages - abstract class KMError : KMResult() { data class Exception(val exception: java.lang.Exception) : KMError() data class SystemFeatureNotSupported(val feature: String) : KMError() From 65cff43069c3f15387274cdd651c1ae0e3ee8962 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 15:08:49 +0200 Subject: [PATCH 62/71] #1711 inject dialog provider rather than instantiating it in each view model --- .../java/io/github/sds100/keymapper/MainFragment.kt | 4 ++-- .../sds100/keymapper/base/ActivityViewModel.kt | 11 ++--------- .../sds100/keymapper/base/BaseSingletonHiltModule.kt | 2 +- .../base/actions/keyevent/ChooseKeyCodeViewModel.kt | 4 +--- .../PinchPickDisplayCoordinateFragment.kt | 1 - .../PinchPickDisplayCoordinateViewModel.kt | 12 ++---------- .../base/actions/sound/ChooseSoundFileFragment.kt | 1 - .../base/actions/sound/ChooseSoundFileViewModel.kt | 3 ++- .../SwipePickDisplayCoordinateFragment.kt | 2 -- .../SwipePickDisplayCoordinateViewModel.kt | 11 ++--------- .../tapscreen/PickDisplayCoordinateFragment.kt | 2 -- .../tapscreen/PickDisplayCoordinateViewModel.kt | 12 ++---------- .../base/keymaps/ConfigKeyMapOptionsViewModel.kt | 3 ++- .../sds100/keymapper/base/logging/LogFragment.kt | 2 -- .../sds100/keymapper/base/logging/LogViewModel.kt | 3 ++- .../keymapper/base/settings/SettingsViewModel.kt | 3 ++- .../base/system/apps/ChooseAppShortcutFragment.kt | 2 -- .../base/system/apps/ChooseAppShortcutViewModel.kt | 5 +++-- .../bluetooth/ChooseBluetoothDeviceViewModel.kt | 5 +++-- .../base/system/intents/ConfigIntentFragment.kt | 2 -- .../base/system/intents/ConfigIntentViewModel.kt | 5 +++-- .../base/trigger/BaseConfigTriggerViewModel.kt | 1 + 22 files changed, 30 insertions(+), 66 deletions(-) diff --git a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt index 00e4c432ad..9009d0c308 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt @@ -48,7 +48,7 @@ class MainFragment : Fragment() { lateinit var navigationProvider: NavigationProviderImpl @Inject - lateinit var popupViewModel: DialogProviderImpl + lateinit var dialogProvider: DialogProviderImpl override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -92,7 +92,7 @@ class MainFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - popupViewModel.showDialogs(this, view) + dialogProvider.showDialogs(this, view) } private fun NavGraphBuilder.composableDestinations() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt index 532318007e..1029f3a968 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt @@ -16,9 +16,10 @@ import javax.inject.Inject @HiltViewModel class ActivityViewModel @Inject constructor( resourceProvider: ResourceProvider, + dialogProvider: DialogProvider ) : ViewModel(), ResourceProvider by resourceProvider, - DialogProvider by DialogProviderImpl(), + DialogProvider by dialogProvider, NavigationProvider by NavigationProviderImpl() { var handledActivityLaunchIntent: Boolean = false @@ -32,12 +33,4 @@ class ActivityViewModel @Inject constructor( ) } } - - @Suppress("UNCHECKED_CAST") - class Factory( - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = ActivityViewModel(resourceProvider) as T - } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt index 0d9ad3d27b..55a0ffabfe 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/BaseSingletonHiltModule.kt @@ -133,5 +133,5 @@ abstract class BaseSingletonHiltModule { @Binds @Singleton - abstract fun bindPopupViewModel(impl: DialogProviderImpl): DialogProvider + abstract fun bindDialogProvider(impl: DialogProviderImpl): DialogProvider } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt index d444a0daf5..63acf79c4f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -24,9 +24,7 @@ import kotlinx.coroutines.withContext import javax.inject.Inject @HiltViewModel -class ChooseKeyCodeViewModel @Inject constructor() : - ViewModel(), - DialogProvider by DialogProviderImpl() { +class ChooseKeyCodeViewModel @Inject constructor() : ViewModel() { val searchQuery = MutableStateFlow(null) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt index 3ef5d2d828..9d330ca967 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt @@ -111,7 +111,6 @@ class PinchPickDisplayCoordinateFragment : Fragment() { android.R.layout.simple_spinner_dropdown_item, pinchTypesDisplayValues, ) - viewModel.showDialogs(this, binding) requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { findNavController().navigateUp() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt index 0bc87c2b72..27aa69395a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt @@ -33,9 +33,10 @@ import kotlin.math.roundToInt @HiltViewModel class PinchPickDisplayCoordinateViewModel @Inject constructor( resourceProvider: ResourceProvider, + dialogProvider: DialogProvider ) : ViewModel(), ResourceProvider by resourceProvider, - DialogProvider by DialogProviderImpl() { + DialogProvider by dialogProvider { private val pinchTypes = arrayOf(PinchScreenType.PINCH_IN.name, PinchScreenType.PINCH_OUT.name) @@ -273,13 +274,4 @@ class PinchPickDisplayCoordinateViewModel @Inject constructor( super.onCleared() } - - @Suppress("UNCHECKED_CAST") - class Factory( - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = - PinchPickDisplayCoordinateViewModel(resourceProvider) as T - } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt index 575f3bb5ba..d1576d87f5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt @@ -93,7 +93,6 @@ class ChooseSoundFileFragment : Fragment() { } binding.viewModel = viewModel - viewModel.showDialogs(this, binding) viewLifecycleOwner.launchRepeatOnLifecycle(Lifecycle.State.RESUMED) { viewModel.chooseSoundFile.collectLatest { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt index e83628db58..3068953b97 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt @@ -29,9 +29,10 @@ import javax.inject.Inject @HiltViewModel class ChooseSoundFileViewModel @Inject constructor( resourceProvider: ResourceProvider, + dialogProvider: DialogProvider, private val useCase: ChooseSoundFileUseCase, ) : ViewModel(), - DialogProvider by DialogProviderImpl(), + DialogProvider by dialogProvider, ResourceProvider by resourceProvider { private val _chooseSoundFile = MutableSharedFlow() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt index e06fee3bd6..bb44ce8969 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt @@ -97,8 +97,6 @@ class SwipePickDisplayCoordinateFragment : Fragment() { binding.viewModel = viewModel - viewModel.showDialogs(this, binding) - requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { findNavController().navigateUp() } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt index 70bc34c563..b893932b9a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt @@ -35,9 +35,10 @@ enum class ScreenshotTouchType { @HiltViewModel class SwipePickDisplayCoordinateViewModel @Inject constructor( resourceProvider: ResourceProvider, + dialogProvider: DialogProvider ) : ViewModel(), ResourceProvider by resourceProvider, - DialogProvider by DialogProviderImpl() { + DialogProvider by dialogProvider { val screenshotTouchTypeStart = ScreenshotTouchType.START val screenshotTouchTypeEnd = ScreenshotTouchType.END @@ -275,12 +276,4 @@ class SwipePickDisplayCoordinateViewModel @Inject constructor( super.onCleared() } - - @Suppress("UNCHECKED_CAST") - class Factory( - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = SwipePickDisplayCoordinateViewModel(resourceProvider) as T - } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt index 2f5bc5fac7..7cf7a9e19d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt @@ -97,8 +97,6 @@ class PickDisplayCoordinateFragment : Fragment() { binding.viewModel = viewModel - viewModel.showDialogs(this, binding) - requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { findNavController().navigateUp() } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt index 166c29883c..c2383bf4a5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt @@ -29,9 +29,10 @@ import kotlin.math.roundToInt @HiltViewModel class PickDisplayCoordinateViewModel @Inject constructor( resourceProvider: ResourceProvider, + dialogProvider: DialogProvider ) : ViewModel(), ResourceProvider by resourceProvider, - DialogProvider by DialogProviderImpl() { + DialogProvider by dialogProvider { private val x = MutableStateFlow(null) private val y = MutableStateFlow(null) @@ -136,13 +137,4 @@ class PickDisplayCoordinateViewModel @Inject constructor( super.onCleared() } - - @Suppress("UNCHECKED_CAST") - class Factory( - private val resourceProvider: ResourceProvider, - ) : ViewModelProvider.NewInstanceFactory() { - - override fun create(modelClass: Class): T = - PickDisplayCoordinateViewModel(resourceProvider) as T - } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt index e09ab94465..1d14b26611 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt @@ -29,9 +29,10 @@ class ConfigKeyMapOptionsViewModel( private val config: ConfigKeyMapUseCase, private val displayUseCase: DisplayKeyMapUseCase, private val createKeyMapShortcut: CreateKeyMapShortcutUseCase, + private val dialogProvider: DialogProvider, resourceProvider: ResourceProvider, ) : ResourceProvider by resourceProvider, - DialogProvider by DialogProviderImpl(), + DialogProvider by dialogProvider, KeyMapOptionsCallback { private val actionUiHelper = ActionUiHelper(displayUseCase, resourceProvider) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt index 80e97e3928..129ead1669 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt @@ -56,8 +56,6 @@ class LogFragment : SimpleRecyclerViewFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - viewModel.showDialogs(this, binding) - getBottomAppBar(binding)?.setOnMenuItemClickListener { menuItem -> viewModel.onMenuItemClick(menuItem.itemId) true diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt index ded3b3028d..2cfb2ce562 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt @@ -37,8 +37,9 @@ import javax.inject.Inject class LogViewModel @Inject constructor( private val useCase: DisplayLogUseCase, resourceProvider: ResourceProvider, + dialogProvider: DialogProvider ) : ViewModel(), - DialogProvider by DialogProviderImpl(), + DialogProvider by dialogProvider, ResourceProvider by resourceProvider { private val multiSelectProvider: MultiSelectProvider = MultiSelectProvider() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt index dd6c2a6caf..708e015054 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt @@ -30,9 +30,10 @@ import javax.inject.Inject class SettingsViewModel @Inject constructor( private val useCase: ConfigSettingsUseCase, private val resourceProvider: ResourceProvider, + dialogProvider: DialogProvider, val sharedPrefsDataStoreWrapper: SharedPrefsDataStoreWrapper, ) : ViewModel(), - DialogProvider by DialogProviderImpl(), + DialogProvider by dialogProvider, ResourceProvider by resourceProvider { val automaticBackupLocation = useCase.automaticBackupLocation diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt index 4e3094aec4..5431e3a513 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt @@ -61,8 +61,6 @@ class ChooseAppShortcutFragment : SimpleRecyclerViewFragment(null) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt index ba938380e1..c117824e73 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt @@ -25,10 +25,11 @@ import javax.inject.Inject @HiltViewModel class ChooseBluetoothDeviceViewModel @Inject constructor( private val useCase: ChooseBluetoothDeviceUseCase, - private val resourceProvider: ResourceProvider + private val resourceProvider: ResourceProvider, + dialogProvider: DialogProvider ) : ViewModel(), ResourceProvider by resourceProvider, - DialogProvider by DialogProviderImpl() { + DialogProvider by dialogProvider { private val _caption = MutableStateFlow(null) val caption: StateFlow = _caption diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt index 5dcf82f60a..476486bde4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt @@ -85,8 +85,6 @@ class ConfigIntentFragment : Fragment() { binding.viewModel = viewModel - viewModel.showDialogs(this, binding) - requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { findNavController().navigateUp() } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt index 3c824ff592..eac77bd1a9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt @@ -63,10 +63,11 @@ import javax.inject.Inject @HiltViewModel class ConfigIntentViewModel @Inject constructor( - private val resourceProvider: ResourceProvider + private val resourceProvider: ResourceProvider, + dialogProvider: DialogProvider ) : ViewModel(), ResourceProvider by resourceProvider, - DialogProvider by DialogProviderImpl(), + DialogProvider by dialogProvider, NavigationProvider by NavigationProviderImpl() { companion object { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index 49bd1f74c4..5c5b01acc5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -88,6 +88,7 @@ abstract class BaseConfigTriggerViewModel( config, displayKeyMap, createKeyMapShortcut, + dialogProvider, resourceProvider, ) From 6b92f16f4395cfcea91ad8b743a9a25d098c0420 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 15:14:02 +0200 Subject: [PATCH 63/71] #1711 only show dialogs once --- .../java/io/github/sds100/keymapper/MainActivity.kt | 11 ++++++++--- .../java/io/github/sds100/keymapper/MainFragment.kt | 7 ------- .../keymapper/base/settings/BaseSettingsFragment.kt | 3 --- .../base/system/intents/ConfigIntentFragment.kt | 1 - 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt index da4246204c..d48551a3dc 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainActivity.kt @@ -6,13 +6,18 @@ import androidx.navigation.fragment.FragmentNavigator import androidx.navigation.fragment.NavHostFragment import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.BaseMainActivity -import io.github.sds100.keymapper.base.utils.ui.showDialogs -import io.github.sds100.keymapper.base.databinding.ActivityMainBinding import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.databinding.ActivityMainBinding +import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.showDialogs +import javax.inject.Inject @AndroidEntryPoint class MainActivity : BaseMainActivity() { + @Inject + lateinit var dialogProvider: DialogProvider + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -33,6 +38,6 @@ class MainActivity : BaseMainActivity() { setStartDestination(R.id.home_fragment) } - viewModel.showDialogs(this, binding.coordinatorLayout) + dialogProvider.showDialogs(this, binding.coordinatorLayout) } } diff --git a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt index 9009d0c308..ccd1e61eee 100644 --- a/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt +++ b/app/src/main/java/io/github/sds100/keymapper/MainFragment.kt @@ -35,7 +35,6 @@ import io.github.sds100.keymapper.base.utils.navigation.SetupNavigation import io.github.sds100.keymapper.base.utils.navigation.handleRouteArgs import io.github.sds100.keymapper.base.utils.navigation.setupFragmentNavigation import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl -import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.home.HomeViewModel import io.github.sds100.keymapper.keymaps.ConfigKeyMapScreen import io.github.sds100.keymapper.keymaps.ConfigKeyMapViewModel @@ -89,12 +88,6 @@ class MainFragment : Fragment() { } } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - dialogProvider.showDialogs(this, view) - } - private fun NavGraphBuilder.composableDestinations() { composable { val snackbarState = remember { SnackbarHostState() } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt index 79c6b34c2b..8bdfdbcbec 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/BaseSettingsFragment.kt @@ -12,7 +12,6 @@ import androidx.preference.PreferenceFragmentCompat import com.google.android.material.bottomappbar.BottomAppBar import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.system.url.UrlUtils @@ -53,8 +52,6 @@ abstract class BaseSettingsFragment : PreferenceFragmentCompat() { } } } - - viewModel.showDialogs(this, view) } private fun onBackPressed() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt index 476486bde4..d55d39aa69 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentFragment.kt @@ -25,7 +25,6 @@ import io.github.sds100.keymapper.base.intentExtraBool import io.github.sds100.keymapper.base.intentExtraGeneric import io.github.sds100.keymapper.base.utils.navigation.setupFragmentNavigation import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.system.intents.BoolIntentExtraListItem import io.github.sds100.keymapper.system.intents.GenericIntentExtraListItem import io.github.sds100.keymapper.system.intents.IntentExtraListItem From 79fbc4636afb4cc830593abc81c9599c578ac8bd Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 15:14:32 +0200 Subject: [PATCH 64/71] #1711 only show dialogs once --- .../keymapper/base/backup/RestoreKeyMapsActivity.kt | 2 +- .../keymapper/base/constraints/ConstraintListItem.kt | 8 ++++---- .../keymapper/base/constraints/ConstraintListItemModel.kt | 2 +- .../base/keymaps/CreateKeyMapShortcutViewModel.kt | 6 +++--- .../keymapper/base/sorting/SortBottomSheetContent.kt | 2 +- .../sds100/keymapper/base/utils/ui/SnackBarUtils.kt | 2 +- .../sds100/keymapper/base/utils/ui/ViewModelHelper.kt | 6 +++--- .../io/github/sds100/keymapper/base/BackupManagerTest.kt | 2 +- .../sds100/keymapper/base/ConfigKeyMapUseCaseTest.kt | 4 ++-- .../system/notifications/NotificationReceiver.kt | 4 ---- 10 files changed, 17 insertions(+), 21 deletions(-) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt index b576803e2d..d15e1970b4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsActivity.kt @@ -59,7 +59,7 @@ class RestoreKeyMapsActivity : ComponentActivity() { else -> "" } - val text = when (val state = state) { + val text = when (state) { is ImportExportState.ConfirmImport -> stringResource(R.string.home_importing_dialog_text) else -> null } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt index 614c092ce9..51d88a1ade 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItem.kt @@ -35,13 +35,13 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.drawable @Composable fun ConstraintListItem( modifier: Modifier = Modifier, - model: io.github.sds100.keymapper.base.constraints.ConstraintListItemModel, + model: ConstraintListItemModel, onRemoveClick: () -> Unit = {}, onFixClick: () -> Unit = {}, ) { @@ -178,7 +178,7 @@ private fun TextColumn( @Composable private fun VectorPreview() { ConstraintListItem( - model = io.github.sds100.keymapper.base.constraints.ConstraintListItemModel( + model = ConstraintListItemModel( id = "id", icon = ComposeIconInfo.Vector(Icons.Outlined.ClearAll), constraintModeLink = ConstraintMode.AND, @@ -195,7 +195,7 @@ private fun DrawablePreview() { val drawable = LocalContext.current.drawable(R.mipmap.ic_launcher_round) ConstraintListItem( - model = io.github.sds100.keymapper.base.constraints.ConstraintListItemModel( + model = ConstraintListItemModel( id = "id", text = "Dismiss most recent notification", error = null, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt index ac7876fb24..39f2ca17a2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintListItemModel.kt @@ -8,7 +8,7 @@ data class ConstraintListItemModel( /** * Null if no link should be shown between the items. */ - val constraintModeLink: io.github.sds100.keymapper.base.constraints.ConstraintMode?, + val constraintModeLink: ConstraintMode?, val text: String, val error: String? = null, val isErrorFixable: Boolean = true, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt index cef7613565..c308cb90ea 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt @@ -17,11 +17,11 @@ import io.github.sds100.keymapper.base.constraints.ConstraintUiHelper import io.github.sds100.keymapper.base.groups.GroupListItemModel import io.github.sds100.keymapper.base.trigger.KeyMapListItemModel import io.github.sds100.keymapper.base.trigger.TriggerErrorSnapshot -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.mapData import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.TintType import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.mapData import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asSharedFlow @@ -165,7 +165,7 @@ class CreateKeyMapShortcutViewModel @Inject constructor( val keyMap = keyMapState.data - val key = "create_launcher_shortcut" + "create_launcher_shortcut" val defaultShortcutName: String val icon: Drawable? diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt index e175f72567..682ce64c18 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt @@ -180,7 +180,7 @@ private fun SortBottomSheetContent( ) { // Use fully qualified name due to quirky overload resolution. The compiler will // otherwise tell you to use it in a column or row scope. - androidx.compose.animation.AnimatedVisibility( + AnimatedVisibility( modifier = Modifier.align(Alignment.CenterStart), visible = !showHelp, enter = fadeIn(), diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt index 4ebf042077..f529e2b017 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SnackBarUtils.kt @@ -21,7 +21,7 @@ object SnackBarUtils { Snackbar.LENGTH_SHORT } - val snackBar = Snackbar.make(view, text, duration) + Snackbar.make(view, text, duration) .setAnchorView(R.id.fab) .setAction(actionText, { if (!continuation.isCompleted) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt index fb131bd140..05151edca9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt @@ -1,11 +1,11 @@ package io.github.sds100.keymapper.base.utils.ui import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.utils.getFullMessage +import io.github.sds100.keymapper.base.utils.isFixable import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission -import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.base.utils.isFixable object ViewModelHelper { @@ -165,7 +165,7 @@ object ViewModelHelper { val dialogResponse = dialogProvider.showDialog("fix_dnd_trigger_error", dialog) if (dialogResponse == DialogResponse.POSITIVE) { - val error = SystemError.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) + SystemError.PermissionDenied(Permission.ACCESS_NOTIFICATION_POLICY) fixError.invoke() } else if (dialogResponse == DialogResponse.NEUTRAL) { neverShowDndTriggerErrorAgain.invoke() diff --git a/base/src/test/java/io/github/sds100/keymapper/base/BackupManagerTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/BackupManagerTest.kt index 5d38528b8b..6541b1a811 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/BackupManagerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/BackupManagerTest.kt @@ -146,7 +146,7 @@ class BackupManagerTest { lastOpenedDate = 0L, ) - val parentGroup2 = GroupEntity( + GroupEntity( uid = "parent_group_2_uid", name = "parent_group_2_name", parentUid = null, diff --git a/base/src/test/java/io/github/sds100/keymapper/base/ConfigKeyMapUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/ConfigKeyMapUseCaseTest.kt index fb48253648..3d57377e3d 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/ConfigKeyMapUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/ConfigKeyMapUseCaseTest.kt @@ -233,7 +233,7 @@ class ConfigKeyMapUseCaseTest { assertThat(trigger.keys, hasSize(2)) assertThat( trigger.keys[0], - instanceOf(_root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey::class.java), + instanceOf(io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey::class.java), ) assertThat(trigger.keys[1], instanceOf(AssistantTriggerKey::class.java)) } @@ -255,7 +255,7 @@ class ConfigKeyMapUseCaseTest { assertThat(trigger.keys, hasSize(2)) assertThat( trigger.keys[0], - instanceOf(_root_ide_package_.io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey::class.java), + instanceOf(io.github.sds100.keymapper.base.trigger.KeyCodeTriggerKey::class.java), ) assertThat(trigger.keys[1], instanceOf(AssistantTriggerKey::class.java)) } diff --git a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt index 1b21665d7d..6d8e80bc5c 100644 --- a/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt +++ b/system/src/main/java/io/github/sds100/keymapper/system/notifications/NotificationReceiver.kt @@ -1,7 +1,6 @@ package io.github.sds100.keymapper.system.notifications import android.content.ComponentName -import android.content.Intent import android.media.session.MediaSessionManager import android.service.notification.NotificationListenerService import android.service.notification.StatusBarNotification @@ -79,9 +78,6 @@ class NotificationReceiver : NotificationListenerService(), LifecycleOwner { } } - override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int = - super.onStartCommand(intent, flags, startId) - override fun onListenerConnected() { super.onListenerConnected() From 3ad3ab8cc4103ee86acee05c8a6bfa8be9db07f4 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 19:39:15 +0200 Subject: [PATCH 65/71] #1711 suppress warning for fully qualified name in SortBottomSheetContent.kt --- .../sds100/keymapper/base/sorting/SortBottomSheetContent.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt index 682ce64c18..066a14a68d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortBottomSheetContent.kt @@ -180,7 +180,8 @@ private fun SortBottomSheetContent( ) { // Use fully qualified name due to quirky overload resolution. The compiler will // otherwise tell you to use it in a column or row scope. - AnimatedVisibility( + @Suppress("RemoveRedundantQualifierName") + androidx.compose.animation.AnimatedVisibility( modifier = Modifier.align(Alignment.CenterStart), visible = !showHelp, enter = fadeIn(), From aa8f3e118121ad4b3762d393e647b1cc272c379b Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 19:52:16 +0200 Subject: [PATCH 66/71] #1711 fix path to strings.xml in crowdin.yaml --- crowdin.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crowdin.yaml b/crowdin.yaml index 4aac34d394..3551026c2e 100644 --- a/crowdin.yaml +++ b/crowdin.yaml @@ -5,8 +5,8 @@ api_token_env: "CROWDIN_PERSONAL_TOKEN" preserve_hierarchy: true files: - - source: /app/src/main/res/values/strings.xml - translation: /app/src/main/res/values-%two_letters_code%/strings.xml + - source: /base/src/main/res/values/strings.xml + translation: /base/src/main/res/values-%two_letters_code%/strings.xml - source: /fastlane/metadata/android/en-US/full_description.txt translation: /fastlane/metadata/android/%locale_with_underscore%/full_description.txt - source: /fastlane/metadata/android/en-US/short_description.txt From a8dc20333757ee0dece78eb2c54f60c58d078e16 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 20:01:45 +0200 Subject: [PATCH 67/71] #1711 fix tests --- .../base/system/intents/ConfigIntentViewModelTest.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt index 6eb9ed3a10..bd473a3f1e 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt @@ -5,6 +5,7 @@ import androidx.arch.core.executor.testing.InstantTaskExecutorRule import io.github.sds100.keymapper.base.utils.ui.FakeResourceProvider import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.DialogModel +import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ShowDialogEvent import io.github.sds100.keymapper.base.utils.ui.onUserResponse import io.github.sds100.keymapper.common.utils.firstBlocking @@ -34,7 +35,10 @@ internal class ConfigIntentViewModelTest { Dispatchers.setMain(testDispatcher) fakeResourceProvider = FakeResourceProvider() - viewModel = ConfigIntentViewModel(fakeResourceProvider) + viewModel = ConfigIntentViewModel( + fakeResourceProvider, + dialogProvider = DialogProviderImpl() + ) } @Test From 4d64726e573aa25616f23bea42435188ad01e96c Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 20:08:45 +0200 Subject: [PATCH 68/71] delete build.gradle file --- app/build.gradle | 282 ----------------------------------------------- 1 file changed, 282 deletions(-) delete mode 100644 app/build.gradle diff --git a/app/build.gradle b/app/build.gradle deleted file mode 100644 index aad6da2e5a..0000000000 --- a/app/build.gradle +++ /dev/null @@ -1,282 +0,0 @@ -apply plugin: "com.android.application" -apply plugin: "kotlin-android" -apply plugin: "kotlin-kapt" -apply plugin: "com.google.devtools.ksp" -apply plugin: "androidx.navigation.safeargs.kotlin" -apply plugin: "kotlinx-serialization" -apply plugin: "org.jetbrains.kotlin.plugin.parcelize" -apply plugin: "org.jlleitschuh.gradle.ktlint" -apply plugin: "org.jetbrains.kotlin.plugin.compose" -apply plugin: "androidx.room" - -android { - - namespace "io.github.sds100.keymapper" - compileSdk 35 - buildToolsVersion = "35.0.0" - - def versionProperties = new Properties() - file("version.properties").withInputStream { versionProperties.load(it) } - - defaultConfig { - applicationId "io.github.sds100.keymapper" - minSdkVersion 21 - targetSdkVersion 35 - versionCode versionProperties.getProperty("VERSION_CODE").toInteger() - versionName versionProperties.getProperty("VERSION_NAME") - multiDexEnabled true - - vectorDrawables.useSupportLibrary = true - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - - javaCompileOptions { - annotationProcessorOptions { - arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] - } - } - } - - signingConfigs { - release { - storeFile file("keystore.jks") - storePassword System.getenv("KEYSTORE_PASSWORD") - keyAlias "keymapper" - keyPassword System.getenv("KEY_PASSWORD") - } - } - - buildTypes { - - release { - minifyEnabled true - proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" - signingConfig signingConfigs.release - } - - debug { - applicationIdSuffix ".debug" - versionNameSuffix "-debug" - } - - debug_release { - // Extend from debug build type so compose Live Edit and rapid building works - initWith debug - - // Do not alter the package name so can test revenuecat and billing while developing. - applicationIdSuffix "" - - /* - This is required because the splitties library does not have a debug_release build type. - */ - matchingFallbacks = ["debug"] - } - - ci { - minifyEnabled true - shrinkResources true - - /* - This is required because the splitties library does not have a ci build type. - */ - matchingFallbacks = ["debug"] - - applicationIdSuffix ".ci" - versionNameSuffix "-ci." + versionProperties.getProperty("VERSION_NUM") - - proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" - - signingConfig signingConfigs.debug - } - } - - flavorDimensions = ["pro"] - productFlavors { - free { - dimension "pro" - } - pro { - dimension "pro" - - File file = rootProject.file("local.properties") - String keyName = "REVENUECAT_API_KEY" - - if (file.exists()) { - def localProperties = new Properties() - localProperties.load(new FileInputStream(file)) - if (localProperties.containsKey(keyName)) { - buildConfigField("String", keyName, localProperties[keyName]) - } - } - } - } - - buildFeatures { - dataBinding true - viewBinding true - aidl true - buildConfig true - compose true - } - - compileOptions { - // Required for desugaring new Java time API on lower than API 26 - coreLibraryDesugaringEnabled = true - - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 - } - - kotlinOptions { - jvmTarget = "17" - } - - kapt { - correctErrorTypes = true - } - - composeOptions { - kotlinCompilerExtensionVersion "1.5.10" - } - - sourceSets { - androidTest { - assets.srcDirs += files("$projectDir/schemas".toString()) - resources.srcDirs += ["src/test/resources"] - } - - test { - java.srcDirs += ["src/pro/test/java"] - } - } - - applicationVariants.configureEach { variant -> - variant.outputs.configureEach { - outputFileName = "keymapper-${variant.versionName}.apk" - } - } - - room { - schemaDirectory "$projectDir/schemas" - } -} - -dependencies { - implementation fileTree(include: ["*.jar"], dir: "libs") - - compileOnly project(":systemstubs") - - def room_version = "2.7.1" - def coroutinesVersion = "1.9.0" - def nav_version = '2.9.0' - def epoxy_version = "4.6.2" - def splitties_version = "3.0.0" - def multidex_version = "2.0.1" - def shizuku_version = "13.1.5" - - // kotlin stuff - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0" - - // random stuff - implementation "com.google.android.material:material:1.13.0-alpha13" - implementation "com.github.salomonbrys.kotson:kotson:2.5.0" - implementation "com.airbnb.android:epoxy:$epoxy_version" - implementation "com.airbnb.android:epoxy-databinding:$epoxy_version" - kapt "com.airbnb.android:epoxy-processor:$epoxy_version" - implementation "com.jakewharton.timber:timber:5.0.1" - implementation "net.lingala.zip4j:zip4j:2.8.0" - implementation "com.anggrayudi:storage:0.8.1" - implementation "com.github.MFlisar:DragSelectRecyclerView:0.3" - implementation "com.google.android.flexbox:flexbox:3.0.0" - implementation "dev.rikka.shizuku:api:$shizuku_version" - implementation "dev.rikka.shizuku:provider:$shizuku_version" - implementation "org.lsposed.hiddenapibypass:hiddenapibypass:4.3" - proImplementation 'com.revenuecat.purchases:purchases:8.17.1' - proImplementation "com.airbnb.android:lottie-compose:6.6.3" - implementation("com.squareup.okhttp3:okhttp:4.12.0") - coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5") - implementation 'com.canopas.intro-showcase-view:introshowcaseview:2.0.2' - - // splitties - implementation "com.louiscad.splitties:splitties-bitflags:$splitties_version" - implementation "com.louiscad.splitties:splitties-alertdialog-appcompat-coroutines:$splitties_version" - implementation("com.louiscad.splitties:splitties-alertdialog-material:$splitties_version") - implementation "com.louiscad.splitties:splitties-snackbar:$splitties_version" - implementation "com.louiscad.splitties:splitties-toast:$splitties_version" - implementation "com.louiscad.splitties:splitties-mainthread:$splitties_version" - - // androidx - implementation "androidx.legacy:legacy-support-core-ui:1.0.0" - implementation "androidx.core:core-ktx:1.16.0" - - implementation "androidx.activity:activity-ktx:1.10.1" - implementation "androidx.fragment:fragment-ktx:1.8.6" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0" - implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.9.0" - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.9.0" - implementation "androidx.room:room-ktx:$room_version" - implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" - implementation "androidx.navigation:navigation-ui-ktx:$nav_version" - implementation "androidx.multidex:multidex:$multidex_version" - implementation "androidx.appcompat:appcompat:1.7.0" - implementation "androidx.recyclerview:recyclerview:1.4.0" - implementation "androidx.preference:preference-ktx:1.2.1" - implementation "androidx.constraintlayout:constraintlayout:2.2.1" - implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" - implementation "androidx.room:room-runtime:$room_version" - implementation "androidx.viewpager2:viewpager2:1.1.0" - implementation "androidx.datastore:datastore-preferences:1.2.0-alpha02" - implementation "androidx.core:core-splashscreen:1.0.1" - implementation "androidx.activity:activity-compose:1.10.1" - implementation "androidx.navigation:navigation-compose:2.9.0" - implementation "androidx.navigation:navigation-fragment-compose:2.9.0" - ksp "androidx.room:room-compiler:$room_version" - - // Compose - // Downgrade compose BOM version because there is a crash. Do not use 2025.05.00 - Dependency composeBom = platform('androidx.compose:compose-bom:2025.04.01') - implementation composeBom - implementation 'androidx.compose.foundation:foundation' - implementation "androidx.compose.ui:ui-android" - implementation "androidx.compose.material3:material3-android" - implementation "androidx.compose.ui:ui-tooling-preview-android" - implementation "androidx.compose.material:material-icons-extended-android" - implementation 'androidx.compose.material3.adaptive:adaptive-android' - implementation "androidx.compose.material3.adaptive:adaptive-navigation" - implementation "com.google.accompanist:accompanist-drawablepainter:0.35.0-alpha" - implementation "androidx.activity:activity-compose:1.10.1" - debugImplementation "androidx.compose.ui:ui-tooling" - debug_releaseImplementation "androidx.compose.ui:ui-tooling" - -// debugImplementation "com.squareup.leakcanary:leakcanary-android:2.6" - - def junitVersion = "4.13.2" - def androidXTestExtKotlinRunnerVersion = "1.2.1" - def espressoVersion = "3.6.1" - def androidXTestCoreVersion = "1.6.1" - - // Dependencies for local unit tests - testImplementation "junit:junit:$junitVersion" - testImplementation "org.hamcrest:hamcrest-all:1.3" - testImplementation "androidx.test.ext:junit-ktx:$androidXTestExtKotlinRunnerVersion" - testImplementation "androidx.test:core-ktx:1.6.1" - testImplementation "org.robolectric:robolectric:4.14.1" - testImplementation "androidx.arch.core:core-testing:2.2.0" - testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion" - testImplementation "pl.pragmatists:JUnitParams:1.1.1" - testImplementation "org.mockito.kotlin:mockito-kotlin:4.0.0" - testImplementation "org.mockito:mockito-core:5.15.2" - testImplementation "org.mockito:mockito-inline:5.2.0" - - androidTestImplementation "androidx.test.ext:junit:$androidXTestExtKotlinRunnerVersion" - androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion" - androidTestImplementation "androidx.arch.core:core-testing:2.2.0" - androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion" - androidTestImplementation "junit:junit:$junitVersion" - androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" - androidTestImplementation "android.arch.persistence.room:testing:1.1.1" - androidTestImplementation "org.mockito:mockito-android:4.6.1" - debugImplementation "androidx.fragment:fragment-testing:1.8.6" - implementation "androidx.test:core:$androidXTestCoreVersion" -} \ No newline at end of file From fd5974ab4f3d5e805529380160b0fdc5605420fd Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 20:42:36 +0200 Subject: [PATCH 69/71] #1711 fix ktlint format --- .editorconfig | 2 +- .github/workflows/pull-request.yml | 4 +- app/build.gradle.kts | 1 - .../github/sds100/keymapper/AppHiltModule.kt | 1 - .../sds100/keymapper/home/HomeViewModel.kt | 6 +- .../AccessibilityServiceController.kt | 18 ++--- .../sds100/keymapper/trigger/TriggerScreen.kt | 1 - .../keymapper/base/ActivityViewModel.kt | 4 +- .../github/sds100/keymapper/base/Constants.kt | 2 +- .../sds100/keymapper/base/actions/Action.kt | 6 +- .../keymapper/base/actions/ActionData.kt | 1 - .../base/actions/ActionDataEntityMapper.kt | 8 +-- .../base/actions/ActionErrorSnapshot.kt | 6 +- .../keymapper/base/actions/ActionListItem.kt | 2 +- .../keymapper/base/actions/ActionUtils.kt | 2 +- .../keymapper/base/actions/ActionsScreen.kt | 4 +- .../base/actions/ChooseActionViewModel.kt | 2 +- .../base/actions/ConfigActionsViewModel.kt | 4 +- .../base/actions/CreateActionDelegate.kt | 2 +- .../actions/FlashlightActionBottomSheet.kt | 4 +- .../base/actions/HttpRequestBottomSheet.kt | 2 +- .../base/actions/PerformActionsUseCase.kt | 4 +- .../keymapper/base/actions/RepeatMode.kt | 1 - .../keyevent/ChooseKeyCodeViewModel.kt | 2 - .../keyevent/ConfigKeyEventActionViewModel.kt | 2 +- .../actions/keyevent/ConfigKeyEventUseCase.kt | 2 +- .../PinchPickDisplayCoordinateFragment.kt | 1 - .../PinchPickDisplayCoordinateViewModel.kt | 4 +- .../actions/sound/ChooseSoundFileFragment.kt | 1 - .../actions/sound/ChooseSoundFileViewModel.kt | 7 +- .../base/actions/sound/SoundFileInfo.kt | 1 - .../SwipePickDisplayCoordinateFragment.kt | 1 - .../SwipePickDisplayCoordinateViewModel.kt | 4 +- .../tapscreen/PickCoordinateImageView.kt | 1 - .../actions/tapscreen/PickCoordinateResult.kt | 1 - .../PickDisplayCoordinateFragment.kt | 1 - .../PickDisplayCoordinateViewModel.kt | 5 +- .../uielement/ChooseUiElementScreen.kt | 2 +- .../base/backup/RestoreKeyMapsViewModel.kt | 4 +- .../constraints/ChooseConstraintViewModel.kt | 64 ++++++++--------- .../keymapper/base/constraints/Constraint.kt | 4 +- .../base/constraints/ConstraintSnapshot.kt | 4 +- .../constraints/GetConstraintErrorUseCase.kt | 8 +-- .../base/groups/GroupConstraintRow.kt | 4 +- .../sds100/keymapper/base/groups/GroupRow.kt | 2 +- .../keymapper/base/home/BaseHomeViewModel.kt | 2 +- .../keymapper/base/home/KeyMapListAppBar.kt | 4 +- .../base/home/SelectionBottomSheet.kt | 2 +- ...wModel.kt => BaseConfigKeyMapViewModel.kt} | 0 .../keymaps/ConfigKeyMapOptionsViewModel.kt | 9 ++- .../keymaps/CreateKeyMapShortcutUseCase.kt | 2 +- .../keymaps/CreateKeyMapShortcutViewModel.kt | 2 +- .../base/keymaps/DisplayKeyMapUseCase.kt | 10 +-- .../base/keymaps/KeyMapListViewModel.kt | 6 +- .../base/keymaps/KeyMapOptionsScreen.kt | 6 +- .../base/keymaps/PauseKeyMapsUseCase.kt | 2 +- .../keymapper/base/keymaps/ShortcutRow.kt | 2 +- .../base/keymaps/SimpleMappingController.kt | 2 +- .../keymaps/detection/DetectKeyMapsUseCase.kt | 1 - .../DetectScreenOffKeyEventsController.kt | 2 +- .../keymaps/detection/KeyMapController.kt | 4 +- .../keymaps/detection/KeyPressedCallback.kt | 2 +- .../ParallelTriggerActionPerformer.kt | 3 +- .../SequenceTriggerActionPerformer.kt | 1 - .../TriggerKeyMapFromOtherAppsController.kt | 4 -- .../sds100/keymapper/base/logging/LogEntry.kt | 1 - .../base/logging/LogEntryEntityMapper.kt | 1 - .../base/logging/LogEntryListItem.kt | 1 - .../keymapper/base/logging/LogFragment.kt | 1 - .../keymapper/base/logging/LogSeverity.kt | 1 - .../sds100/keymapper/base/logging/LogUtils.kt | 1 - .../keymapper/base/logging/LogViewModel.kt | 11 ++- .../base/onboarding/OnboardingUseCase.kt | 6 +- .../base/purchasing/PurchasingManager.kt | 2 +- .../RerouteKeyEventsController.kt | 6 +- .../RerouteKeyEventsUseCase.kt | 7 +- .../base/settings/ConfigSettingsUseCase.kt | 2 +- .../DefaultOptionsSettingsFragment.kt | 6 +- .../settings/ImePickerSettingsFragment.kt | 4 +- .../base/settings/MainSettingsFragment.kt | 13 ++-- .../keymapper/base/settings/SettingsUtils.kt | 1 - .../base/settings/SettingsViewModel.kt | 5 +- .../base/settings/ShizukuSettingsFragment.kt | 3 +- .../keymapper/base/settings/ThemeUtils.kt | 2 - .../base/sorting/SortKeyMapsUseCase.kt | 1 - .../comparators/KeyMapActionsComparator.kt | 2 +- .../KeyMapConstraintsComparator.kt | 6 +- .../AccessibilityNodeRecorder.kt | 2 - .../accessibility/BaseAccessibilityService.kt | 4 +- .../BaseAccessibilityServiceController.kt | 19 ++--- .../accessibility/IAccessibilityService.kt | 2 +- .../base/system/apps/AppActivityListItem.kt | 2 +- .../base/system/apps/AppShortcutListItem.kt | 2 +- .../system/apps/ChooseActivityViewModel.kt | 2 +- .../system/apps/ChooseAppShortcutFragment.kt | 1 - .../system/apps/ChooseAppShortcutViewModel.kt | 11 ++- .../base/system/apps/ChooseAppViewModel.kt | 8 +-- .../ChooseBluetoothDeviceViewModel.kt | 9 ++- .../system/intents/ConfigIntentViewModel.kt | 7 +- .../NotificationClickReceiver.kt | 1 - .../notifications/NotificationController.kt | 69 ++++++++++--------- .../base/tiles/ToggleKeyMapperKeyboardTile.kt | 2 +- .../base/trigger/AssistantTriggerKey.kt | 2 +- .../trigger/BaseConfigTriggerViewModel.kt | 4 +- .../base/trigger/KeyCodeTriggerKey.kt | 6 +- .../base/trigger/RecordTriggerState.kt | 1 - .../keymapper/base/trigger/RecordedKey.kt | 1 - .../sds100/keymapper/base/trigger/Trigger.kt | 1 - .../keymapper/base/trigger/TriggerError.kt | 1 - .../base/trigger/TriggerErrorSnapshot.kt | 6 +- .../base/trigger/TriggerKeyDevice.kt | 2 - .../keymapper/base/trigger/TriggerMode.kt | 2 - .../keymapper/base/utils/DndModeStrings.kt | 2 +- .../keymapper/base/utils/IntentStrings.kt | 2 +- .../keymapper/base/utils/RingerModeStrings.kt | 2 +- .../keymapper/base/utils/VersionHelper.kt | 1 - .../base/utils/VolumeStreamStrings.kt | 2 +- .../base/utils/navigation/NavDestination.kt | 2 +- .../base/utils/navigation/NavResult.kt | 1 - .../base/utils/navigation/NavigateEvent.kt | 1 - .../base/utils/navigation/NavigationUtils.kt | 3 +- .../keymapper/base/utils/ui/LifecycleUtils.kt | 3 +- .../base/utils/ui/MultiChoiceItem.kt | 1 - .../base/utils/ui/MultiSelectProvider.kt | 2 - .../base/utils/ui/OnDialogResponseEvent.kt | 1 - .../base/utils/ui/RadioButtonPairListItem.kt | 1 - .../utils/ui/RadioButtonTripleListItem.kt | 1 - .../base/utils/ui/RecyclerViewFragment.kt | 1 - .../base/utils/ui/RecyclerViewUtils.kt | 2 - .../base/utils/ui/SectionHeaderListItem.kt | 1 - .../keymapper/base/utils/ui/SelectionState.kt | 1 - .../base/utils/ui/ShowDialogEvent.kt | 1 - .../utils/ui/SimpleRecyclerViewFragment.kt | 1 - .../keymapper/base/utils/ui/SliderMaximums.kt | 1 - .../keymapper/base/utils/ui/SliderMinimums.kt | 1 - .../base/utils/ui/SliderStepSizes.kt | 1 - .../base/utils/ui/SquareImageButton.kt | 1 - .../keymapper/base/utils/ui/TextListItem.kt | 2 - .../keymapper/base/utils/ui/TintType.kt | 1 - .../base/utils/ui/ViewModelHelper.kt | 1 - .../keymapper/base/TestDispatcherProvider.kt | 2 - .../sds100/keymapper/base/TestLoggingTree.kt | 1 - .../base/actions/PerformActionsUseCaseTest.kt | 2 +- .../base/keymaps/KeyMapControllerTest.kt | 2 +- ...riggerKeyMapFromOtherAppsControllerTest.kt | 2 - .../intents/ConfigIntentViewModelTest.kt | 6 +- .../keymapper/common/BuildConfigProvider.kt | 2 +- .../keymapper/common/utils/BuildUtils.kt | 2 +- .../sds100/keymapper/common/utils/MapUtils.kt | 2 - .../keymapper/common/utils/Orientation.kt | 1 - .../keymapper/common/utils/PinchScreenType.kt | 2 +- .../sds100/keymapper/common/utils/State.kt | 1 - .../keymapper/common/utils/UserHandleUtils.kt | 2 - .../keymapper/data/ExampleInstrumentedTest.kt | 24 ------- .../github/sds100/keymapper/data/DataError.kt | 3 +- .../sds100/keymapper/data/DataHiltModule.kt | 17 ++++- .../keymapper/data/PreferenceDefaults.kt | 2 - .../sds100/keymapper/data/db/AppDatabase.kt | 1 - .../keymapper/data/db/dao/LogEntryDao.kt | 2 - .../db/typeconverter/TriggerTypeConverter.kt | 2 - .../keymapper/data/entities/LogEntryEntity.kt | 1 - .../keymapper/data/entities/TriggerEntity.kt | 2 - .../keymapper/data/migration/Migration1To2.kt | 4 +- .../keymapper/data/migration/Migration2To3.kt | 2 - .../keymapper/data/migration/Migration3To4.kt | 3 - .../keymapper/data/migration/Migration4To5.kt | 4 +- .../keymapper/data/migration/Migration5To6.kt | 2 - .../keymapper/data/migration/Migration6To7.kt | 8 +-- .../data/migration/MigrationUtils.kt | 1 - .../FingerprintToKeyMapMigration.kt | 2 +- .../AccessibilityNodeRepository.kt | 3 +- .../repositories/FloatingButtonRepository.kt | 3 +- .../repositories/FloatingLayoutRepository.kt | 3 +- .../data/repositories/GroupRepository.kt | 1 - .../data/repositories/KeyMapRepository.kt | 2 +- .../data/repositories/PreferenceRepository.kt | 1 - .../RoomAccessibilityNodeRepository.kt | 2 +- .../RoomFloatingButtonRepository.kt | 2 +- .../RoomFloatingLayoutRepository.kt | 2 +- .../data/repositories/RoomKeyMapRepository.kt | 8 +-- .../data/utils/PreferenceDelegate.kt | 2 - .../sds100/keymapper/data/ExampleUnitTest.kt | 17 ----- fastlane/Fastfile | 53 +++++++------- fastlane/README.md | 4 +- 184 files changed, 302 insertions(+), 476 deletions(-) rename base/src/main/java/io/github/sds100/keymapper/base/keymaps/{ConfigKeyMapViewModel.kt => BaseConfigKeyMapViewModel.kt} (100%) delete mode 100644 data/src/androidTest/java/io/github/sds100/keymapper/data/ExampleInstrumentedTest.kt delete mode 100644 data/src/test/java/io/github/sds100/keymapper/data/ExampleUnitTest.kt diff --git a/.editorconfig b/.editorconfig index 45db7af9a4..a55befd7a9 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,6 +4,6 @@ ktlint_function_naming_ignore_when_annotated_with = Composable ktlint_ignore_back_ticked_identifier = true ktlint_code_style = intellij_idea # Use IntelliJ style because it has trailing commas -[app/src/main/java/io/github/sds100/keymapper/util/ui/compose/icons/*.{kt,kts}] +[base/src/main/java/io/github/sds100/keymapper/base/utils/ui/compose/icons/*.{kt,kts}] ktlint_standard_property-naming = disabled ktlint_standard_backing-property-naming = disabled \ No newline at end of file diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 2be87f9f1b..a2027703b1 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -96,10 +96,10 @@ jobs: run: bundle exec fastlane testing - name: set apk name env - run: echo "APK_NAME=$(basename app/build/outputs/apk/free/ci/*.apk .apk)" >> $GITHUB_ENV + run: echo "APK_NAME=$(basename app/build/outputs/apk/ci/*.apk .apk)" >> $GITHUB_ENV - name: Upload APK uses: actions/upload-artifact@v4 with: name: ${{ env.APK_NAME }} - path: app/build/outputs/apk/free/ci/${{ env.APK_NAME }}.apk + path: app/build/outputs/apk/ci/${{ env.APK_NAME }}.apk diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d97862576f..9f3e80bb1f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,5 @@ @file:Suppress("UnstableApiUsage") -import java.io.FileInputStream import java.util.Properties plugins { diff --git a/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt index 8cad2170bb..286adf22ad 100644 --- a/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt +++ b/app/src/main/java/io/github/sds100/keymapper/AppHiltModule.kt @@ -57,5 +57,4 @@ class AppHiltModule { @Provides @Singleton fun providePurchasingManager(): PurchasingManager = PurchasingManagerImpl() - } diff --git a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt index 0cd86de2f9..0c2f3dc906 100644 --- a/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt +++ b/app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt @@ -27,7 +27,7 @@ class HomeViewModel @Inject constructor( private val sortKeyMaps: SortKeyMapsUseCase, private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, navigationProvider: NavigationProvider, - dialogProvider: DialogProvider + dialogProvider: DialogProvider, ) : BaseHomeViewModel( listKeyMaps, pauseKeyMaps, @@ -39,5 +39,5 @@ class HomeViewModel @Inject constructor( sortKeyMaps, showInputMethodPickerUseCase, navigationProvider, - dialogProvider -) \ No newline at end of file + dialogProvider, +) diff --git a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt index 33bd409e78..6bc72f0bbe 100644 --- a/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt +++ b/app/src/main/java/io/github/sds100/keymapper/system/accessibility/AccessibilityServiceController.kt @@ -3,27 +3,17 @@ package io.github.sds100.keymapper.system.accessibility import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.actions.PerformActionsUseCaseImpl -import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCaseImpl import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase -import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCaseImpl import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsController -import io.github.sds100.keymapper.base.reroutekeyevents.RerouteKeyEventsUseCase import io.github.sds100.keymapper.base.system.accessibility.AccessibilityNodeRecorder import io.github.sds100.keymapper.base.system.accessibility.BaseAccessibilityServiceController -import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.devices.DevicesAdapter -import io.github.sds100.keymapper.system.display.DisplayAdapter -import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.root.SuAdapter -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.flow.MutableSharedFlow -import kotlinx.coroutines.flow.SharedFlow class AccessibilityServiceController @AssistedInject constructor( @Assisted @@ -37,7 +27,7 @@ class AccessibilityServiceController @AssistedInject constructor( pauseKeyMapsUseCase: PauseKeyMapsUseCase, devicesAdapter: DevicesAdapter, suAdapter: SuAdapter, - settingsRepository: PreferenceRepository + settingsRepository: PreferenceRepository, ) : BaseAccessibilityServiceController( service = service, rerouteKeyEventsControllerFactory = rerouteKeyEventsControllerFactory, @@ -49,10 +39,10 @@ class AccessibilityServiceController @AssistedInject constructor( pauseKeyMapsUseCase = pauseKeyMapsUseCase, devicesAdapter = devicesAdapter, suAdapter = suAdapter, - settingsRepository = settingsRepository -){ + settingsRepository = settingsRepository, +) { @AssistedFactory interface Factory { fun create(service: MyAccessibilityService): AccessibilityServiceController } -} \ No newline at end of file +} diff --git a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt index bc07b33a13..6c1da6cf77 100644 --- a/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt +++ b/app/src/main/java/io/github/sds100/keymapper/trigger/TriggerScreen.kt @@ -10,7 +10,6 @@ import io.github.sds100.keymapper.base.trigger.BaseTriggerScreen @OptIn(ExperimentalMaterial3Api::class) @Composable fun TriggerScreen(modifier: Modifier = Modifier, viewModel: ConfigTriggerViewModel) { - val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) if (viewModel.showAdvancedTriggersBottomSheet) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt index 1029f3a968..a8b48bb2b9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/ActivityViewModel.kt @@ -1,13 +1,11 @@ package io.github.sds100.keymapper.base import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl import io.github.sds100.keymapper.base.utils.ui.DialogProvider -import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import kotlinx.coroutines.launch @@ -16,7 +14,7 @@ import javax.inject.Inject @HiltViewModel class ActivityViewModel @Inject constructor( resourceProvider: ResourceProvider, - dialogProvider: DialogProvider + dialogProvider: DialogProvider, ) : ViewModel(), ResourceProvider by resourceProvider, DialogProvider by dialogProvider, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/Constants.kt b/base/src/main/java/io/github/sds100/keymapper/base/Constants.kt index 0ef889fecd..d5f8c15086 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/Constants.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/Constants.kt @@ -5,4 +5,4 @@ import android.os.Build object Constants { const val MIN_API: Int = Build.VERSION_CODES.LOLLIPOP const val MAX_API: Int = 1000 -} \ No newline at end of file +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt index c848415d30..ca071be8d2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/Action.kt @@ -1,15 +1,15 @@ package io.github.sds100.keymapper.base.actions +import io.github.sds100.keymapper.base.keymaps.KeyMap +import io.github.sds100.keymapper.common.utils.hasFlag import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.common.utils.valueOrNull +import io.github.sds100.keymapper.common.utils.withFlag import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData -import io.github.sds100.keymapper.base.keymaps.KeyMap import kotlinx.serialization.Serializable -import io.github.sds100.keymapper.common.utils.hasFlag -import io.github.sds100.keymapper.common.utils.withFlag import java.util.UUID @Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt index 44f7dea393..37437eccb4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionData.kt @@ -10,7 +10,6 @@ import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.system.volume.DndMode import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.VolumeStream -import kotlinx.parcelize.IgnoredOnParcel import kotlinx.serialization.Serializable @Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt index d90c383fd4..3ea9be3414 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionDataEntityMapper.kt @@ -1,10 +1,13 @@ package io.github.sds100.keymapper.base.actions import androidx.core.net.toUri -import io.github.sds100.keymapper.common.utils.NodeInteractionType import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.KMResult +import io.github.sds100.keymapper.common.utils.NodeInteractionType +import io.github.sds100.keymapper.common.utils.PinchScreenType import io.github.sds100.keymapper.common.utils.Success +import io.github.sds100.keymapper.common.utils.getKey +import io.github.sds100.keymapper.common.utils.hasFlag import io.github.sds100.keymapper.common.utils.success import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.common.utils.valueOrNull @@ -20,10 +23,7 @@ import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.system.volume.DndMode import io.github.sds100.keymapper.system.volume.RingerMode import io.github.sds100.keymapper.system.volume.VolumeStream -import io.github.sds100.keymapper.common.utils.getKey -import io.github.sds100.keymapper.common.utils.PinchScreenType import kotlinx.serialization.json.Json -import io.github.sds100.keymapper.common.utils.hasFlag object ActionDataEntityMapper { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt index bc467fcf5c..a70eaa68b5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionErrorSnapshot.kt @@ -1,21 +1,21 @@ package io.github.sds100.keymapper.base.actions import io.github.sds100.keymapper.base.actions.sound.SoundsManager +import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter class LazyActionErrorSnapshot( private val packageManager: PackageManagerAdapter, @@ -26,7 +26,7 @@ class LazyActionErrorSnapshot( private val soundsManager: SoundsManager, shizukuAdapter: ShizukuAdapter, private val ringtoneAdapter: RingtoneAdapter, - buildConfigProvider: BuildConfigProvider + buildConfigProvider: BuildConfigProvider, ) : ActionErrorSnapshot, IsActionSupportedUseCase by IsActionSupportedUseCaseImpl( systemFeatureAdapter, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt index 3faaa094cf..f842381aae 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionListItem.kt @@ -44,10 +44,10 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.LinkType import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.DragDropState +import io.github.sds100.keymapper.base.utils.ui.drawable @Composable fun ActionListItem( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt index 4a53aefd41..638274e2d5 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionUtils.kt @@ -73,7 +73,6 @@ import androidx.compose.material.icons.rounded.WifiOff import androidx.compose.ui.graphics.vector.ImageVector import io.github.sds100.keymapper.base.Constants import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.base.utils.ui.compose.icons.HomeIotDevice import io.github.sds100.keymapper.base.utils.ui.compose.icons.InstantMix import io.github.sds100.keymapper.base.utils.ui.compose.icons.JumpToElement @@ -83,6 +82,7 @@ import io.github.sds100.keymapper.base.utils.ui.compose.icons.NfcOff import io.github.sds100.keymapper.base.utils.ui.compose.icons.TextSelectEnd import io.github.sds100.keymapper.base.utils.ui.compose.icons.TopPanelClose import io.github.sds100.keymapper.base.utils.ui.compose.icons.TopPanelOpen +import io.github.sds100.keymapper.system.permissions.Permission object ActionUtils { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt index d3c8e2636a..14eadb9da1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ActionsScreen.kt @@ -41,12 +41,12 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.keymaps.ShortcutModel import io.github.sds100.keymapper.base.keymaps.ShortcutRow -import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.LinkType import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.DraggableItem import io.github.sds100.keymapper.base.utils.ui.compose.rememberDragDropState +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.system.camera.CameraLens import kotlinx.coroutines.flow.update @OptIn(ExperimentalMaterial3Api::class) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt index aa799c3171..895035c7d8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ChooseActionViewModel.kt @@ -7,9 +7,9 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.containsQuery import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider -import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.SimpleListItemGroup diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt index 5f9fd63c2f..766d12cfe3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/ConfigActionsViewModel.kt @@ -11,10 +11,10 @@ import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate import io.github.sds100.keymapper.base.utils.ui.ChooseAppStoreModel -import io.github.sds100.keymapper.base.utils.ui.DialogResponse -import io.github.sds100.keymapper.base.utils.ui.LinkType import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.LinkType import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt index c9be69fe75..5d5cd0d305 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/CreateActionDelegate.kt @@ -15,9 +15,9 @@ import io.github.sds100.keymapper.base.utils.VolumeStreamStrings import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate -import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.Orientation diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt index ad17e8375e..13b4490d76 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/FlashlightActionBottomSheet.kt @@ -48,11 +48,11 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.system.camera.CameraFlashInfo -import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperSliderThumb import io.github.sds100.keymapper.base.utils.ui.compose.OptionsHeaderRow import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText +import io.github.sds100.keymapper.system.camera.CameraFlashInfo +import io.github.sds100.keymapper.system.camera.CameraLens import kotlinx.coroutines.launch import kotlin.math.roundToInt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt index ded9684357..696b6f2f9f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/HttpRequestBottomSheet.kt @@ -39,8 +39,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.system.network.HttpMethod import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperDropdownMenu +import io.github.sds100.keymapper.system.network.HttpMethod import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import okhttp3.HttpUrl.Companion.toHttpUrlOrNull diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt index fc669881c4..f90722be3c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCase.kt @@ -17,10 +17,10 @@ import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.base.system.navigation.OpenMenuHelper import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.ResourceProvider -import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.InputEventType -import io.github.sds100.keymapper.common.utils.Orientation +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.KMResult +import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.common.utils.firstBlocking diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt index b8c373f86d..e9eeb2ae76 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/RepeatMode.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.actions - enum class RepeatMode { TRIGGER_RELEASED, LIMIT_REACHED, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt index 63acf79c4f..67987c742a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ChooseKeyCodeViewModel.kt @@ -6,8 +6,6 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.utils.filterByQuery import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem -import io.github.sds100.keymapper.base.utils.ui.DialogProvider -import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.inputevents.InputEventUtils diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt index 9c648b8286..02fd7545a0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventActionViewModel.kt @@ -42,7 +42,7 @@ import javax.inject.Inject @HiltViewModel class ConfigKeyEventActionViewModel @Inject constructor( private val useCase: ConfigKeyEventUseCase, - private val resourceProvider: ResourceProvider + private val resourceProvider: ResourceProvider, ) : ViewModel(), ResourceProvider by resourceProvider, NavigationProvider by NavigationProviderImpl() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt index 530d99c768..a304220fab 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/keyevent/ConfigKeyEventUseCase.kt @@ -1,10 +1,10 @@ package io.github.sds100.keymapper.base.actions.keyevent +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo -import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import javax.inject.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt index 9d330ca967..8ed81bd516 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateFragment.kt @@ -25,7 +25,6 @@ import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.databinding.FragmentPinchPickCoordinatesBinding import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.collectLatest diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt index 27aa69395a..4450f70f65 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/pinchscreen/PinchPickDisplayCoordinateViewModel.kt @@ -7,13 +7,11 @@ import android.os.Build import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider -import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.PinchScreenType @@ -33,7 +31,7 @@ import kotlin.math.roundToInt @HiltViewModel class PinchPickDisplayCoordinateViewModel @Inject constructor( resourceProvider: ResourceProvider, - dialogProvider: DialogProvider + dialogProvider: DialogProvider, ) : ViewModel(), ResourceProvider by resourceProvider, DialogProvider by dialogProvider { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt index d1576d87f5..ab1088467b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileFragment.kt @@ -25,7 +25,6 @@ import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.databinding.FragmentChooseSoundFileBinding import io.github.sds100.keymapper.base.simple import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.filterNotNull diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt index 3068953b97..f858528742 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/ChooseSoundFileViewModel.kt @@ -5,16 +5,15 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionData -import io.github.sds100.keymapper.common.utils.onFailure -import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider -import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showDialog +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess +import io.github.sds100.keymapper.common.utils.valueOrNull import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundFileInfo.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundFileInfo.kt index 213015128c..a6faa7bf34 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundFileInfo.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/sound/SoundFileInfo.kt @@ -1,4 +1,3 @@ package io.github.sds100.keymapper.base.actions.sound - data class SoundFileInfo(val uid: String, val name: String) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt index bb44ce8969..888ae4826f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateFragment.kt @@ -23,7 +23,6 @@ import androidx.navigation.fragment.navArgs import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.databinding.FragmentSwipePickCoordinatesBinding import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt index b893932b9a..c5afe9ad3f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/swipescreen/SwipePickDisplayCoordinateViewModel.kt @@ -5,13 +5,11 @@ import android.graphics.Bitmap import android.graphics.Point import android.os.Build import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider -import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showDialog import kotlinx.coroutines.flow.MutableSharedFlow @@ -35,7 +33,7 @@ enum class ScreenshotTouchType { @HiltViewModel class SwipePickDisplayCoordinateViewModel @Inject constructor( resourceProvider: ResourceProvider, - dialogProvider: DialogProvider + dialogProvider: DialogProvider, ) : ViewModel(), ResourceProvider by resourceProvider, DialogProvider by dialogProvider { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt index 4fa9f0ba0f..fcbd125cf2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateImageView.kt @@ -12,7 +12,6 @@ import io.github.sds100.keymapper.base.utils.ui.color import kotlinx.coroutines.flow.MutableStateFlow import kotlin.math.roundToInt - class PickCoordinateImageView( context: Context, attrs: AttributeSet?, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateResult.kt index 0fa0cc6bda..8c45352d20 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickCoordinateResult.kt @@ -2,6 +2,5 @@ package io.github.sds100.keymapper.base.actions.tapscreen import kotlinx.serialization.Serializable - @Serializable data class PickCoordinateResult(val x: Int, val y: Int, val description: String) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt index 7cf7a9e19d..1de00aca0f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateFragment.kt @@ -23,7 +23,6 @@ import androidx.navigation.fragment.navArgs import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.databinding.FragmentPickCoordinateBinding import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.collectLatest import kotlinx.serialization.json.Json diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt index c2383bf4a5..86afc6dc0f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/tapscreen/PickDisplayCoordinateViewModel.kt @@ -3,13 +3,11 @@ package io.github.sds100.keymapper.base.actions.tapscreen import android.graphics.Bitmap import android.graphics.Point import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider -import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showDialog import kotlinx.coroutines.flow.MutableSharedFlow @@ -25,11 +23,10 @@ import kotlinx.coroutines.launch import javax.inject.Inject import kotlin.math.roundToInt - @HiltViewModel class PickDisplayCoordinateViewModel @Inject constructor( resourceProvider: ResourceProvider, - dialogProvider: DialogProvider + dialogProvider: DialogProvider, ) : ViewModel(), ResourceProvider by resourceProvider, DialogProvider by dialogProvider { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt index 86cbb3c217..7da4fd9033 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/actions/uielement/ChooseUiElementScreen.kt @@ -51,12 +51,12 @@ import androidx.window.core.layout.WindowHeightSizeClass import androidx.window.core.layout.WindowWidthSizeClass import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.compose.CheckBoxText import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperDropdownMenu import io.github.sds100.keymapper.base.utils.ui.compose.SearchAppBarActions import io.github.sds100.keymapper.base.utils.ui.compose.WindowSizeClassExt.compareTo import io.github.sds100.keymapper.common.utils.NodeInteractionType +import io.github.sds100.keymapper.common.utils.State @Composable fun ChooseElementScreen( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt index 01bd53d32f..44cb892887 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/backup/RestoreKeyMapsViewModel.kt @@ -3,10 +3,10 @@ package io.github.sds100.keymapper.base.backup import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.common.utils.onFailure -import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.ResourceProvider +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt index ca3bfb9370..6bf2901ee9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ChooseConstraintViewModel.kt @@ -93,7 +93,7 @@ class ChooseConstraintViewModel @Inject constructor( ) } - private val _returnResult = MutableSharedFlow() + private val returnResult = MutableSharedFlow() private val allListItems: List by lazy { buildListItems() } @@ -109,7 +109,7 @@ class ChooseConstraintViewModel @Inject constructor( init { viewModelScope.launch { - _returnResult.collect { constraint -> + returnResult.collect { constraint -> popBackStackWithResult(Json.encodeToString(constraint)) } } @@ -118,7 +118,7 @@ class ChooseConstraintViewModel @Inject constructor( fun onDoneConfigTimeConstraintClick() { timeConstraintState?.let { constraint -> viewModelScope.launch { - _returnResult.emit(constraint) + returnResult.emit(constraint) timeConstraintState = null } } @@ -139,8 +139,8 @@ class ChooseConstraintViewModel @Inject constructor( ConstraintId.APP_NOT_PLAYING_MEDIA, -> onSelectAppConstraint(constraintType) - ConstraintId.MEDIA_PLAYING -> _returnResult.emit(Constraint.MediaPlaying()) - ConstraintId.MEDIA_NOT_PLAYING -> _returnResult.emit(Constraint.NoMediaPlaying()) + ConstraintId.MEDIA_PLAYING -> returnResult.emit(Constraint.MediaPlaying()) + ConstraintId.MEDIA_NOT_PLAYING -> returnResult.emit(Constraint.NoMediaPlaying()) ConstraintId.BT_DEVICE_CONNECTED, ConstraintId.BT_DEVICE_DISCONNECTED, @@ -152,35 +152,35 @@ class ChooseConstraintViewModel @Inject constructor( ConstraintId.SCREEN_OFF -> onSelectScreenOffConstraint() ConstraintId.ORIENTATION_PORTRAIT -> - _returnResult.emit(Constraint.OrientationPortrait()) + returnResult.emit(Constraint.OrientationPortrait()) ConstraintId.ORIENTATION_LANDSCAPE -> - _returnResult.emit(Constraint.OrientationLandscape()) + returnResult.emit(Constraint.OrientationLandscape()) ConstraintId.ORIENTATION_0 -> - _returnResult.emit(Constraint.OrientationCustom(orientation = Orientation.ORIENTATION_0)) + returnResult.emit(Constraint.OrientationCustom(orientation = Orientation.ORIENTATION_0)) ConstraintId.ORIENTATION_90 -> - _returnResult.emit(Constraint.OrientationCustom(orientation = Orientation.ORIENTATION_90)) + returnResult.emit(Constraint.OrientationCustom(orientation = Orientation.ORIENTATION_90)) ConstraintId.ORIENTATION_180 -> - _returnResult.emit(Constraint.OrientationCustom(orientation = Orientation.ORIENTATION_180)) + returnResult.emit(Constraint.OrientationCustom(orientation = Orientation.ORIENTATION_180)) ConstraintId.ORIENTATION_270 -> - _returnResult.emit(Constraint.OrientationCustom(orientation = Orientation.ORIENTATION_270)) + returnResult.emit(Constraint.OrientationCustom(orientation = Orientation.ORIENTATION_270)) ConstraintId.FLASHLIGHT_ON -> { val lens = chooseFlashlightLens() ?: return@launch - _returnResult.emit(Constraint.FlashlightOn(lens = lens)) + returnResult.emit(Constraint.FlashlightOn(lens = lens)) } ConstraintId.FLASHLIGHT_OFF -> { val lens = chooseFlashlightLens() ?: return@launch - _returnResult.emit(Constraint.FlashlightOff(lens = lens)) + returnResult.emit(Constraint.FlashlightOff(lens = lens)) } - ConstraintId.WIFI_ON -> _returnResult.emit(Constraint.WifiOn()) - ConstraintId.WIFI_OFF -> _returnResult.emit(Constraint.WifiOff()) + ConstraintId.WIFI_ON -> returnResult.emit(Constraint.WifiOn()) + ConstraintId.WIFI_OFF -> returnResult.emit(Constraint.WifiOff()) ConstraintId.WIFI_CONNECTED, ConstraintId.WIFI_DISCONNECTED, @@ -193,31 +193,31 @@ class ChooseConstraintViewModel @Inject constructor( -> onSelectImeChosenConstraint(constraintType) ConstraintId.DEVICE_IS_LOCKED -> - _returnResult.emit(Constraint.DeviceIsLocked()) + returnResult.emit(Constraint.DeviceIsLocked()) ConstraintId.DEVICE_IS_UNLOCKED -> - _returnResult.emit(Constraint.DeviceIsUnlocked()) + returnResult.emit(Constraint.DeviceIsUnlocked()) ConstraintId.IN_PHONE_CALL -> - _returnResult.emit(Constraint.InPhoneCall()) + returnResult.emit(Constraint.InPhoneCall()) ConstraintId.NOT_IN_PHONE_CALL -> - _returnResult.emit(Constraint.NotInPhoneCall()) + returnResult.emit(Constraint.NotInPhoneCall()) ConstraintId.PHONE_RINGING -> - _returnResult.emit(Constraint.PhoneRinging()) + returnResult.emit(Constraint.PhoneRinging()) ConstraintId.CHARGING -> - _returnResult.emit(Constraint.Charging()) + returnResult.emit(Constraint.Charging()) ConstraintId.DISCHARGING -> - _returnResult.emit(Constraint.Discharging()) + returnResult.emit(Constraint.Discharging()) ConstraintId.LOCK_SCREEN_SHOWING -> - _returnResult.emit(Constraint.LockScreenShowing()) + returnResult.emit(Constraint.LockScreenShowing()) ConstraintId.LOCK_SCREEN_NOT_SHOWING -> - _returnResult.emit(Constraint.LockScreenNotShowing()) + returnResult.emit(Constraint.LockScreenNotShowing()) ConstraintId.TIME -> { timeConstraintState = Constraint.Time( @@ -314,10 +314,10 @@ class ChooseConstraintViewModel @Inject constructor( when (type) { ConstraintId.WIFI_CONNECTED -> - _returnResult.emit(Constraint.WifiConnected(ssid = chosenSSID)) + returnResult.emit(Constraint.WifiConnected(ssid = chosenSSID)) ConstraintId.WIFI_DISCONNECTED -> - _returnResult.emit(Constraint.WifiDisconnected(ssid = chosenSSID)) + returnResult.emit(Constraint.WifiDisconnected(ssid = chosenSSID)) else -> Unit } @@ -334,7 +334,7 @@ class ChooseConstraintViewModel @Inject constructor( when (type) { ConstraintId.IME_CHOSEN -> - _returnResult.emit( + returnResult.emit( Constraint.ImeChosen( imeId = imeInfo.id, imeLabel = imeInfo.label, @@ -342,7 +342,7 @@ class ChooseConstraintViewModel @Inject constructor( ) ConstraintId.IME_NOT_CHOSEN -> - _returnResult.emit( + returnResult.emit( Constraint.ImeNotChosen( imeId = imeInfo.id, imeLabel = imeInfo.label, @@ -361,7 +361,7 @@ class ChooseConstraintViewModel @Inject constructor( response ?: return - _returnResult.emit(Constraint.ScreenOn()) + returnResult.emit(Constraint.ScreenOn()) } private suspend fun onSelectScreenOffConstraint() { @@ -372,7 +372,7 @@ class ChooseConstraintViewModel @Inject constructor( response ?: return - _returnResult.emit(Constraint.ScreenOff()) + returnResult.emit(Constraint.ScreenOff()) } private suspend fun onSelectBluetoothConstraint(type: ConstraintId) { @@ -402,7 +402,7 @@ class ChooseConstraintViewModel @Inject constructor( else -> throw IllegalArgumentException("Don't know how to create $type constraint after choosing app") } - _returnResult.emit(constraint) + returnResult.emit(constraint) } private suspend fun onSelectAppConstraint(type: ConstraintId) { @@ -433,6 +433,6 @@ class ChooseConstraintViewModel @Inject constructor( else -> throw IllegalArgumentException("Don't know how to create $type constraint after choosing app") } - _returnResult.emit(constraint) + returnResult.emit(constraint) } } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt index fda2d3dcbf..d949ee114b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/Constraint.kt @@ -1,12 +1,12 @@ package io.github.sds100.keymapper.base.constraints +import io.github.sds100.keymapper.common.utils.Orientation +import io.github.sds100.keymapper.common.utils.getKey import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.data.entities.ConstraintEntity import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.getData import io.github.sds100.keymapper.system.camera.CameraLens -import io.github.sds100.keymapper.common.utils.Orientation -import io.github.sds100.keymapper.common.utils.getKey import kotlinx.serialization.Serializable import java.time.LocalTime import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt index 13dcd65a39..e5803e9b0a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/ConstraintSnapshot.kt @@ -3,11 +3,12 @@ package io.github.sds100.keymapper.base.constraints import android.media.AudioManager import android.os.Build import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService +import io.github.sds100.keymapper.common.utils.Orientation +import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.display.DisplayAdapter -import io.github.sds100.keymapper.common.utils.Orientation import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.lock.LockScreenAdapter import io.github.sds100.keymapper.system.media.MediaAdapter @@ -15,7 +16,6 @@ import io.github.sds100.keymapper.system.network.NetworkAdapter import io.github.sds100.keymapper.system.phone.CallState import io.github.sds100.keymapper.system.phone.PhoneAdapter import io.github.sds100.keymapper.system.power.PowerAdapter -import io.github.sds100.keymapper.common.utils.firstBlocking import timber.log.Timber import java.time.LocalTime diff --git a/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt index 45760071fa..c1a6cbcd03 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/constraints/GetConstraintErrorUseCase.kt @@ -1,20 +1,18 @@ package io.github.sds100.keymapper.base.constraints -import android.content.Context -import dagger.hilt.android.qualifiers.ApplicationContext import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.camera.CameraAdapter import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter -import javax.inject.Inject -import javax.inject.Singleton import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge +import javax.inject.Inject +import javax.inject.Singleton @Singleton class GetConstraintErrorUseCaseImpl @Inject constructor( @@ -22,7 +20,7 @@ class GetConstraintErrorUseCaseImpl @Inject constructor( private val permissionAdapter: PermissionAdapter, private val systemFeatureAdapter: SystemFeatureAdapter, private val inputMethodAdapter: InputMethodAdapter, - private val cameraAdapter: CameraAdapter + private val cameraAdapter: CameraAdapter, ) : GetConstraintErrorUseCase { private val invalidateConstraintErrors = merge( permissionAdapter.onPermissionsUpdate, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt index cab19a605c..890a61d6c4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupConstraintRow.kt @@ -39,12 +39,12 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.constraints.ConstraintMode -import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.drawable +import io.github.sds100.keymapper.common.utils.KMError @Composable fun GroupConstraintRow( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt index 60b1db21dd..6a384f04a8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/groups/GroupRow.kt @@ -44,8 +44,8 @@ import androidx.compose.ui.unit.dp import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.drawable @Composable fun GroupRow( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt index abd2c49dd8..47e7d65a73 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/BaseHomeViewModel.kt @@ -14,9 +14,9 @@ import io.github.sds100.keymapper.base.trigger.SetupGuiKeyboardUseCase import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate -import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogResponse import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showDialog import kotlinx.coroutines.flow.first diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt index fdc5721935..b85c8e1c4e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/KeyMapListAppBar.kt @@ -91,7 +91,6 @@ import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.compose.LocalCustomColorsPalette import io.github.sds100.keymapper.base.constraints.ConstraintMode @@ -101,12 +100,13 @@ import io.github.sds100.keymapper.base.groups.GroupConstraintRow import io.github.sds100.keymapper.base.groups.GroupListItemModel import io.github.sds100.keymapper.base.groups.GroupRow import io.github.sds100.keymapper.base.keymaps.KeyMapAppBarState -import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeChipModel import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText import io.github.sds100.keymapper.base.utils.ui.compose.icons.Import import io.github.sds100.keymapper.base.utils.ui.compose.icons.KeyMapperIcons +import io.github.sds100.keymapper.base.utils.ui.drawable +import io.github.sds100.keymapper.common.utils.KMError import kotlinx.coroutines.launch @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt b/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt index 5abc331f95..f3f32f02cc 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/home/SelectionBottomSheet.kt @@ -43,8 +43,8 @@ import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.groups.GroupBreadcrumbRow import io.github.sds100.keymapper.base.groups.GroupListItemModel import io.github.sds100.keymapper.base.groups.GroupRow -import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.drawable @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapViewModel.kt similarity index 100% rename from base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapViewModel.kt rename to base/src/main/java/io/github/sds100/keymapper/base/keymaps/BaseConfigKeyMapViewModel.kt diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt index 1d14b26611..9067eabe14 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ConfigKeyMapOptionsViewModel.kt @@ -4,17 +4,16 @@ import android.graphics.Color import android.graphics.drawable.Drawable import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.actions.ActionUiHelper -import io.github.sds100.keymapper.common.utils.onFailure -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.dataOrNull import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.common.utils.mapData import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider -import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.TintType import io.github.sds100.keymapper.base.utils.ui.showDialog +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.dataOrNull +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.common.utils.onFailure import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt index 3950afe6df..563b7bff63 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutUseCase.kt @@ -11,7 +11,7 @@ import javax.inject.Inject class CreateKeyMapShortcutUseCaseImpl @Inject constructor( private val appShortcutAdapter: AppShortcutAdapter, - private val resourceProvider: ResourceProvider + private val resourceProvider: ResourceProvider, ) : CreateKeyMapShortcutUseCase { companion object { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt index c308cb90ea..086e330619 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/CreateKeyMapShortcutViewModel.kt @@ -38,7 +38,7 @@ class CreateKeyMapShortcutViewModel @Inject constructor( private val config: ConfigKeyMapUseCase, private val listKeyMaps: ListKeyMapsUseCase, private val createKeyMapShortcut: CreateKeyMapShortcutUseCase, - private val resourceProvider: ResourceProvider + private val resourceProvider: ResourceProvider, ) : ViewModel() { private val actionUiHelper = ActionUiHelper(listKeyMaps, resourceProvider) private val constraintUiHelper = ConstraintUiHelper( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt index 072f263d72..d4632d4e2b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/DisplayKeyMapUseCase.kt @@ -80,13 +80,13 @@ class DisplayKeyMapUseCaseImpl @Inject constructor( .first() } - send(value) - } catch (_: TimeoutCancellationException) { - } - - purchasingManager.purchases.collect(this::send) + send(value) + } catch (_: TimeoutCancellationException) { } + purchasingManager.purchases.collect(this::send) + } + /** * Cache the data required for checking errors to reduce the latency of repeatedly checking * the errors. diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt index 9e9dfff95f..90c49ecea1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapListViewModel.kt @@ -31,10 +31,10 @@ import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.navigate -import io.github.sds100.keymapper.base.utils.ui.DialogResponse -import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.SelectionState import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper @@ -85,7 +85,7 @@ class KeyMapListViewModel( private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase, private val onboarding: OnboardingUseCase, private val navigationProvider: NavigationProvider, - private val dialogProvider: DialogProvider + private val dialogProvider: DialogProvider, ) : DialogProvider by dialogProvider, ResourceProvider by resourceProvider, NavigationProvider by navigationProvider { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt index a26a3b992d..e2a06d926d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/KeyMapOptionsScreen.kt @@ -43,13 +43,13 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.base.utils.ui.SliderMaximums import io.github.sds100.keymapper.base.utils.ui.SliderMinimums import io.github.sds100.keymapper.base.utils.ui.SliderStepSizes import io.github.sds100.keymapper.base.utils.ui.compose.CheckBoxText import io.github.sds100.keymapper.base.utils.ui.compose.SliderOptionText import io.github.sds100.keymapper.base.utils.ui.compose.openUriSafe +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.launch @Composable @@ -276,7 +276,9 @@ private fun TriggerFromOtherAppsSection( horizontalArrangement = Arrangement.SpaceBetween, ) { Text( - modifier = Modifier.padding(horizontal = 16.dp).weight(1f), + modifier = Modifier + .padding(horizontal = 16.dp) + .weight(1f), text = keyMapUid, maxLines = 1, overflow = TextOverflow.Ellipsis, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt index 598007c90e..dd05855e78 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/PauseKeyMapsUseCase.kt @@ -14,7 +14,7 @@ import javax.inject.Singleton class PauseKeyMapsUseCaseImpl @Inject constructor( private val preferenceRepository: PreferenceRepository, private val mediaAdapter: MediaAdapter, - private val ringtoneAdapter: RingtoneAdapter + private val ringtoneAdapter: RingtoneAdapter, ) : PauseKeyMapsUseCase { override val isPaused: Flow = diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt index 30fd952690..256a1781f8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/ShortcutRow.kt @@ -27,8 +27,8 @@ import com.google.accompanist.drawablepainter.rememberDrawablePainter import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.compose.KeyMapperTheme import io.github.sds100.keymapper.base.trigger.TriggerKeyShortcut -import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo +import io.github.sds100.keymapper.base.utils.ui.drawable @Composable fun ShortcutRow( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt index 30b82267f2..d014eb0196 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/SimpleMappingController.kt @@ -5,9 +5,9 @@ import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.actions.RepeatMode import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.constraints.isSatisfied -import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase import io.github.sds100.keymapper.common.utils.InputEventType +import io.github.sds100.keymapper.data.PreferenceDefaults import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineStart import kotlinx.coroutines.Job diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt index e00d65f4ad..fb3fc72e1f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectKeyMapsUseCase.kt @@ -7,7 +7,6 @@ import android.view.KeyEvent import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.constraints.ConstraintState import io.github.sds100.keymapper.base.groups.Group diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt index ef500d4d05..bd56ca6ef0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/DetectScreenOffKeyEventsController.kt @@ -2,13 +2,13 @@ package io.github.sds100.keymapper.base.keymaps.detection import android.view.InputDevice import android.view.KeyEvent +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.valueOrNull import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.root.SuAdapter -import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt index bf8b61c731..cc4f4ad3d1 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyMapController.kt @@ -23,8 +23,8 @@ import io.github.sds100.keymapper.base.trigger.Trigger import io.github.sds100.keymapper.base.trigger.TriggerKey import io.github.sds100.keymapper.base.trigger.TriggerKeyDevice import io.github.sds100.keymapper.base.trigger.TriggerMode -import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.InputEventType +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.minusFlag import io.github.sds100.keymapper.common.utils.withFlag @@ -42,7 +42,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -class KeyMapController ( +class KeyMapController( private val coroutineScope: CoroutineScope, private val useCase: DetectKeyMapsUseCase, private val performActionsUseCase: PerformActionsUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyPressedCallback.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyPressedCallback.kt index 946cfa41d4..cada80083c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyPressedCallback.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/KeyPressedCallback.kt @@ -3,4 +3,4 @@ package io.github.sds100.keymapper.base.keymaps.detection interface KeyPressedCallback { fun onDownEvent(button: T) fun onUpEvent(button: T) -} \ No newline at end of file +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt index a38b9d9ad9..dcdac06267 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/ParallelTriggerActionPerformer.kt @@ -4,9 +4,9 @@ import io.github.sds100.keymapper.base.actions.Action import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.actions.RepeatMode +import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.data.PreferenceDefaults import io.github.sds100.keymapper.system.inputevents.InputEventUtils -import io.github.sds100.keymapper.common.utils.InputEventType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay @@ -16,7 +16,6 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.isActive import kotlinx.coroutines.launch - class ParallelTriggerActionPerformer( private val coroutineScope: CoroutineScope, private val useCase: PerformActionsUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt index a256f3eb8b..a040f7f860 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/SequenceTriggerActionPerformer.kt @@ -8,7 +8,6 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.launch - class SequenceTriggerActionPerformer( private val coroutineScope: CoroutineScope, private val useCase: PerformActionsUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt index f3fbf24aca..c9d04b1f0d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/keymaps/detection/TriggerKeyMapFromOtherAppsController.kt @@ -1,9 +1,5 @@ package io.github.sds100.keymapper.base.keymaps.detection -import dagger.assisted.Assisted -import dagger.assisted.AssistedFactory -import dagger.assisted.AssistedInject -import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.keymaps.KeyMap diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntry.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntry.kt index 63daba0386..3d3d4a941b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntry.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntry.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.logging - data class LogEntry( val id: Int, val time: Long, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryEntityMapper.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryEntityMapper.kt index 76ac306c34..0e3d6f301d 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryEntityMapper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryEntityMapper.kt @@ -2,7 +2,6 @@ package io.github.sds100.keymapper.base.logging import io.github.sds100.keymapper.data.entities.LogEntryEntity - object LogEntryEntityMapper { fun toEntity(model: LogEntry): LogEntryEntity { val severity = when (model.severity) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt index 051f7cd4f2..5dcd1551d8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogEntryListItem.kt @@ -2,7 +2,6 @@ package io.github.sds100.keymapper.base.logging import io.github.sds100.keymapper.base.utils.ui.TintType - data class LogEntryListItem( val id: Int, val time: String, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt index 129ead1669..5c84b9c89e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogFragment.kt @@ -20,7 +20,6 @@ import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBin import io.github.sds100.keymapper.base.logEntry import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.files.FileUtils import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogSeverity.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogSeverity.kt index 440b3978f9..e90e7993da 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogSeverity.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogSeverity.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.logging - enum class LogSeverity { ERROR, INFO, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogUtils.kt index b90655fa12..93b19ffaad 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogUtils.kt @@ -6,7 +6,6 @@ import java.text.SimpleDateFormat import java.util.Date import java.util.Locale - object LogUtils { val DATE_FORMAT get() = SimpleDateFormat("MM/dd HH:mm:ss.SSS", Locale.getDefault()) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt index 2cfb2ce562..61959f6990 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/logging/LogViewModel.kt @@ -5,17 +5,16 @@ import androidx.lifecycle.viewModelScope import com.michaelflisar.dragselectrecyclerview.DragSelectionProcessor import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.ifIsData -import io.github.sds100.keymapper.common.utils.mapData -import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider -import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl +import io.github.sds100.keymapper.base.utils.ui.MultiSelectProvider import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.SelectionState import io.github.sds100.keymapper.base.utils.ui.TintType import io.github.sds100.keymapper.base.utils.ui.showDialog +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.ifIsData +import io.github.sds100.keymapper.common.utils.mapData import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -37,7 +36,7 @@ import javax.inject.Inject class LogViewModel @Inject constructor( private val useCase: DisplayLogUseCase, resourceProvider: ResourceProvider, - dialogProvider: DialogProvider + dialogProvider: DialogProvider, ) : ViewModel(), DialogProvider by dialogProvider, ResourceProvider by resourceProvider { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt index 98de65111a..d01fa193b0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/onboarding/OnboardingUseCase.kt @@ -6,8 +6,7 @@ import io.github.sds100.keymapper.base.actions.canUseImeToPerform import io.github.sds100.keymapper.base.actions.canUseShizukuToPerform import io.github.sds100.keymapper.base.purchasing.ProductId import io.github.sds100.keymapper.base.purchasing.PurchasingManager -import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter -import io.github.sds100.keymapper.system.shizuku.ShizukuUtils +import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.base.utils.VersionHelper import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.KMResult @@ -20,10 +19,11 @@ import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.data.utils.PrefDelegate import io.github.sds100.keymapper.system.apps.PackageManagerAdapter import io.github.sds100.keymapper.system.files.FileAdapter -import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.leanback.LeanbackAdapter import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuAdapter +import io.github.sds100.keymapper.system.shizuku.ShizukuUtils import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filterIsInstance diff --git a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt index c81183faf1..2ddfb3f0f7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/purchasing/PurchasingManager.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.base.purchasing -import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.common.utils.KMResult +import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt index fcff7ba782..05331b8032 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsController.kt @@ -4,18 +4,16 @@ import android.view.KeyEvent import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import dagger.hilt.android.scopes.ServiceScoped +import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import io.github.sds100.keymapper.common.utils.InputEventType import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputmethod.InputKeyModel -import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.isActive import kotlinx.coroutines.launch -import javax.inject.Inject /** * This is used for the feature created in issue #618 to fix the device IDs of key events @@ -27,7 +25,7 @@ class RerouteKeyEventsController @AssistedInject constructor( private val coroutineScope: CoroutineScope, @Assisted private val keyMapperImeMessenger: ImeInputEventInjector, - private val useCaseFactory: RerouteKeyEventsUseCaseImpl.Factory + private val useCaseFactory: RerouteKeyEventsUseCaseImpl.Factory, ) { @AssistedFactory interface Factory { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt index ddc3d180a0..83e7af7e95 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/reroutekeyevents/RerouteKeyEventsUseCase.kt @@ -4,19 +4,16 @@ import android.os.Build import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector +import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.data.repositories.PreferenceRepository import io.github.sds100.keymapper.system.inputmethod.InputKeyModel import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import kotlinx.coroutines.flow.map import kotlinx.coroutines.runBlocking -import javax.inject.Inject -import javax.inject.Singleton /** * This is used for the feature created in issue #618 to fix the device IDs of key events @@ -28,7 +25,7 @@ class RerouteKeyEventsUseCaseImpl @AssistedInject constructor( private val keyMapperImeMessenger: ImeInputEventInjector, private val inputMethodAdapter: InputMethodAdapter, private val preferenceRepository: PreferenceRepository, - private val buildConfigProvider: BuildConfigProvider + private val buildConfigProvider: BuildConfigProvider, ) : RerouteKeyEventsUseCase { @AssistedFactory diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt index 9a8158ab5c..bc67b9be08 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ConfigSettingsUseCase.kt @@ -3,6 +3,7 @@ package io.github.sds100.keymapper.base.settings import androidx.datastore.preferences.core.Preferences import io.github.sds100.keymapper.base.actions.sound.SoundFileInfo import io.github.sds100.keymapper.base.actions.sound.SoundsManager +import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.common.BuildConfigProvider import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.State @@ -14,7 +15,6 @@ import io.github.sds100.keymapper.system.devices.DevicesAdapter import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputmethod.ImeInfo import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter -import io.github.sds100.keymapper.base.system.inputmethod.KeyMapperImeHelper import io.github.sds100.keymapper.system.permissions.Permission import io.github.sds100.keymapper.system.permissions.PermissionAdapter import io.github.sds100.keymapper.system.root.SuAdapter diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt index b8bcaff1ea..051ba20271 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/DefaultOptionsSettingsFragment.kt @@ -7,12 +7,12 @@ import androidx.preference.Preference import androidx.preference.SeekBarPreference import androidx.preference.isEmpty import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.SliderMaximums import io.github.sds100.keymapper.base.utils.ui.SliderMinimums +import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope +import io.github.sds100.keymapper.data.Keys +import io.github.sds100.keymapper.data.PreferenceDefaults import kotlinx.coroutines.flow.collectLatest class DefaultOptionsSettingsFragment : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt index 7edf68f7a5..84a58b17ba 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ImePickerSettingsFragment.kt @@ -8,10 +8,10 @@ import androidx.preference.Preference import androidx.preference.SwitchPreferenceCompat import androidx.preference.isEmpty import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.data.Keys import io.github.sds100.keymapper.base.system.notifications.NotificationController -import io.github.sds100.keymapper.system.notifications.NotificationUtils import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope +import io.github.sds100.keymapper.data.Keys +import io.github.sds100.keymapper.system.notifications.NotificationUtils class ImePickerSettingsFragment : BaseSettingsFragment() { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt index 0f2ce52e20..072e8cedb7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/MainSettingsFragment.kt @@ -17,24 +17,23 @@ import androidx.preference.SwitchPreferenceCompat import androidx.preference.isEmpty import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.backup.BackupUtils -import io.github.sds100.keymapper.data.Keys -import io.github.sds100.keymapper.data.PreferenceDefaults -import io.github.sds100.keymapper.system.shizuku.ShizukuUtils -import io.github.sds100.keymapper.system.files.FileUtils import io.github.sds100.keymapper.base.system.notifications.NotificationController -import io.github.sds100.keymapper.system.notifications.NotificationUtils -import io.github.sds100.keymapper.common.utils.firstBlocking import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.base.utils.ui.strArray import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope +import io.github.sds100.keymapper.common.utils.firstBlocking +import io.github.sds100.keymapper.data.Keys +import io.github.sds100.keymapper.data.PreferenceDefaults +import io.github.sds100.keymapper.system.files.FileUtils +import io.github.sds100.keymapper.system.notifications.NotificationUtils +import io.github.sds100.keymapper.system.shizuku.ShizukuUtils import kotlinx.coroutines.flow.collectLatest import splitties.alertdialog.appcompat.alertDialog import splitties.alertdialog.appcompat.messageResource import splitties.alertdialog.appcompat.negativeButton import splitties.alertdialog.appcompat.positiveButton - class MainSettingsFragment : BaseSettingsFragment() { companion object { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsUtils.kt index 6e9e942221..d1728bdb56 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsUtils.kt @@ -6,7 +6,6 @@ import androidx.datastore.preferences.core.Preferences import androidx.preference.Preference import io.github.sds100.keymapper.base.R - object SettingsUtils { fun createChooseDevicesPreference( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt index 708e015054..34d20d304a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/SettingsViewModel.kt @@ -6,11 +6,10 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.utils.getFullMessage -import io.github.sds100.keymapper.base.utils.ui.DialogResponse -import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider -import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.State diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt index bdb17a931e..d55063e4f9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ShizukuSettingsFragment.kt @@ -6,16 +6,15 @@ import androidx.lifecycle.Lifecycle import androidx.preference.Preference import androidx.preference.isEmpty import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.system.url.UrlUtils import io.github.sds100.keymapper.base.utils.ui.drawable import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.base.utils.ui.viewLifecycleScope +import io.github.sds100.keymapper.system.url.UrlUtils import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn - class ShizukuSettingsFragment : BaseSettingsFragment() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/settings/ThemeUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/settings/ThemeUtils.kt index f8bbd41009..63d6110cf6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/settings/ThemeUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/settings/ThemeUtils.kt @@ -1,7 +1,5 @@ package io.github.sds100.keymapper.base.settings - - object ThemeUtils { const val DARK = 0 const val LIGHT = 1 diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt index 22419f53ef..3f8bf662b7 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/SortKeyMapsUseCase.kt @@ -12,7 +12,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlinx.serialization.json.Json import javax.inject.Inject -import javax.inject.Singleton class SortKeyMapsUseCaseImpl @Inject constructor( private val preferenceRepository: PreferenceRepository, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt index 64917615f7..53ffdbb46f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapActionsComparator.kt @@ -2,10 +2,10 @@ package io.github.sds100.keymapper.base.sorting.comparators import io.github.sds100.keymapper.base.actions.ActionData import io.github.sds100.keymapper.base.actions.DisplayActionUseCase +import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.valueOrNull -import io.github.sds100.keymapper.base.keymaps.KeyMap class KeyMapActionsComparator( private val displayActions: DisplayActionUseCase, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt index b3e2136389..0f9f9a0987 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/sorting/comparators/KeyMapConstraintsComparator.kt @@ -1,12 +1,12 @@ package io.github.sds100.keymapper.base.sorting.comparators +import io.github.sds100.keymapper.base.constraints.Constraint +import io.github.sds100.keymapper.base.constraints.DisplayConstraintUseCase +import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.common.utils.then import io.github.sds100.keymapper.common.utils.valueOrNull -import io.github.sds100.keymapper.base.constraints.Constraint -import io.github.sds100.keymapper.base.constraints.DisplayConstraintUseCase -import io.github.sds100.keymapper.base.keymaps.KeyMap import java.time.LocalDate import java.time.ZoneOffset diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt index 6bd6532ec2..769d70a7da 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/AccessibilityNodeRecorder.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.system.accessibility -import android.accessibilityservice.AccessibilityService import android.os.Build import android.os.CountDownTimer import android.view.accessibility.AccessibilityEvent @@ -8,7 +7,6 @@ import android.view.accessibility.AccessibilityNodeInfo import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.common.utils.NodeInteractionType import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt index 64eca889cc..a39025a574 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityService.kt @@ -26,11 +26,11 @@ import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjectorImpl import io.github.sds100.keymapper.base.trigger.KeyEventDetectionSource -import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.InputEventType +import io.github.sds100.keymapper.common.utils.KMError +import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.MathUtils import io.github.sds100.keymapper.common.utils.PinchScreenType -import io.github.sds100.keymapper.common.utils.KMResult import io.github.sds100.keymapper.common.utils.Success import io.github.sds100.keymapper.system.devices.InputDeviceUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt index c8d6e8ab1f..121afbadaa 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/BaseAccessibilityServiceController.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.system.accessibility -import android.accessibilityservice.AccessibilityService import android.accessibilityservice.AccessibilityServiceInfo import android.content.res.Configuration import android.os.Build @@ -8,17 +7,13 @@ import android.view.KeyEvent import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityNodeInfo import androidx.lifecycle.lifecycleScope -import dagger.hilt.android.scopes.ServiceScoped import io.github.sds100.keymapper.base.actions.ActionData -import io.github.sds100.keymapper.base.actions.PerformActionsUseCase import io.github.sds100.keymapper.base.actions.PerformActionsUseCaseImpl import io.github.sds100.keymapper.base.actions.TestActionEvent -import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCase import io.github.sds100.keymapper.base.constraints.DetectConstraintsUseCaseImpl import io.github.sds100.keymapper.base.keymaps.FingerprintGesturesSupportedUseCase import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.TriggerKeyMapEvent -import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCase import io.github.sds100.keymapper.base.keymaps.detection.DetectKeyMapsUseCaseImpl import io.github.sds100.keymapper.base.keymaps.detection.DetectScreenOffKeyEventsController import io.github.sds100.keymapper.base.keymaps.detection.DpadMotionEventTracker @@ -40,7 +35,6 @@ import io.github.sds100.keymapper.system.inputevents.InputEventUtils import io.github.sds100.keymapper.system.inputevents.MyKeyEvent import io.github.sds100.keymapper.system.inputevents.MyMotionEvent import io.github.sds100.keymapper.system.root.SuAdapter -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.delay @@ -63,7 +57,6 @@ import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import timber.log.Timber -import javax.inject.Inject abstract class BaseAccessibilityServiceController( private val service: BaseAccessibilityService, @@ -76,7 +69,7 @@ abstract class BaseAccessibilityServiceController( private val pauseKeyMapsUseCase: PauseKeyMapsUseCase, private val devicesAdapter: DevicesAdapter, private val suAdapter: SuAdapter, - private val settingsRepository: PreferenceRepository + private val settingsRepository: PreferenceRepository, ) { companion object { @@ -89,13 +82,13 @@ abstract class BaseAccessibilityServiceController( private val performActionsUseCase = performActionsUseCaseFactory.create( accessibilityService = service, - imeInputEventInjector = service.imeInputEventInjector + imeInputEventInjector = service.imeInputEventInjector, ) private val detectKeyMapsUseCase = detectKeyMapsUseCaseFactory.create( accessibilityService = service, coroutineScope = service.lifecycleScope, - imeInputEventInjector = service.imeInputEventInjector + imeInputEventInjector = service.imeInputEventInjector, ) val detectConstraintsUseCase = detectConstraintsUseCaseFactory.create(service) @@ -104,19 +97,19 @@ abstract class BaseAccessibilityServiceController( service.lifecycleScope, detectKeyMapsUseCase, performActionsUseCase, - detectConstraintsUseCase + detectConstraintsUseCase, ) val triggerKeyMapFromOtherAppsController = TriggerKeyMapFromOtherAppsController( service.lifecycleScope, detectKeyMapsUseCase, performActionsUseCase, - detectConstraintsUseCase + detectConstraintsUseCase, ) val rerouteKeyEventsController = rerouteKeyEventsControllerFactory.create( service.lifecycleScope, - service.imeInputEventInjector + service.imeInputEventInjector, ) val accessibilityNodeRecorder = accessibilityNodeRecorderFactory.create(service) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt index facafe833a..c62a1c8b05 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/accessibility/IAccessibilityService.kt @@ -3,8 +3,8 @@ package io.github.sds100.keymapper.base.system.accessibility import android.os.Build import androidx.annotation.RequiresApi import io.github.sds100.keymapper.common.utils.InputEventType -import io.github.sds100.keymapper.common.utils.PinchScreenType import io.github.sds100.keymapper.common.utils.KMResult +import io.github.sds100.keymapper.common.utils.PinchScreenType import kotlinx.coroutines.flow.Flow interface IAccessibilityService { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppActivityListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppActivityListItem.kt index 7d99470e00..c20076d8be 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppActivityListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppActivityListItem.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.system.apps -import io.github.sds100.keymapper.system.apps.ActivityInfo import io.github.sds100.keymapper.base.utils.ui.IconInfo import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld import io.github.sds100.keymapper.base.utils.ui.TintType +import io.github.sds100.keymapper.system.apps.ActivityInfo data class AppActivityListItem( val appName: String, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppShortcutListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppShortcutListItem.kt index 4e83db7b23..6d3dcb3f82 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppShortcutListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/AppShortcutListItem.kt @@ -1,9 +1,9 @@ package io.github.sds100.keymapper.base.system.apps -import io.github.sds100.keymapper.system.apps.AppShortcutInfo import io.github.sds100.keymapper.base.utils.ui.IconInfo import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld import io.github.sds100.keymapper.base.utils.ui.TintType +import io.github.sds100.keymapper.system.apps.AppShortcutInfo data class AppShortcutListItem( val shortcutInfo: AppShortcutInfo, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt index 3ac8be78a4..579bb48d4b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseActivityViewModel.kt @@ -21,7 +21,7 @@ import javax.inject.Inject @HiltViewModel class ChooseActivityViewModel @Inject constructor( - private val useCase: DisplayAppsUseCase + private val useCase: DisplayAppsUseCase, ) : ViewModel() { val searchQuery = MutableStateFlow(null) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt index 5431e3a513..291ff86a08 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutFragment.kt @@ -16,7 +16,6 @@ import io.github.sds100.keymapper.base.simple import io.github.sds100.keymapper.base.utils.ui.RecyclerViewUtils import io.github.sds100.keymapper.base.utils.ui.SimpleRecyclerViewFragment import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle -import io.github.sds100.keymapper.base.utils.ui.showDialogs import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.apps.AppShortcutInfo import kotlinx.coroutines.flow.Flow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt index 5ac003329c..c018268c2c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppShortcutViewModel.kt @@ -5,16 +5,15 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.valueOrNull -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.mapData import io.github.sds100.keymapper.base.utils.filterByQuery -import io.github.sds100.keymapper.base.utils.ui.IconInfo import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider -import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl +import io.github.sds100.keymapper.base.utils.ui.IconInfo import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showDialog +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.common.utils.valueOrNull import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -32,7 +31,7 @@ import javax.inject.Inject class ChooseAppShortcutViewModel @Inject constructor( private val useCase: DisplayAppShortcutsUseCase, private val resourceProvider: ResourceProvider, - dialogProvider: DialogProvider + dialogProvider: DialogProvider, ) : ViewModel(), DialogProvider by dialogProvider, ResourceProvider by resourceProvider { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppViewModel.kt index 6b5e56e27a..4339359584 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/apps/ChooseAppViewModel.kt @@ -3,14 +3,14 @@ package io.github.sds100.keymapper.base.system.apps import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sds100.keymapper.common.utils.valueOrNull -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.mapData -import io.github.sds100.keymapper.system.apps.PackageInfo import io.github.sds100.keymapper.base.utils.filterByQuery import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem import io.github.sds100.keymapper.base.utils.ui.IconInfo import io.github.sds100.keymapper.base.utils.ui.SimpleListItemOld +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.mapData +import io.github.sds100.keymapper.common.utils.valueOrNull +import io.github.sds100.keymapper.system.apps.PackageInfo import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt index c117824e73..9b3e10f725 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/bluetooth/ChooseBluetoothDeviceViewModel.kt @@ -4,14 +4,13 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sds100.keymapper.base.R -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import io.github.sds100.keymapper.base.utils.ui.DefaultSimpleListItem -import io.github.sds100.keymapper.base.utils.ui.ListItem import io.github.sds100.keymapper.base.utils.ui.DialogProvider -import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl +import io.github.sds100.keymapper.base.utils.ui.ListItem import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.TextListItem +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -26,7 +25,7 @@ import javax.inject.Inject class ChooseBluetoothDeviceViewModel @Inject constructor( private val useCase: ChooseBluetoothDeviceUseCase, private val resourceProvider: ResourceProvider, - dialogProvider: DialogProvider + dialogProvider: DialogProvider, ) : ViewModel(), ResourceProvider by resourceProvider, DialogProvider by dialogProvider { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt index eac77bd1a9..a6bca470c0 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModel.kt @@ -15,11 +15,10 @@ import io.github.sds100.keymapper.base.utils.navigation.NavDestination import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.navigation.NavigationProviderImpl import io.github.sds100.keymapper.base.utils.navigation.navigate -import io.github.sds100.keymapper.base.utils.ui.DialogResponse -import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider -import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.showDialog import io.github.sds100.keymapper.common.utils.hasFlag @@ -64,7 +63,7 @@ import javax.inject.Inject @HiltViewModel class ConfigIntentViewModel @Inject constructor( private val resourceProvider: ResourceProvider, - dialogProvider: DialogProvider + dialogProvider: DialogProvider, ) : ViewModel(), ResourceProvider by resourceProvider, DialogProvider by dialogProvider, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationClickReceiver.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationClickReceiver.kt index 0aa92613d7..0558a8ad5f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationClickReceiver.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationClickReceiver.kt @@ -5,7 +5,6 @@ import android.content.Context import android.content.Intent import android.os.Build import dagger.hilt.android.AndroidEntryPoint -import io.github.sds100.keymapper.system.notifications.NotificationReceiverAdapterImpl import javax.inject.Inject @AndroidEntryPoint diff --git a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt index bf7bc273e2..4a25132dae 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/system/notifications/NotificationController.kt @@ -8,6 +8,9 @@ import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.keymaps.PauseKeyMapsUseCase import io.github.sds100.keymapper.base.onboarding.OnboardingUseCase import io.github.sds100.keymapper.base.system.accessibility.ControlAccessibilityServiceUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ShowHideInputMethodUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase +import io.github.sds100.keymapper.base.system.inputmethod.ToggleCompatibleImeUseCase import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.common.BuildConfigProvider @@ -16,9 +19,6 @@ import io.github.sds100.keymapper.common.utils.DispatcherProvider import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.accessibility.AccessibilityServiceState -import io.github.sds100.keymapper.base.system.inputmethod.ShowHideInputMethodUseCase -import io.github.sds100.keymapper.base.system.inputmethod.ShowInputMethodPickerUseCase -import io.github.sds100.keymapper.base.system.inputmethod.ToggleCompatibleImeUseCase import io.github.sds100.keymapper.system.notifications.NotificationChannelModel import io.github.sds100.keymapper.system.notifications.NotificationIntentType import io.github.sds100.keymapper.system.notifications.NotificationModel @@ -72,28 +72,29 @@ class NotificationController @Inject constructor( private const val CHANNEL_ID_PERSISTENT = "channel_persistent" } - private val ACTION_RESUME_MAPPINGS = + private val actionResumeMappings = "${buildConfigProvider.packageName}.ACTION_RESUME_MAPPINGS" - private val ACTION_PAUSE_MAPPINGS = "${buildConfigProvider.packageName}.ACTION_PAUSE_MAPPINGS" + private val actionPauseMappings = "${buildConfigProvider.packageName}.ACTION_PAUSE_MAPPINGS" - private val ACTION_START_SERVICE = + private val actionStartService = "${buildConfigProvider.packageName}.ACTION_START_ACCESSIBILITY_SERVICE" - private val ACTION_RESTART_SERVICE = + private val actionRestartService = "${buildConfigProvider.packageName}.ACTION_RESTART_ACCESSIBILITY_SERVICE" - private val ACTION_STOP_SERVICE = + private val actionStopService = "${buildConfigProvider.packageName}.ACTION_STOP_ACCESSIBILITY_SERVICE" - private val ACTION_DISMISS_TOGGLE_MAPPINGS = + private val actionDismissToggleMappings = "${buildConfigProvider.packageName}.ACTION_DISMISS_TOGGLE_MAPPINGS" - private val ACTION_SHOW_IME_PICKER = + private val actionShowImePicker = "${buildConfigProvider.packageName}.ACTION_SHOW_IME_PICKER" - private val ACTION_SHOW_KEYBOARD = "${buildConfigProvider.packageName}.ACTION_SHOW_KEYBOARD" - private val ACTION_TOGGLE_KEYBOARD = + private val actionShowKeyboard = "${buildConfigProvider.packageName}.ACTION_SHOW_KEYBOARD" + + private val actionToggleKeyboard = "${buildConfigProvider.packageName}.ACTION_TOGGLE_KEYBOARD" /** @@ -191,16 +192,16 @@ class NotificationController @Inject constructor( manageNotifications.onActionClick.onEach { actionId -> when (actionId) { - ACTION_RESUME_MAPPINGS -> pauseMappings.resume() - ACTION_PAUSE_MAPPINGS -> pauseMappings.pause() - ACTION_START_SERVICE -> attemptStartAccessibilityService() - ACTION_RESTART_SERVICE -> attemptRestartAccessibilityService() - ACTION_STOP_SERVICE -> controlAccessibilityService.stopService() - - ACTION_DISMISS_TOGGLE_MAPPINGS -> manageNotifications.dismiss(ID_TOGGLE_MAPPINGS) - ACTION_SHOW_IME_PICKER -> showImePicker.show(fromForeground = false) - ACTION_SHOW_KEYBOARD -> hideInputMethod.show() - ACTION_TOGGLE_KEYBOARD -> toggleCompatibleIme.toggle().onSuccess { + actionResumeMappings -> pauseMappings.resume() + actionPauseMappings -> pauseMappings.pause() + actionStartService -> attemptStartAccessibilityService() + actionRestartService -> attemptRestartAccessibilityService() + actionStopService -> controlAccessibilityService.stopService() + + actionDismissToggleMappings -> manageNotifications.dismiss(ID_TOGGLE_MAPPINGS) + actionShowImePicker -> showImePicker.show(fromForeground = false) + actionShowKeyboard -> hideInputMethod.show() + actionToggleKeyboard -> toggleCompatibleIme.toggle().onSuccess { _showToast.emit(getString(R.string.toast_chose_keyboard, it.label)) }.onFailure { _showToast.emit(it.getFullMessage(this)) @@ -276,7 +277,7 @@ class NotificationController @Inject constructor( val stopServiceAction = if (controlAccessibilityService.isUserInteractionRequired()) { NotificationIntentType.Activity(Settings.ACTION_ACCESSIBILITY_SETTINGS) } else { - NotificationIntentType.Broadcast(ACTION_STOP_SERVICE) + NotificationIntentType.Broadcast(actionStopService) } return NotificationModel( @@ -292,11 +293,11 @@ class NotificationController @Inject constructor( actions = listOf( NotificationModel.Action( getString(R.string.notification_action_resume), - NotificationIntentType.Broadcast(ACTION_RESUME_MAPPINGS), + NotificationIntentType.Broadcast(actionResumeMappings), ), NotificationModel.Action( getString(R.string.notification_action_dismiss), - NotificationIntentType.Broadcast(ACTION_DISMISS_TOGGLE_MAPPINGS), + NotificationIntentType.Broadcast(actionDismissToggleMappings), ), NotificationModel.Action( getString(R.string.notification_action_stop_acc_service), @@ -313,7 +314,7 @@ class NotificationController @Inject constructor( val stopServiceAction = if (controlAccessibilityService.isUserInteractionRequired()) { NotificationIntentType.Activity(Settings.ACTION_ACCESSIBILITY_SETTINGS) } else { - NotificationIntentType.Broadcast(ACTION_STOP_SERVICE) + NotificationIntentType.Broadcast(actionStopService) } return NotificationModel( @@ -329,11 +330,11 @@ class NotificationController @Inject constructor( actions = listOf( NotificationModel.Action( getString(R.string.notification_action_pause), - NotificationIntentType.Broadcast(ACTION_PAUSE_MAPPINGS), + NotificationIntentType.Broadcast(actionPauseMappings), ), NotificationModel.Action( getString(R.string.notification_action_dismiss), - NotificationIntentType.Broadcast(ACTION_DISMISS_TOGGLE_MAPPINGS), + NotificationIntentType.Broadcast(actionDismissToggleMappings), ), NotificationModel.Action( getString(R.string.notification_action_stop_acc_service), @@ -350,7 +351,7 @@ class NotificationController @Inject constructor( val onClickAction = if (controlAccessibilityService.isUserInteractionRequired()) { NotificationIntentType.Activity(Settings.ACTION_ACCESSIBILITY_SETTINGS) } else { - NotificationIntentType.Broadcast(ACTION_START_SERVICE) + NotificationIntentType.Broadcast(actionStartService) } return NotificationModel( @@ -366,7 +367,7 @@ class NotificationController @Inject constructor( actions = listOf( NotificationModel.Action( getString(R.string.notification_action_dismiss), - NotificationIntentType.Broadcast(ACTION_DISMISS_TOGGLE_MAPPINGS), + NotificationIntentType.Broadcast(actionDismissToggleMappings), ), ), ) @@ -379,7 +380,7 @@ class NotificationController @Inject constructor( val onClickAction = if (controlAccessibilityService.isUserInteractionRequired()) { NotificationIntentType.Activity(Settings.ACTION_ACCESSIBILITY_SETTINGS) } else { - NotificationIntentType.Broadcast(ACTION_RESTART_SERVICE) + NotificationIntentType.Broadcast(actionRestartService) } return NotificationModel( @@ -408,7 +409,7 @@ class NotificationController @Inject constructor( title = getString(R.string.notification_ime_persistent_title), text = getString(R.string.notification_ime_persistent_text), icon = R.drawable.ic_notification_keyboard, - onClickAction = NotificationIntentType.Broadcast(ACTION_SHOW_IME_PICKER), + onClickAction = NotificationIntentType.Broadcast(actionShowImePicker), showOnLockscreen = false, onGoing = true, priority = NotificationCompat.PRIORITY_MIN, @@ -426,7 +427,7 @@ class NotificationController @Inject constructor( actions = listOf( NotificationModel.Action( getString(R.string.notification_toggle_keyboard_action), - intentType = NotificationIntentType.Broadcast(ACTION_TOGGLE_KEYBOARD), + intentType = NotificationIntentType.Broadcast(actionToggleKeyboard), ), ), ) @@ -437,7 +438,7 @@ class NotificationController @Inject constructor( title = getString(R.string.notification_keyboard_hidden_title), text = getString(R.string.notification_keyboard_hidden_text), icon = R.drawable.ic_notification_keyboard_hide, - onClickAction = NotificationIntentType.Broadcast(ACTION_SHOW_KEYBOARD), + onClickAction = NotificationIntentType.Broadcast(actionShowKeyboard), showOnLockscreen = false, onGoing = true, priority = NotificationCompat.PRIORITY_LOW, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleKeyMapperKeyboardTile.kt b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleKeyMapperKeyboardTile.kt index 509f1dd30d..2351c04bf6 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleKeyMapperKeyboardTile.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/tiles/ToggleKeyMapperKeyboardTile.kt @@ -12,13 +12,13 @@ import androidx.lifecycle.LifecycleRegistry import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint import io.github.sds100.keymapper.base.R +import io.github.sds100.keymapper.base.system.inputmethod.ToggleCompatibleImeUseCase import io.github.sds100.keymapper.base.utils.getFullMessage import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.launchRepeatOnLifecycle import io.github.sds100.keymapper.base.utils.ui.str import io.github.sds100.keymapper.common.utils.onFailure import io.github.sds100.keymapper.common.utils.onSuccess -import io.github.sds100.keymapper.base.system.inputmethod.ToggleCompatibleImeUseCase import kotlinx.coroutines.flow.first import javax.inject.Inject diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt index 0d4b0691e7..0acb6cde87 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/AssistantTriggerKey.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.base.trigger +import io.github.sds100.keymapper.base.keymaps.ClickType import io.github.sds100.keymapper.data.entities.AssistantTriggerKeyEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity -import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import java.util.UUID diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt index 5c5b01acc5..0244f5266b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/BaseConfigTriggerViewModel.kt @@ -25,10 +25,10 @@ import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureTy import io.github.sds100.keymapper.base.utils.InputEventStrings import io.github.sds100.keymapper.base.utils.navigation.NavigationProvider import io.github.sds100.keymapper.base.utils.ui.CheckBoxListItem -import io.github.sds100.keymapper.base.utils.ui.DialogResponse -import io.github.sds100.keymapper.base.utils.ui.LinkType import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProvider +import io.github.sds100.keymapper.base.utils.ui.DialogResponse +import io.github.sds100.keymapper.base.utils.ui.LinkType import io.github.sds100.keymapper.base.utils.ui.ResourceProvider import io.github.sds100.keymapper.base.utils.ui.ViewModelHelper import io.github.sds100.keymapper.base.utils.ui.compose.ComposeIconInfo diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt index ae7e76238e..cbb4aa976c 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/KeyCodeTriggerKey.kt @@ -1,11 +1,11 @@ package io.github.sds100.keymapper.base.trigger -import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity -import io.github.sds100.keymapper.data.entities.TriggerKeyEntity import io.github.sds100.keymapper.base.keymaps.ClickType -import kotlinx.serialization.Serializable import io.github.sds100.keymapper.common.utils.hasFlag import io.github.sds100.keymapper.common.utils.withFlag +import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity +import io.github.sds100.keymapper.data.entities.TriggerKeyEntity +import kotlinx.serialization.Serializable import java.util.UUID @Serializable diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt index dcab40a81d..dcaaaddbbf 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordTriggerState.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.trigger - sealed class RecordTriggerState { data object Idle : RecordTriggerState() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt index cfc961f291..f4db2f265b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/RecordedKey.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.trigger - data class RecordedKey( val keyCode: Int, val device: TriggerKeyDevice, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt index 1c462c02e9..2bba80a7ae 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/Trigger.kt @@ -16,7 +16,6 @@ import io.github.sds100.keymapper.data.entities.getData import io.github.sds100.keymapper.system.inputevents.InputEventUtils import kotlinx.serialization.Serializable - @Serializable data class Trigger( val keys: List = emptyList(), diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt index 8f20573b74..b50cc06efe 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerError.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.trigger - enum class TriggerError(val isFixable: Boolean) { DND_ACCESS_DENIED(isFixable = true), SCREEN_OFF_ROOT_DENIED(isFixable = true), diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt index 32c82937c8..70184806ee 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerErrorSnapshot.kt @@ -2,13 +2,13 @@ package io.github.sds100.keymapper.base.trigger import android.os.Build import android.view.KeyEvent -import io.github.sds100.keymapper.common.utils.KMResult -import io.github.sds100.keymapper.common.utils.onFailure -import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.base.keymaps.KeyMap import io.github.sds100.keymapper.base.keymaps.requiresImeKeyEventForwardingInPhoneCall import io.github.sds100.keymapper.base.purchasing.ProductId import io.github.sds100.keymapper.base.purchasing.PurchasingError +import io.github.sds100.keymapper.common.utils.KMResult +import io.github.sds100.keymapper.common.utils.onFailure +import io.github.sds100.keymapper.common.utils.onSuccess import io.github.sds100.keymapper.system.inputevents.InputEventUtils /** diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt index e99b96af69..08d7942721 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerKeyDevice.kt @@ -3,8 +3,6 @@ package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.system.devices.InputDeviceInfo import kotlinx.serialization.Serializable - - @Serializable sealed class TriggerKeyDevice : Comparable { override fun compareTo(other: TriggerKeyDevice) = this.javaClass.name.compareTo(other.javaClass.name) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt index 7abf2853ab..0b52d9ff0a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/trigger/TriggerMode.kt @@ -3,8 +3,6 @@ package io.github.sds100.keymapper.base.trigger import io.github.sds100.keymapper.base.keymaps.ClickType import kotlinx.serialization.Serializable - - @Serializable sealed class TriggerMode : Comparable { override fun compareTo(other: TriggerMode) = this.javaClass.name.compareTo(other.javaClass.name) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/DndModeStrings.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/DndModeStrings.kt index 9da8ca6fc2..50b3563cf8 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/DndModeStrings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/DndModeStrings.kt @@ -9,4 +9,4 @@ object DndModeStrings { DndMode.PRIORITY -> R.string.dnd_mode_priority DndMode.NONE -> R.string.dnd_mode_none } -} +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/IntentStrings.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/IntentStrings.kt index 3113766699..397ce57539 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/IntentStrings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/IntentStrings.kt @@ -61,4 +61,4 @@ fun IntentExtraType.getExampleStringRes(): Int = when (this) { is FloatArrayExtraType -> R.string.intent_type_float_array_example is ShortExtraType -> R.string.intent_type_short_example is ShortArrayExtraType -> R.string.intent_type_short_array_example -} \ No newline at end of file +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/RingerModeStrings.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/RingerModeStrings.kt index 9e86bba5d5..a719a2822b 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/RingerModeStrings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/RingerModeStrings.kt @@ -9,4 +9,4 @@ object RingerModeStrings { RingerMode.VIBRATE -> R.string.ringer_mode_vibrate RingerMode.SILENT -> R.string.ringer_mode_silent } -} \ No newline at end of file +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/VersionHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/VersionHelper.kt index 666009d8f3..173bd9f697 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/VersionHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/VersionHelper.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.utils - object VersionHelper { const val VERSION_2_3_0 = 43 diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/VolumeStreamStrings.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/VolumeStreamStrings.kt index acb74dd5a0..f8556402c9 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/VolumeStreamStrings.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/VolumeStreamStrings.kt @@ -14,4 +14,4 @@ object VolumeStreamStrings { VolumeStream.VOICE_CALL -> R.string.stream_voice_call VolumeStream.ACCESSIBILITY -> R.string.stream_accessibility } -} \ No newline at end of file +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt index e9392258ab..8f6c870c49 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavDestination.kt @@ -135,7 +135,7 @@ abstract class NavDestination(val isCompose: Boolean = false) { data class NewKeyMap( val groupUid: String?, val showAdvancedTriggers: Boolean = false, - val floatingButtonToUse: String? = null + val floatingButtonToUse: String? = null, ) : NavDestination(isCompose = true) { override val id: String = ID_CONFIG_KEY_MAP } diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavResult.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavResult.kt index 5c72ffa2e2..1829cdbcee 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavResult.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavResult.kt @@ -1,4 +1,3 @@ package io.github.sds100.keymapper.base.utils.navigation - data class NavResult(val key: String, val data: String?) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigateEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigateEvent.kt index 0f4d6db12e..b55f78d6f3 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigateEvent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigateEvent.kt @@ -1,4 +1,3 @@ package io.github.sds100.keymapper.base.utils.navigation - data class NavigateEvent(val key: String, val destination: NavDestination<*>) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt index 926269c378..688e2548e4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/navigation/NavigationUtils.kt @@ -5,7 +5,6 @@ import androidx.navigation.NavBackStackEntry import androidx.navigation.NavController import androidx.navigation.toRoute - fun NavBackStackEntry.observeLiveData( lifecycleOwner: LifecycleOwner, key: String, @@ -48,4 +47,4 @@ inline fun NavBackStackEntry.handleRouteArgs(block: (R) -> Unit) { block(args) savedStateHandle["handled_args"] = true -} \ No newline at end of file +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/LifecycleUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/LifecycleUtils.kt index 21c3ac2831..e4ce0e7e0e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/LifecycleUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/LifecycleUtils.kt @@ -10,7 +10,6 @@ import androidx.lifecycle.repeatOnLifecycle import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch - val Fragment.viewLifecycleScope: LifecycleCoroutineScope get() = viewLifecycleOwner.lifecycle.coroutineScope @@ -21,4 +20,4 @@ fun LifecycleOwner.launchRepeatOnLifecycle( lifecycleScope.launch { this@launchRepeatOnLifecycle.repeatOnLifecycle(state, block) } -} \ No newline at end of file +} diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiChoiceItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiChoiceItem.kt index 55ca90dfbc..1eb06e5859 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiChoiceItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiChoiceItem.kt @@ -1,4 +1,3 @@ package io.github.sds100.keymapper.base.utils.ui - data class MultiChoiceItem(val id: ID, val label: String, val isChecked: Boolean = false) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiSelectProvider.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiSelectProvider.kt index fc8dccc068..2dcd672b1a 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiSelectProvider.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/MultiSelectProvider.kt @@ -3,8 +3,6 @@ package io.github.sds100.keymapper.base.utils.ui import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update - - class MultiSelectProvider { private val lock = Any() val state = MutableStateFlow(SelectionState.NotSelecting) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnDialogResponseEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnDialogResponseEvent.kt index e7271235cd..db31c57486 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnDialogResponseEvent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/OnDialogResponseEvent.kt @@ -1,4 +1,3 @@ package io.github.sds100.keymapper.base.utils.ui - data class OnDialogResponseEvent(val key: String, val response: Any?) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonPairListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonPairListItem.kt index a8a6052b98..353b9dd2b4 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonPairListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonPairListItem.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.utils.ui - data class RadioButtonPairListItem( override val id: String, val header: String, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonTripleListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonTripleListItem.kt index cee285c9fb..810c560bda 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonTripleListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RadioButtonTripleListItem.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.utils.ui - data class RadioButtonTripleListItem( override val id: String, val header: String, diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt index ae6f4ce86b..937b7b37a2 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewFragment.kt @@ -25,7 +25,6 @@ import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest - abstract class RecyclerViewFragment : Fragment() { companion object { diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewUtils.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewUtils.kt index ea96a1fb8d..692bfe9efe 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewUtils.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/RecyclerViewUtils.kt @@ -7,8 +7,6 @@ import androidx.recyclerview.widget.RecyclerView import io.github.sds100.keymapper.base.R import kotlin.math.floor - - object RecyclerViewUtils { fun applySimpleListItemDecorations(recyclerView: RecyclerView) { val itemPadding = recyclerView.resources.getDimensionPixelSize(R.dimen.grid_padding) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SectionHeaderListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SectionHeaderListItem.kt index 65ec4dd379..3b5eb31482 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SectionHeaderListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SectionHeaderListItem.kt @@ -1,4 +1,3 @@ package io.github.sds100.keymapper.base.utils.ui - data class SectionHeaderListItem(override val id: String, val text: String) : ListItem diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SelectionState.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SelectionState.kt index e17f93dcfc..43d29e37ae 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SelectionState.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SelectionState.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.utils.ui - sealed class SelectionState { data class Selecting(val selectedIds: Set) : SelectionState() data object NotSelecting : SelectionState() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowDialogEvent.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowDialogEvent.kt index e31336e6d4..67051f04ca 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowDialogEvent.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ShowDialogEvent.kt @@ -1,4 +1,3 @@ package io.github.sds100.keymapper.base.utils.ui - data class ShowDialogEvent(val key: String, val ui: DialogModel<*>) diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt index cb4250b003..263f6e8d96 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SimpleRecyclerViewFragment.kt @@ -8,7 +8,6 @@ import com.google.android.material.bottomappbar.BottomAppBar import io.github.sds100.keymapper.base.R import io.github.sds100.keymapper.base.databinding.FragmentSimpleRecyclerviewBinding - abstract class SimpleRecyclerViewFragment : RecyclerViewFragment() { @MenuRes diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMaximums.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMaximums.kt index ccbfa28326..3c221c1e43 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMaximums.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMaximums.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.utils.ui - object SliderMaximums { const val ACTION_MULTIPLIER = 20 const val DELAY_BEFORE_NEXT_ACTION = 2000 diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMinimums.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMinimums.kt index 40eaff2019..5a4c852b8e 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMinimums.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderMinimums.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.utils.ui - object SliderMinimums { const val ACTION_MULTIPLIER = 1 const val DELAY_BEFORE_NEXT_ACTION = 0 diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderStepSizes.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderStepSizes.kt index d77b9a1013..6777a2bd2f 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderStepSizes.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SliderStepSizes.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.base.utils.ui - object SliderStepSizes { const val ACTION_MULTIPLIER = 1 const val DELAY_BEFORE_NEXT_ACTION = 100 diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SquareImageButton.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SquareImageButton.kt index 01a559b799..6a87f6ca99 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SquareImageButton.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/SquareImageButton.kt @@ -4,7 +4,6 @@ import android.content.Context import android.util.AttributeSet import androidx.appcompat.widget.AppCompatImageButton - class SquareImageButton(context: Context, attrs: AttributeSet?) : AppCompatImageButton(context, attrs) { override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { // have equal sides. diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TextListItem.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TextListItem.kt index a7d7067e76..ad58334aab 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TextListItem.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TextListItem.kt @@ -1,7 +1,5 @@ package io.github.sds100.keymapper.base.utils.ui - - sealed class TextListItem : ListItem { data class Success(override val id: String, val text: String) : TextListItem() data class Error( diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TintType.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TintType.kt index 991ff969e6..8a07a9a626 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TintType.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/TintType.kt @@ -2,7 +2,6 @@ package io.github.sds100.keymapper.base.utils.ui import androidx.annotation.ColorInt - sealed class TintType { object None : TintType() object OnSurface : TintType() diff --git a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt index 05151edca9..117e4364cb 100644 --- a/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt +++ b/base/src/main/java/io/github/sds100/keymapper/base/utils/ui/ViewModelHelper.kt @@ -7,7 +7,6 @@ import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.system.SystemError import io.github.sds100.keymapper.system.permissions.Permission - object ViewModelHelper { suspend fun handleKeyMapperCrashedDialog( resourceProvider: ResourceProvider, diff --git a/base/src/test/java/io/github/sds100/keymapper/base/TestDispatcherProvider.kt b/base/src/test/java/io/github/sds100/keymapper/base/TestDispatcherProvider.kt index b18d1c9676..3afb5bf624 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/TestDispatcherProvider.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/TestDispatcherProvider.kt @@ -3,8 +3,6 @@ package io.github.sds100.keymapper.base import io.github.sds100.keymapper.common.utils.DispatcherProvider import kotlinx.coroutines.test.TestDispatcher - - class TestDispatcherProvider( private val testDispatcher: TestDispatcher, ) : DispatcherProvider { diff --git a/base/src/test/java/io/github/sds100/keymapper/base/TestLoggingTree.kt b/base/src/test/java/io/github/sds100/keymapper/base/TestLoggingTree.kt index 629b6a71e5..9c8cafddd3 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/TestLoggingTree.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/TestLoggingTree.kt @@ -2,7 +2,6 @@ package io.github.sds100.keymapper.base import timber.log.Timber - class TestLoggingTree : Timber.Tree() { override fun log(priority: Int, tag: String?, message: String, t: Throwable?) { t?.printStackTrace() diff --git a/base/src/test/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCaseTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCaseTest.kt index a7f9283faf..5dee3c53b7 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCaseTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/actions/PerformActionsUseCaseTest.kt @@ -5,8 +5,8 @@ import android.view.KeyEvent import io.github.sds100.keymapper.base.system.accessibility.IAccessibilityService import io.github.sds100.keymapper.base.system.devices.FakeDevicesAdapter import io.github.sds100.keymapper.base.system.inputmethod.ImeInputEventInjector -import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.InputEventType +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.system.devices.InputDeviceInfo import io.github.sds100.keymapper.system.inputmethod.InputKeyModel diff --git a/base/src/test/java/io/github/sds100/keymapper/base/keymaps/KeyMapControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/KeyMapControllerTest.kt index 655d87924c..b626d0382e 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/keymaps/KeyMapControllerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/KeyMapControllerTest.kt @@ -28,8 +28,8 @@ import io.github.sds100.keymapper.base.utils.parallelTrigger import io.github.sds100.keymapper.base.utils.sequenceTrigger import io.github.sds100.keymapper.base.utils.singleKeyTrigger import io.github.sds100.keymapper.base.utils.triggerKey -import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.InputEventType +import io.github.sds100.keymapper.common.utils.KMError import io.github.sds100.keymapper.common.utils.withFlag import io.github.sds100.keymapper.system.camera.CameraLens import io.github.sds100.keymapper.system.devices.InputDeviceInfo diff --git a/base/src/test/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt index 70f5ff5df9..2d1aa43d22 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/keymaps/TriggerKeyMapFromOtherAppsControllerTest.kt @@ -27,8 +27,6 @@ import org.mockito.kotlin.mock import org.mockito.kotlin.times import org.mockito.kotlin.verify - - @ExperimentalCoroutinesApi @RunWith(JUnitParamsRunner::class) class TriggerKeyMapFromOtherAppsControllerTest { diff --git a/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt b/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt index bd473a3f1e..4e7082753f 100644 --- a/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt +++ b/base/src/test/java/io/github/sds100/keymapper/base/system/intents/ConfigIntentViewModelTest.kt @@ -2,10 +2,10 @@ package io.github.sds100.keymapper.base.system.intents import android.content.Intent import androidx.arch.core.executor.testing.InstantTaskExecutorRule -import io.github.sds100.keymapper.base.utils.ui.FakeResourceProvider -import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.DialogModel import io.github.sds100.keymapper.base.utils.ui.DialogProviderImpl +import io.github.sds100.keymapper.base.utils.ui.FakeResourceProvider +import io.github.sds100.keymapper.base.utils.ui.MultiChoiceItem import io.github.sds100.keymapper.base.utils.ui.ShowDialogEvent import io.github.sds100.keymapper.base.utils.ui.onUserResponse import io.github.sds100.keymapper.common.utils.firstBlocking @@ -37,7 +37,7 @@ internal class ConfigIntentViewModelTest { fakeResourceProvider = FakeResourceProvider() viewModel = ConfigIntentViewModel( fakeResourceProvider, - dialogProvider = DialogProviderImpl() + dialogProvider = DialogProviderImpl(), ) } diff --git a/common/src/main/java/io/github/sds100/keymapper/common/BuildConfigProvider.kt b/common/src/main/java/io/github/sds100/keymapper/common/BuildConfigProvider.kt index eea30dc14f..c52f9e2116 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/BuildConfigProvider.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/BuildConfigProvider.kt @@ -6,4 +6,4 @@ interface BuildConfigProvider { val packageName: String val version: String val versionCode: Int -} \ No newline at end of file +} diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/BuildUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/BuildUtils.kt index 9cffa14bcb..6a44d3785f 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/utils/BuildUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/BuildUtils.kt @@ -30,4 +30,4 @@ object BuildUtils { Build.VERSION_CODES.VANILLA_ICE_CREAM -> "15" else -> "API $version" } -} \ No newline at end of file +} diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/MapUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/MapUtils.kt index bd516de8a9..a3874745a9 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/utils/MapUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/MapUtils.kt @@ -1,7 +1,5 @@ package io.github.sds100.keymapper.common.utils - - /** * Not for high speed stuff. */ diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/Orientation.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/Orientation.kt index 2a9f7d67a8..dc0d7413b7 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/utils/Orientation.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/Orientation.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.common.utils - enum class Orientation { ORIENTATION_0, ORIENTATION_90, diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/PinchScreenType.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/PinchScreenType.kt index c21d5c4fab..ec069521f1 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/utils/PinchScreenType.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/PinchScreenType.kt @@ -3,4 +3,4 @@ package io.github.sds100.keymapper.common.utils enum class PinchScreenType { PINCH_IN, PINCH_OUT, -} \ No newline at end of file +} diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/State.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/State.kt index b02b884c75..81aaa68288 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/utils/State.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/State.kt @@ -1,6 +1,5 @@ package io.github.sds100.keymapper.common.utils - sealed class State { data class Data(val data: T) : State() data object Loading : State() diff --git a/common/src/main/java/io/github/sds100/keymapper/common/utils/UserHandleUtils.kt b/common/src/main/java/io/github/sds100/keymapper/common/utils/UserHandleUtils.kt index 58e5a79dc7..43880737a5 100644 --- a/common/src/main/java/io/github/sds100/keymapper/common/utils/UserHandleUtils.kt +++ b/common/src/main/java/io/github/sds100/keymapper/common/utils/UserHandleUtils.kt @@ -2,8 +2,6 @@ package io.github.sds100.keymapper.common.utils import android.os.UserHandle - - fun UserHandle.getIdentifier(): Int { val getIdentifierMethod = UserHandle::class.java.getMethod("getIdentifier") diff --git a/data/src/androidTest/java/io/github/sds100/keymapper/data/ExampleInstrumentedTest.kt b/data/src/androidTest/java/io/github/sds100/keymapper/data/ExampleInstrumentedTest.kt deleted file mode 100644 index 8ecaf2fb9a..0000000000 --- a/data/src/androidTest/java/io/github/sds100/keymapper/data/ExampleInstrumentedTest.kt +++ /dev/null @@ -1,24 +0,0 @@ -package io.github.sds100.keymapper.data - -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.ext.junit.runners.AndroidJUnit4 - -import org.junit.Test -import org.junit.runner.RunWith - -import org.junit.Assert.* - -/** - * Instrumented test, which will execute on an Android device. - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -@RunWith(AndroidJUnit4::class) -class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("io.github.sds100.keymapper.data.test", appContext.packageName) - } -} \ No newline at end of file diff --git a/data/src/main/java/io/github/sds100/keymapper/data/DataError.kt b/data/src/main/java/io/github/sds100/keymapper/data/DataError.kt index 556b951bdb..06beb1dfd2 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/DataError.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/DataError.kt @@ -2,5 +2,4 @@ package io.github.sds100.keymapper.data import io.github.sds100.keymapper.common.utils.KMError object DataError { data class ExtraNotFound(val extraId: String) : KMError() - -} \ No newline at end of file +} diff --git a/data/src/main/java/io/github/sds100/keymapper/data/DataHiltModule.kt b/data/src/main/java/io/github/sds100/keymapper/data/DataHiltModule.kt index c263badc4a..0dd446dbfe 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/DataHiltModule.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/DataHiltModule.kt @@ -4,7 +4,20 @@ import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import io.github.sds100.keymapper.data.repositories.* +import io.github.sds100.keymapper.data.repositories.AccessibilityNodeRepository +import io.github.sds100.keymapper.data.repositories.FloatingButtonRepository +import io.github.sds100.keymapper.data.repositories.FloatingLayoutRepository +import io.github.sds100.keymapper.data.repositories.GroupRepository +import io.github.sds100.keymapper.data.repositories.KeyMapRepository +import io.github.sds100.keymapper.data.repositories.LogRepository +import io.github.sds100.keymapper.data.repositories.PreferenceRepository +import io.github.sds100.keymapper.data.repositories.RoomAccessibilityNodeRepository +import io.github.sds100.keymapper.data.repositories.RoomFloatingButtonRepository +import io.github.sds100.keymapper.data.repositories.RoomFloatingLayoutRepository +import io.github.sds100.keymapper.data.repositories.RoomGroupRepository +import io.github.sds100.keymapper.data.repositories.RoomKeyMapRepository +import io.github.sds100.keymapper.data.repositories.RoomLogRepository +import io.github.sds100.keymapper.data.repositories.SettingsPreferenceRepository import javax.inject.Singleton @Module @@ -37,4 +50,4 @@ abstract class DataHiltModule { @Singleton @Binds abstract fun provideFloatingLayoutRepository(impl: RoomFloatingLayoutRepository): FloatingLayoutRepository -} \ No newline at end of file +} diff --git a/data/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt b/data/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt index 27d36319cc..187f4ef34e 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/PreferenceDefaults.kt @@ -1,7 +1,5 @@ package io.github.sds100.keymapper.data - - object PreferenceDefaults { const val DARK_THEME = "2" diff --git a/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt index 0b714995eb..cd64a24ece 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/AppDatabase.kt @@ -44,7 +44,6 @@ import io.github.sds100.keymapper.data.migration.Migration5To6 import io.github.sds100.keymapper.data.migration.Migration6To7 import io.github.sds100.keymapper.data.migration.Migration8To9 import io.github.sds100.keymapper.data.migration.Migration9To10 -import javax.inject.Singleton @Database( entities = [KeyMapEntity::class, FingerprintMapEntity::class, LogEntryEntity::class, FloatingLayoutEntity::class, FloatingButtonEntity::class, GroupEntity::class, AccessibilityNodeEntity::class], diff --git a/data/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt index 005ae4f489..21f6717031 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/dao/LogEntryDao.kt @@ -6,8 +6,6 @@ import androidx.room.Query import io.github.sds100.keymapper.data.entities.LogEntryEntity import kotlinx.coroutines.flow.Flow - - @Dao interface LogEntryDao { companion object { diff --git a/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt index f625c7b6be..146405f4ac 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/db/typeconverter/TriggerTypeConverter.kt @@ -8,8 +8,6 @@ import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.TriggerEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity - - class TriggerTypeConverter { private val gson = GsonBuilder() .registerTypeAdapter(TriggerEntity.DESERIALIZER) diff --git a/data/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt index ca4065cb34..bd42e17c29 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/LogEntryEntity.kt @@ -5,7 +5,6 @@ import androidx.room.Entity import androidx.room.PrimaryKey import io.github.sds100.keymapper.data.db.dao.LogEntryDao - @Entity(tableName = LogEntryDao.TABLE_NAME) data class LogEntryEntity( @PrimaryKey(autoGenerate = true) diff --git a/data/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt index 1337126eb0..1a2d114c70 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/TriggerEntity.kt @@ -9,8 +9,6 @@ import com.github.salomonbrys.kotson.jsonDeserializer import com.google.gson.annotations.SerializedName import kotlinx.parcelize.Parcelize - - @Parcelize data class TriggerEntity( @SerializedName(NAME_KEYS) diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt index b60332536d..41037750a4 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration1To2.kt @@ -12,13 +12,11 @@ import com.google.gson.Gson import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.JsonParser +import io.github.sds100.keymapper.common.utils.hasFlag import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity -import io.github.sds100.keymapper.common.utils.hasFlag import timber.log.Timber - - /** * Mahoosive update/overhaul from 1.0 to 2.0 */ diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt index 0a68464d71..b2aac0e8ad 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration2To3.kt @@ -10,8 +10,6 @@ import com.google.gson.JsonObject import com.google.gson.JsonParser import io.github.sds100.keymapper.common.utils.withFlag - - /** * #379 feat: add option to repeat for all types of actions */ diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt index a61b6d4224..f39fffe8b0 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration3To4.kt @@ -7,9 +7,6 @@ import androidx.sqlite.db.SupportSQLiteQueryBuilder import com.github.salomonbrys.kotson.set import com.google.gson.Gson import com.google.gson.JsonParser -import kotlin.collections.set - - /** * #376 make trigger mode settings always visible. diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt index a6fecdceac..6f4e4aeb4d 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration4To5.kt @@ -11,11 +11,9 @@ import com.google.gson.Gson import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.JsonParser -import io.github.sds100.keymapper.data.entities.ActionEntity import io.github.sds100.keymapper.common.utils.hasFlag import io.github.sds100.keymapper.common.utils.withFlag - - +import io.github.sds100.keymapper.data.entities.ActionEntity /** * #382 feat: unique repeat behaviour for each action diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt index 02a203fd9d..4a2de3f013 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration5To6.kt @@ -8,8 +8,6 @@ import com.github.salomonbrys.kotson.set import com.google.gson.Gson import com.google.gson.JsonParser - - /** * move keymap flags to trigger flags */ diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt index 03afca82bc..a137888a53 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/Migration6To7.kt @@ -8,14 +8,12 @@ import com.github.salomonbrys.kotson.fromJson import com.github.salomonbrys.kotson.registerTypeAdapter import com.google.gson.Gson import com.google.gson.GsonBuilder -import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity -import io.github.sds100.keymapper.data.entities.TriggerEntity -import io.github.sds100.keymapper.data.entities.TriggerKeyEntity import io.github.sds100.keymapper.common.utils.hasFlag import io.github.sds100.keymapper.common.utils.minusFlag import io.github.sds100.keymapper.common.utils.withFlag - - +import io.github.sds100.keymapper.data.entities.KeyCodeTriggerKeyEntity +import io.github.sds100.keymapper.data.entities.TriggerEntity +import io.github.sds100.keymapper.data.entities.TriggerKeyEntity object Migration6To7 { diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt index ccbfb187ed..2cdf8ba802 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/MigrationUtils.kt @@ -2,7 +2,6 @@ package io.github.sds100.keymapper.data.migration import com.google.gson.JsonObject - object MigrationUtils { fun migrate( migrations: List, diff --git a/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt b/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt index c14be863c3..5563acb5b7 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/migration/fingerprintmaps/FingerprintToKeyMapMigration.kt @@ -1,12 +1,12 @@ package io.github.sds100.keymapper.data.migration.fingerprintmaps +import io.github.sds100.keymapper.common.utils.hasFlag import io.github.sds100.keymapper.data.entities.EntityExtra import io.github.sds100.keymapper.data.entities.FingerprintMapEntity import io.github.sds100.keymapper.data.entities.FingerprintTriggerKeyEntity import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.data.entities.TriggerEntity import io.github.sds100.keymapper.data.entities.TriggerKeyEntity -import io.github.sds100.keymapper.common.utils.hasFlag object FingerprintToKeyMapMigration { fun migrate(entity: FingerprintMapEntity): KeyMapEntity? { diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt index af3d125e95..d378175640 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/AccessibilityNodeRepository.kt @@ -1,7 +1,7 @@ package io.github.sds100.keymapper.data.repositories -import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.data.entities.AccessibilityNodeEntity import kotlinx.coroutines.flow.Flow interface AccessibilityNodeRepository { @@ -10,4 +10,3 @@ interface AccessibilityNodeRepository { fun insert(vararg node: AccessibilityNodeEntity) suspend fun deleteAll() } - diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt index ca2d2cd488..2470680b0b 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingButtonRepository.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.data.repositories +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.data.entities.FloatingButtonEntity import io.github.sds100.keymapper.data.entities.FloatingButtonEntityWithLayout -import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow interface FloatingButtonRepository { @@ -13,4 +13,3 @@ interface FloatingButtonRepository { suspend fun get(uid: String): FloatingButtonEntityWithLayout? fun delete(vararg uid: String) } - diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt index 7f7b3809c7..4b8fda0967 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/FloatingLayoutRepository.kt @@ -1,8 +1,8 @@ package io.github.sds100.keymapper.data.repositories +import io.github.sds100.keymapper.common.utils.State import io.github.sds100.keymapper.data.entities.FloatingLayoutEntity import io.github.sds100.keymapper.data.entities.FloatingLayoutEntityWithButtons -import io.github.sds100.keymapper.common.utils.State import kotlinx.coroutines.flow.Flow interface FloatingLayoutRepository { @@ -18,4 +18,3 @@ interface FloatingLayoutRepository { fun delete(vararg uid: String) suspend fun count(): Int } - diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt index c7b0686cb8..ec00f476d7 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/GroupRepository.kt @@ -19,4 +19,3 @@ interface GroupRepository { fun delete(uid: String) suspend fun setLastOpenedDate(groupUid: String, timestamp: Long) } - diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/KeyMapRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/KeyMapRepository.kt index 473235963c..c83d5c79f4 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/KeyMapRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/KeyMapRepository.kt @@ -20,4 +20,4 @@ interface KeyMapRepository { fun enableById(vararg uid: String) fun disableById(vararg uid: String) fun moveToGroup(groupUid: String?, vararg uid: String) -} \ No newline at end of file +} diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt index fad61ec232..7635037203 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/PreferenceRepository.kt @@ -3,7 +3,6 @@ package io.github.sds100.keymapper.data.repositories import androidx.datastore.preferences.core.Preferences import kotlinx.coroutines.flow.Flow - interface PreferenceRepository { fun get(key: Preferences.Key): Flow fun set(key: Preferences.Key, value: T?) diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomAccessibilityNodeRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomAccessibilityNodeRepository.kt index a826196371..5bb8eb668e 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomAccessibilityNodeRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomAccessibilityNodeRepository.kt @@ -52,4 +52,4 @@ class RoomAccessibilityNodeRepository @Inject constructor( dao.deleteAll() } } -} \ No newline at end of file +} diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingButtonRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingButtonRepository.kt index c03700f2e6..b22e8938ae 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingButtonRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingButtonRepository.kt @@ -58,4 +58,4 @@ class RoomFloatingButtonRepository @Inject constructor( dao.deleteByUid(*uid) } } -} \ No newline at end of file +} diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingLayoutRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingLayoutRepository.kt index d5d27a9ad8..bea863f9b8 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingLayoutRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomFloatingLayoutRepository.kt @@ -59,4 +59,4 @@ class RoomFloatingLayoutRepository @Inject constructor( override suspend fun count(): Int { return dao.count() } -} \ No newline at end of file +} diff --git a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt index fc0306e24e..dd05f6d82d 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/repositories/RoomKeyMapRepository.kt @@ -1,14 +1,14 @@ package io.github.sds100.keymapper.data.repositories +import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider +import io.github.sds100.keymapper.common.utils.DispatcherProvider +import io.github.sds100.keymapper.common.utils.State +import io.github.sds100.keymapper.common.utils.splitIntoBatches import io.github.sds100.keymapper.data.db.dao.FingerprintMapDao import io.github.sds100.keymapper.data.db.dao.KeyMapDao import io.github.sds100.keymapper.data.entities.FingerprintMapEntity import io.github.sds100.keymapper.data.entities.KeyMapEntity import io.github.sds100.keymapper.data.migration.fingerprintmaps.FingerprintToKeyMapMigration -import io.github.sds100.keymapper.common.utils.DefaultDispatcherProvider -import io.github.sds100.keymapper.common.utils.DispatcherProvider -import io.github.sds100.keymapper.common.utils.State -import io.github.sds100.keymapper.common.utils.splitIntoBatches import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted diff --git a/data/src/main/java/io/github/sds100/keymapper/data/utils/PreferenceDelegate.kt b/data/src/main/java/io/github/sds100/keymapper/data/utils/PreferenceDelegate.kt index c9e030276b..f8fe4539c1 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/utils/PreferenceDelegate.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/utils/PreferenceDelegate.kt @@ -7,8 +7,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlin.reflect.KProperty - - class FlowPrefDelegate( private val key: Preferences.Key, private val defaultValue: T, diff --git a/data/src/test/java/io/github/sds100/keymapper/data/ExampleUnitTest.kt b/data/src/test/java/io/github/sds100/keymapper/data/ExampleUnitTest.kt deleted file mode 100644 index 8f8ecaee15..0000000000 --- a/data/src/test/java/io/github/sds100/keymapper/data/ExampleUnitTest.kt +++ /dev/null @@ -1,17 +0,0 @@ -package io.github.sds100.keymapper.data - -import org.junit.Test - -import org.junit.Assert.* - -/** - * Example local unit test, which will execute on the development machine (host). - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -class ExampleUnitTest { - @Test - fun addition_isCorrect() { - assertEquals(4, 2 + 2) - } -} \ No newline at end of file diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 9e3fc27b77..541868548b 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -19,11 +19,11 @@ default_platform(:android) desc "Create testing release" lane :testing do - gradle(task: "clean assembleFreeCi") + gradle(task: "clean assembleCi") end desc "Create and deploy production release" -lane :prod do +lane :production do prompt(text: "Did you write whats new?") version_code = get_properties_value(key: "VERSION_CODE", path: "./app/version.properties") @@ -32,7 +32,9 @@ lane :prod do # Don't create changelog for f-droid because not committing it # File.write("metadata/android/en-US/changelogs/" + version_code + ".txt", whats_new) - gradle(task: "testProDebugUnitTest") + Dir.chdir("..") do + gradle(task: "testDebugUnitTest") + end github_token = prompt( text: "Github token: ", @@ -53,32 +55,35 @@ lane :prod do # gradle(task: "assembleDebug") # Release the free build to GitHub because billing only works if signed by Google Play - gradle(task: "assembleFreeRelease") - gradle(task: "bundleProRelease") + gradle(task: "assembleRelease") + + Dir.chdir("..") do + gradle(task: "bundleRelease") + end apk_path_release="app/build/outputs/apk/free/release/keymapper-" + version_name + ".apk" # First release to google play so any errors with the descriptions are resolved before # creating the git tag. - supply( - aab: "app/build/outputs/bundle/proRelease/app-pro-release.aab", - track: "internal", - skip_upload_apk: true - ) - - whats_new = File.read("../app/src/main/assets/whats-new.txt") - - github_release = set_github_release( - repository_name: "keymapperorg/KeyMapper", - api_bearer: github_token, - name: version_name, - tag_name: "v" + version_name, - description: whats_new, - commitish: "master", - upload_assets: [apk_path_release], - is_draft: false, - is_prerelease: false - ) +# supply( +# aab: "../app/build/outputs/bundle/release/app-pro-release.aab", +# track: "internal", +# skip_upload_apk: true +# ) +# +# whats_new = File.read("../app/src/main/assets/whats-new.txt") +# +# github_release = set_github_release( +# repository_name: "keymapperorg/KeyMapper", +# api_bearer: github_token, +# name: version_name, +# tag_name: "v" + version_name, +# description: whats_new, +# commitish: "master", +# upload_assets: [apk_path_release], +# is_draft: false, +# is_prerelease: false +# ) end desc "Create and deploy internal testing release" diff --git a/fastlane/README.md b/fastlane/README.md index 07067c6e22..e1c1a3b723 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -21,10 +21,10 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do Create testing release -### prod +### production ```sh -[bundle exec] fastlane prod +[bundle exec] fastlane production ``` Create and deploy production release From 2fa5f9e73d3639dd3ec2f9f18bd773c6c16529a0 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 20:45:48 +0200 Subject: [PATCH 70/71] #1711 fix Fastfile --- fastlane/Fastfile | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 541868548b..790e634b97 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -61,7 +61,7 @@ lane :production do gradle(task: "bundleRelease") end - apk_path_release="app/build/outputs/apk/free/release/keymapper-" + version_name + ".apk" + apk_path_release="app/build/outputs/apk/release/keymapper-foss-" + version_name + ".apk" # First release to google play so any errors with the descriptions are resolved before # creating the git tag. @@ -107,19 +107,22 @@ lane :internal do # Do not release a debug build for pro version. # gradle(task: "assembleDebug") -# Release the free build to GitHub because billing only works if signed by Google Play - gradle(task: "bundleProRelease") - # First release to google play so any errors with the descriptions are resolved before - # creating the git tag. - supply( - aab: "app/build/outputs/bundle/proRelease/app-pro-release.aab", - track: "internal", - skip_upload_apk: true, - skip_upload_metadata: true, - skip_upload_changelogs: true, - skip_upload_images: true, - skip_upload_screenshots: true - ) + Dir.chdir("..") do + # Release the free build to GitHub because billing only works if signed by Google Play + gradle(task: "bundleProRelease") + + # First release to google play so any errors with the descriptions are resolved before + # creating the git tag. + supply( + aab: "app/build/outputs/bundle/release/app-pro-release.aab", + track: "internal", + skip_upload_apk: true, + skip_upload_metadata: true, + skip_upload_changelogs: true, + skip_upload_images: true, + skip_upload_screenshots: true + ) + end end From c3258fceb669cdac05aa1c261375a80640d92883 Mon Sep 17 00:00:00 2001 From: sds100 Date: Wed, 2 Jul 2025 20:57:36 +0200 Subject: [PATCH 71/71] #1711 style: fix format --- .../io/github/sds100/keymapper/data/entities/ActionEntity.kt | 2 +- .../io/github/sds100/keymapper/data/entities/GroupEntity.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt index 16fcef7020..ad42ed3012 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/ActionEntity.kt @@ -51,7 +51,7 @@ data class ActionEntity( @SerializedName(NAME_UID) val uid: String = UUID.randomUUID().toString(), - ) : Parcelable { +) : Parcelable { companion object { // DON'T CHANGE THESE IDs!!!! diff --git a/data/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntity.kt b/data/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntity.kt index 497dfa282f..18e97c7f66 100644 --- a/data/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntity.kt +++ b/data/src/main/java/io/github/sds100/keymapper/data/entities/GroupEntity.kt @@ -54,7 +54,7 @@ data class GroupEntity( @SerializedName(NAME_LAST_OPENED_DATE) val lastOpenedDate: Long?, - ) : Parcelable { +) : Parcelable { companion object { // DON'T CHANGE THESE. Used for JSON serialization and parsing. const val NAME_UID = "uid"