diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..1cd48550 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,22 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.{kt,kts}] +indent_size = 4 +indent_style = space +ij_kotlin_allow_trailing_comma = true +ij_kotlin_allow_trailing_comma_on_call_site = true +ij_kotlin_name_count_to_use_star_import = 2147483647 +ij_kotlin_name_count_to_use_star_import_for_members = 2147483647 +ij_kotlin_packages_to_use_import_on_demand = unset +ktlint_code_style = android_studio +ktlint_function_naming_ignore_when_annotated_with = Composable +ktlint_standard_function-expression-body = disabled +ktlint_standard_function-signature = disabled +ktlint_standard_trailing-comma-on-call-site = disabled +max_line_length = 100 diff --git a/.gitignore b/.gitignore index 958eea26..43dc9de3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,8 @@ /releases/ .gradle /local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml -/.idea/deploymentTargetDropDown.xml +/.idea/* +!/.idea/vcs.xml .DS_Store /build /captures @@ -16,3 +11,4 @@ keystore.properties *.keystore local.properties +/lib/build diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d33521..00000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index b589d56e..00000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml deleted file mode 100644 index b268ef36..00000000 --- a/.idea/deploymentTargetSelector.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 2e12cc38..00000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml deleted file mode 100644 index bb449370..00000000 --- a/.idea/kotlinc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 9218e2b5..00000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 8f4b0919..4d760f2f 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -10,5 +10,9 @@ + + + + - + \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7338059e..9a2f88b5 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,8 +1,13 @@ +import dev.detekt.gradle.Detekt import java.io.FileInputStream import java.util.Properties plugins { - id("com.android.application") + alias(libs.plugins.android.application) + alias(libs.plugins.detekt) + alias(libs.plugins.hilt) + alias(libs.plugins.kotlin.compose) + alias(libs.plugins.ksp) } java { @@ -11,6 +16,24 @@ java { } } +detekt { + basePath.set(rootDir) + buildUponDefaultConfig = true + config.setFrom(rootProject.file("config/detekt/detekt.yml")) + ignoredBuildTypes = listOf("release") + parallel = true + source.setFrom(files("../src")) +} + +tasks.withType().configureEach { + setSource(files("../src")) + include("**/*.kt") + include("**/*.kts") + exclude("**/build/**") + exclude("**/com/android/messaging/datamodel/**") + exclude("**/com/android/messaging/debug/**") +} + android { compileSdk = 36 buildToolsVersion = "36.1.0" @@ -39,6 +62,7 @@ android { buildFeatures { buildConfig = true resValues = true + compose = true } sourceSets.getByName("main") { @@ -72,8 +96,12 @@ android { getByName("release") { isMinifyEnabled = true isShrinkResources = true - proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), - "../proguard.flags", "../proguard-release.flags") + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "../proguard.flags", + "../proguard-release.flags" + ) + if (useKeystoreProperties) { signingConfig = signingConfigs.getByName("release") } @@ -91,16 +119,61 @@ android { } dependencies { - implementation("androidx.appcompat:appcompat:1.7.1") - implementation("androidx.preference:preference:1.2.1") - implementation("androidx.palette:palette:1.0.0") - implementation("androidx.recyclerview:recyclerview:1.4.0") - implementation("com.github.bumptech.glide:glide:5.0.4") - implementation("com.google.guava:guava:33.4.8-android") - implementation("com.googlecode.libphonenumber:libphonenumber:8.13.52") - implementation("com.google.code.findbugs:jsr305:3.0.2") + implementation(libs.androidx.appcompat) + implementation(libs.androidx.palette) + implementation(libs.androidx.preference) + implementation(libs.androidx.recyclerview) + + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.activity.compose) + implementation(libs.androidx.compose.foundation) + implementation(libs.androidx.compose.foundation.layout) + implementation(libs.androidx.compose.material.icons.extended) + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.ui) + implementation(libs.androidx.compose.ui.tooling.preview) + + implementation(libs.androidx.lifecycle.livedata.ktx) + implementation(libs.androidx.lifecycle.runtime.compose) + implementation(libs.androidx.lifecycle.viewmodel.compose) + implementation(libs.androidx.lifecycle.viewmodel.ktx) + + implementation(libs.coil.compose) + implementation(libs.glide) + + implementation(libs.hilt.android) + ksp(libs.hilt.compiler) + + implementation(libs.guava) + implementation(libs.jsr305) + + implementation(libs.kotlinx.coroutines.android) + + implementation(libs.libphonenumber) implementation(project(":lib:platform_frameworks_opt_chips")) implementation(project(":lib:platform_frameworks_opt_photoviewer")) implementation(project(":lib:platform_frameworks_opt_vcard")) + + debugImplementation(libs.androidx.compose.ui.test.manifest) + debugImplementation(libs.androidx.compose.ui.tooling) + + testImplementation(libs.junit4) + testImplementation(libs.kotlinx.coroutines.test) + testImplementation(libs.mockk) + testImplementation(libs.mockk.agent) + testImplementation(libs.mockk.android) + testImplementation(libs.robolectric) + testImplementation(libs.turbine) + + androidTestImplementation(platform(libs.androidx.compose.bom)) + androidTestImplementation(libs.androidx.compose.ui.test.junit4) + + androidTestImplementation(libs.hilt.android.testing) + kspAndroidTest(libs.hilt.compiler) + + androidTestImplementation(libs.mockk) + androidTestImplementation(libs.mockk.agent) + androidTestImplementation(libs.mockk.android) + androidTestImplementation(libs.turbine) } diff --git a/build.gradle.kts b/build.gradle.kts index 137ace6e..55e7ddaa 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,10 +1,45 @@ +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.the +import org.jlleitschuh.gradle.ktlint.KtlintExtension + plugins { - id("com.android.application") version "9.0.0" apply false + alias(libs.plugins.android.application) apply false + alias(libs.plugins.hilt) apply false + alias(libs.plugins.kotlin.compose) apply false + alias(libs.plugins.ksp) apply false + alias(libs.plugins.ktlint) } buildscript { dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:2.3.0") - classpath("com.google.devtools.ksp:symbol-processing-gradle-plugin:2.3.5") + classpath(libs.hilt.gradle.plugin) + classpath(libs.kotlin.gradle.plugin) + classpath(libs.ksp.gradle.plugin) + } +} + +val ktlintCliVersion: String = the() + .named("libs") + .findVersion("ktlint") + .get() + .requiredVersion + +configure { + version.set(ktlintCliVersion) + + filter { + exclude("**/build/**") + } +} + +subprojects { + apply(plugin = "org.jlleitschuh.gradle.ktlint") + + configure { + version.set(ktlintCliVersion) + + filter { + exclude("**/build/**") + } } } diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml new file mode 100644 index 00000000..a0631a34 --- /dev/null +++ b/config/detekt/detekt.yml @@ -0,0 +1,23 @@ +config: + validation: true + warningsAsErrors: true + +complexity: + LongParameterList: + ignoreDefaultParameters: true + TooManyFunctions: + ignoreAnnotatedFunctions: + - Preview + +naming: + FunctionNaming: + ignoreAnnotated: + - Composable + +style: + MagicNumber: + ignoreCompanionObjectPropertyDeclaration: true + ignorePropertyDeclaration: true + UnusedPrivateFunction: + ignoreAnnotated: + - Preview diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..99fe9844 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,89 @@ +[versions] +agp = "9.1.0" +detekt = "2.0.0-alpha.2" +hilt = "2.59.2" +kotlin = "2.3.20" +ksp = "2.3.6" +ktlint = "1.8.0" +ktlint-gradle = "14.2.0" + +activity-compose = "1.13.0" +appcompat = "1.7.1" +coil = "3.4.0" +compose-bom = "2026.03.01" +coroutines = "1.10.2" +glide = "5.0.5" +guava = "33.5.0-android" +jsr305 = "3.0.2" +libphonenumber = "9.0.26" +lifecycle = "2.10.0" +palette = "1.0.0" +preference = "1.2.1" +recyclerview = "1.4.0" + + +junit4 = "4.13.2" +mockk = "1.14.9" +robolectric = "4.16.1" +turbine = "1.2.1" + +[libraries] +androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activity-compose" } +androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" } + +androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "compose-bom" } +androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" } +androidx-compose-foundation-layout = { module = "androidx.compose.foundation:foundation-layout" } +androidx-compose-material-icons-extended = { module = "androidx.compose.material:material-icons-extended" } +androidx-compose-material3 = { module = "androidx.compose.material3:material3" } +androidx-compose-ui = { module = "androidx.compose.ui:ui" } +androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } +androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } +androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" } +androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" } + +androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "lifecycle" } +androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "lifecycle" } +androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lifecycle" } +androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycle" } + +androidx-palette = { module = "androidx.palette:palette", version.ref = "palette" } +androidx-preference = { module = "androidx.preference:preference", version.ref = "preference" } +androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } + +coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil" } +glide = { module = "com.github.bumptech.glide:glide", version.ref = "glide" } + +guava = { module = "com.google.guava:guava", version.ref = "guava" } +jsr305 = { module = "com.google.code.findbugs:jsr305", version.ref = "jsr305" } + +hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } +hilt-android-testing = { module = "com.google.dagger:hilt-android-testing", version.ref = "hilt" } +hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt" } + +kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } +kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } + +libphonenumber = { module = "com.googlecode.libphonenumber:libphonenumber", version.ref = "libphonenumber" } + +junit4 = { module = "junit:junit", version.ref = "junit4" } +mockk = { module = "io.mockk:mockk", version.ref = "mockk" } +mockk-agent = { module = "io.mockk:mockk-agent", version.ref = "mockk" } +mockk-android = { module = "io.mockk:mockk-android", version.ref = "mockk" } +robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } +turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" } + +hilt-gradle-plugin = { module = "com.google.dagger:hilt-android-gradle-plugin", version.ref = "hilt" } +kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +ksp-gradle-plugin = { module = "com.google.devtools.ksp:symbol-processing-gradle-plugin", version.ref = "ksp" } + +[plugins] +android-application = { id = "com.android.application", version.ref = "agp" } +android-library = { id = "com.android.library", version.ref = "agp" } + +detekt = { id = "dev.detekt", version.ref = "detekt" } +hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } + +kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } +ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint-gradle" } diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 3a087bb7..96f92386 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -5,6 +5,22 @@ false + + + + + + + + + + + + + + + + @@ -12,6 +28,9 @@ + + + @@ -20,18 +39,38 @@ + + + - - - + + + + + + + + + + + + - - - + + + + + + - - + + + + + + + @@ -43,12 +82,33 @@ + + + + + + + + + + + + + + + + + + + + + @@ -56,6 +116,20 @@ + + + + + + + + + + + + + + @@ -66,12 +140,23 @@ - - - + + + + + + + + + + + + + + @@ -80,6 +165,9 @@ + + + @@ -88,6 +176,9 @@ + + + @@ -96,6 +187,9 @@ + + + @@ -104,11 +198,17 @@ + + + + + + @@ -117,6 +217,9 @@ + + + @@ -125,6 +228,9 @@ + + + @@ -133,11 +239,28 @@ + + + + + + + + + + + + + + + + + @@ -146,40 +269,548 @@ + + + - - - + + + + + + + + + + + - - - + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -188,6 +819,9 @@ + + + @@ -196,10 +830,22 @@ + + + - - - + + + + + + + + + + + + @@ -209,6 +855,20 @@ + + + + + + + + + + + + + + @@ -217,13 +877,19 @@ + + + - - - + + + - - + + + + + @@ -233,6 +899,9 @@ + + + @@ -241,6 +910,9 @@ + + + @@ -249,6 +921,9 @@ + + + @@ -257,21 +932,30 @@ + + + - - + + - - + + + + + - - - + + + - - + + + + + @@ -281,6 +965,9 @@ + + + @@ -289,6 +976,20 @@ + + + + + + + + + + + + + + @@ -297,11 +998,28 @@ + + + + + + + + + + + + + + + + + @@ -310,6 +1028,20 @@ + + + + + + + + + + + + + + @@ -318,6 +1050,25 @@ + + + + + + + + + + + + + + + + + + + @@ -326,6 +1077,9 @@ + + + @@ -334,6 +1088,9 @@ + + + @@ -347,6 +1104,20 @@ + + + + + + + + + + + + + + @@ -355,6 +1126,9 @@ + + + @@ -363,11 +1137,27 @@ + + + + + + + + + + + + + + + + @@ -376,6 +1166,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -385,6 +1219,17 @@ + + + + + + + + + + + @@ -394,6 +1239,9 @@ + + + @@ -402,23 +1250,41 @@ + + + - - - + + + + + + + + + - - - + + + + + + + + + - - - + + + + + + - - + + @@ -430,6 +1296,9 @@ + + + @@ -438,11 +1307,22 @@ + + + + + + + + + + + @@ -451,24 +1331,84 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + - - + + + + + + + @@ -477,29 +1417,76 @@ + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + - - - + + + - - + + + + + + + @@ -508,6 +1495,23 @@ + + + + + + + + + + + + + + + + + @@ -516,6 +1520,9 @@ + + + @@ -524,6 +1531,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -532,6 +1591,9 @@ + + + @@ -540,6 +1602,9 @@ + + + @@ -548,6 +1613,9 @@ + + + @@ -556,6 +1624,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -564,6 +1654,9 @@ + + + @@ -572,6 +1665,9 @@ + + + @@ -580,14 +1676,100 @@ + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -596,11 +1778,17 @@ + + + + + + @@ -609,6 +1797,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -617,14 +1949,39 @@ + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -633,6 +1990,9 @@ + + + @@ -641,6 +2001,9 @@ + + + @@ -649,6 +2012,9 @@ + + + @@ -657,194 +2023,341 @@ + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + + + + - - + + - - + + + + + - - - + + + - - + + - - + + + + + - - + + - - + + + + + - - - + + + - - + + + + + - - - + + + + + + - - + + - - + + - - + + - - - + + + - - + + + + + - - - + + + + + + - - + + - - - + + + - - + + + + + - - + + - - + + + + + - - - + + + - - + + + + + - - - + + + + + + - - + + - - - + + + - - + + + + + - - - + + + - - + + - - + + - - + + + + + - - - + + + - - + + + + + - - + + - - + + + + + - - + + - - + + + + + - - - + + + + + + - - + + - - - + + + - - + + + + + - - + + - - + + + + + @@ -855,44 +2368,59 @@ - - - + + + - - + + + + + - - - + + + + + + - - + + - - + + - - + + + + + - - + + - - + + + + + - - - + + + - - + + + + + @@ -902,6 +2430,9 @@ + + + @@ -910,285 +2441,408 @@ + + + - - - + + + + + + - - + + - - + + - - + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - + + + - - + + + + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + + + + - - - + + + + + + - - + + - - - + + + - - + + + + + - - - + + + + + + - - + + - - - + + + - - + + + + + - - - + + + + + + - - + + - - - + + + - - + + + + + - - - + + + + + + - - + + - - - + + + - - + + + + + - - - + + + + + + - - + + - - - + + + - - + + + + + - - - + + + - - + + - - - - + + - - + + + + - - - + + + - - + + - - - + + + + + + - - + + - - - + + + - - + + - - - - + + - - + + - - - + + + - - + + - - - - + + - - + + - - - + + + - - + + - - - - + + - - + + - - - + + + - - + + - - - - + + - - + + @@ -1198,6 +2852,12 @@ + + + + + + @@ -1214,6 +2874,9 @@ + + + @@ -1222,6 +2885,9 @@ + + + @@ -1235,6 +2901,9 @@ + + + @@ -1248,6 +2917,23 @@ + + + + + + + + + + + + + + + + + @@ -1256,6 +2942,14 @@ + + + + + + + + @@ -1269,6 +2963,12 @@ + + + + + + @@ -1285,6 +2985,12 @@ + + + + + + @@ -1293,6 +2999,12 @@ + + + + + + @@ -1309,6 +3021,17 @@ + + + + + + + + + + + @@ -1316,6 +3039,9 @@ + + + @@ -1324,6 +3050,9 @@ + + + @@ -1332,29 +3061,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + + + + - - - + + + + + + - - + + + + + + + + + + @@ -1369,6 +3259,9 @@ + + + @@ -1377,6 +3270,12 @@ + + + + + + @@ -1385,13 +3284,30 @@ + + + + + + - - - + + + - - + + + + + + + + + + + + + @@ -1414,9 +3330,9 @@ - - - + + + @@ -1426,6 +3342,22 @@ + + + + + + + + + + + + + + + + @@ -1434,6 +3366,12 @@ + + + + + + @@ -1442,6 +3380,12 @@ + + + + + + @@ -1450,6 +3394,12 @@ + + + + + + @@ -1459,6 +3409,14 @@ + + + + + + + + @@ -1466,13 +3424,16 @@ + + + - - - + + + - - + + @@ -1485,6 +3446,11 @@ + + + + + @@ -1495,9 +3461,9 @@ - - - + + + @@ -1507,6 +3473,12 @@ + + + + + + @@ -1531,6 +3503,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -1539,157 +3531,398 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - + + + + + + + + - - - + + + - - - + + + + + + - - + + + + + - - - + + + - - + + + + + + + + - - - + + + - - + + + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + + + + - - - + + + + + + - - - + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + + + + @@ -1699,6 +3932,23 @@ + + + + + + + + + + + + + + + + + @@ -1707,6 +3957,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1725,6 +4002,12 @@ + + + + + + @@ -1753,6 +4036,12 @@ + + + + + + @@ -1766,6 +4055,9 @@ + + + @@ -1774,6 +4066,9 @@ + + + @@ -1782,6 +4077,363 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1798,6 +4450,9 @@ + + + @@ -1819,6 +4474,9 @@ + + + @@ -1835,13 +4493,8 @@ - - - - - - - + + @@ -1859,6 +4512,9 @@ + + + @@ -1875,6 +4531,9 @@ + + + @@ -1891,6 +4550,9 @@ + + + @@ -1899,6 +4561,9 @@ + + + @@ -1912,16 +4577,118 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + + + + @@ -1931,6 +4698,9 @@ + + + @@ -1947,6 +4717,9 @@ + + + @@ -1963,6 +4736,9 @@ + + + @@ -1979,6 +4755,9 @@ + + + @@ -1995,6 +4774,9 @@ + + + @@ -2011,6 +4793,9 @@ + + + @@ -2027,6 +4812,9 @@ + + + @@ -2043,6 +4831,9 @@ + + + @@ -2069,6 +4860,9 @@ + + + @@ -2085,6 +4879,9 @@ + + + @@ -2101,6 +4898,9 @@ + + + @@ -2117,6 +4917,9 @@ + + + @@ -2125,6 +4928,9 @@ + + + @@ -2141,6 +4947,9 @@ + + + @@ -2149,6 +4958,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -2157,6 +4986,12 @@ + + + + + + @@ -2170,6 +5005,12 @@ + + + + + + @@ -2178,6 +5019,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2191,6 +5085,12 @@ + + + + + + @@ -2199,6 +5099,20 @@ + + + + + + + + + + + + + + @@ -2207,6 +5121,9 @@ + + + @@ -2215,6 +5132,12 @@ + + + + + + @@ -2253,6 +5176,9 @@ + + + @@ -2261,6 +5187,9 @@ + + + @@ -2289,6 +5218,9 @@ + + + @@ -2297,6 +5229,12 @@ + + + + + + @@ -2330,6 +5268,12 @@ + + + + + + @@ -2338,6 +5282,12 @@ + + + + + + @@ -2346,6 +5296,9 @@ + + + @@ -2354,6 +5307,12 @@ + + + + + + @@ -2362,6 +5321,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -2370,11 +5349,31 @@ + + + + + + + + + + + + + + + + + + + + @@ -2384,6 +5383,14 @@ + + + + + + + + @@ -2391,6 +5398,12 @@ + + + + + + @@ -2399,6 +5412,9 @@ + + + @@ -2415,6 +5431,9 @@ + + + @@ -2436,6 +5455,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2446,6 +5492,11 @@ + + + + + @@ -2458,6 +5509,12 @@ + + + + + + @@ -2466,173 +5523,575 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + + + + - - - + + + - - + + + + + - - - + + + - - + + + + + - - - + + + + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + + - - - + + + + + + - - + + - - - + + + - - + + - - - + + + - - + + + + + - - - + + + - - + + - - - + + + + + + - - + + - - - + + + - - + + - - - - + + - - + + - - - + + + + + + - - + + - - - + + + + + + + + + - - + + - - + + - - + + + + + + + + + + + + + + + + - - - + + + - - + + - - - + + + + + + - - + + - - - + + + - - + + - - - + + + - - + + + + + @@ -2658,6 +6117,23 @@ + + + + + + + + + + + + + + + + + @@ -2666,6 +6142,20 @@ + + + + + + + + + + + + + + @@ -2675,6 +6165,17 @@ + + + + + + + + + + + @@ -2691,6 +6192,14 @@ + + + + + + + + @@ -2698,6 +6207,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2706,6 +6240,20 @@ + + + + + + + + + + + + + + @@ -2728,11 +6276,21 @@ + + + + + + + + + + @@ -2740,6 +6298,12 @@ + + + + + + @@ -2748,6 +6312,9 @@ + + + @@ -2756,6 +6323,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -2764,6 +6351,12 @@ + + + + + + @@ -2772,6 +6365,9 @@ + + + @@ -2780,43 +6376,83 @@ + + + + + + + + + + + + + + + + + + + + - - + + - - + + + + + - - - + + + - - + + + + + - - - + + + + + + - - + + - - - + + + - - + + + + + + + + + + + + + @@ -2825,10 +6461,19 @@ + + + - - - + + + + + + + + + @@ -2839,6 +6484,11 @@ + + + + + @@ -2859,6 +6509,14 @@ + + + + + + + + @@ -2873,6 +6531,20 @@ + + + + + + + + + + + + + + @@ -2881,6 +6553,9 @@ + + + @@ -2891,6 +6566,9 @@ + + + @@ -2905,6 +6583,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2913,6 +6687,12 @@ + + + + + + @@ -2945,6 +6725,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2958,13 +6763,46 @@ + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + @@ -2974,6 +6812,23 @@ + + + + + + + + + + + + + + + + + @@ -2982,13 +6837,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + + + + + + + + + + + + + + + @@ -2998,12 +6997,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3021,6 +7049,28 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/values/styles.xml b/res/values/styles.xml index c7f8abae..fa5884d4 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -23,6 +23,7 @@ true +