From 730a7edc0ea806f1bfd5cfdcc21d07c3bbb6cdcf Mon Sep 17 00:00:00 2001 From: Oupson Date: Sun, 9 May 2021 19:23:52 +0200 Subject: [PATCH] Initial commit --- .gitignore | 90 +++++ .idea/.gitignore | 3 + .idea/.name | 1 + .idea/codeStyles/Project.xml | 139 +++++++ .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/compiler.xml | 6 + .idea/jarRepositories.xml | 30 ++ .idea/misc.xml | 9 + app/.gitignore | 1 + app/build.gradle | 63 +++ app/proguard-rules.pro | 21 + .../taotoolbox/ExampleInstrumentedTest.kt | 24 ++ app/src/main/AndroidManifest.xml | 45 +++ app/src/main/ic_launcher-playstore.png | Bin 0 -> 10312 bytes .../taotoolbox/activities/MainActivity.kt | 324 ++++++++++++++++ .../TaoWidgetConfigurationActivity.kt | 366 ++++++++++++++++++ .../taotoolbox/adapters/DirectionAdapter.kt | 66 ++++ .../oupson/taotoolbox/adapters/LineAdapter.kt | 61 +++ .../taotoolbox/adapters/ScheduleAdapter.kt | 82 ++++ .../oupson/taotoolbox/adapters/StopAdapter.kt | 42 ++ .../oupson/taotoolbox/receivers/TaoWidget.kt | 238 ++++++++++++ .../taotoolbox/windows/StopInfoWindow.kt | 60 +++ app/src/main/res/drawable/bg_widget.xml | 13 + .../res/drawable/ic_baseline_place_48.xml | 5 + .../res/drawable/ic_launcher_foreground.xml | 22 ++ .../drawable/ic_outline_error_outline_24.xml | 5 + .../main/res/drawable/ic_outline_save_24.xml | 10 + .../main/res/drawable/tao_widget_preview.png | Bin 0 -> 16386 bytes app/src/main/res/layout/activity_main.xml | 33 ++ .../activity_tao_widget_configuration.xml | 107 +++++ app/src/main/res/layout/item_line.xml | 19 + .../main/res/layout/item_line_direction.xml | 33 ++ app/src/main/res/layout/item_schedule.xml | 64 +++ app/src/main/res/layout/item_stop.xml | 6 + app/src/main/res/layout/widget_tao.xml | 115 ++++++ app/src/main/res/layout/window_stop_info.xml | 23 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3349 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2134 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4742 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7345 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10673 bytes app/src/main/res/values-fr-rFR/strings.xml | 15 + app/src/main/res/values-night/bools.xml | 5 + app/src/main/res/values-night/colors.xml | 6 + app/src/main/res/values-night/themes.xml | 27 ++ app/src/main/res/values/attrs.xml | 6 + app/src/main/res/values/bools.xml | 5 + app/src/main/res/values/colors.xml | 18 + app/src/main/res/values/dimens.xml | 16 + app/src/main/res/values/strings.xml | 25 ++ app/src/main/res/values/themes.xml | 26 ++ app/src/main/res/xml/backup_descriptor.xml | 5 + app/src/main/res/xml/widget_tao_info.xml | 14 + .../fr/oupson/taotoolbox/ExampleUnitTest.kt | 17 + build.gradle | 27 ++ common/.gitignore | 1 + common/build.gradle | 49 +++ common/consumer-rules.pro | 20 + common/proguard-rules.pro | 21 + .../oupson/common/ExampleInstrumentedTest.kt | 24 ++ common/src/main/AndroidManifest.xml | 5 + .../main/java/fr/oupson/common/api/Line.kt | 89 +++++ .../main/java/fr/oupson/common/api/Stop.kt | 167 ++++++++ .../java/fr/oupson/common/api/TaoRestApi.kt | 73 ++++ .../fr/oupson/common/db/TaoDatabaseHelper.kt | 333 ++++++++++++++++ common/src/main/res/font/noto_sans_bold.ttf | Bin 0 -> 398652 bytes .../java/fr/oupson/common/ExampleUnitTest.kt | 17 + gradle.properties | 21 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 ++++++++ gradlew.bat | 84 ++++ settings.gradle | 4 + wear_tao/.gitignore | 1 + wear_tao/build.gradle | 51 +++ wear_tao/proguard-rules.pro | 21 + .../wear_tao/ExampleInstrumentedTest.kt | 24 ++ wear_tao/src/main/AndroidManifest.xml | 45 +++ .../java/fr/oupson/wear_tao/MainActivity.kt | 30 ++ .../main/java/fr/oupson/wear_tao/TaoTile.kt | 235 +++++++++++ .../res/drawable/ic_launcher_background.xml | 170 ++++++++ .../res/drawable/ic_launcher_foreground.xml | 30 ++ .../src/main/res/layout/activity_main.xml | 6 + wear_tao/src/main/res/mipmap-anydpi | 0 .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3593 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5339 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2636 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3388 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4926 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7472 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7909 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11873 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10652 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16570 bytes wear_tao/src/main/res/values-night/themes.xml | 16 + wear_tao/src/main/res/values/colors.xml | 10 + wear_tao/src/main/res/values/strings.xml | 4 + wear_tao/src/main/res/values/themes.xml | 16 + .../fr/oupson/wear_tao/ExampleUnitTest.kt | 17 + 102 files changed, 4120 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/compiler.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/fr/oupson/taotoolbox/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/ic_launcher-playstore.png create mode 100644 app/src/main/java/fr/oupson/taotoolbox/activities/MainActivity.kt create mode 100644 app/src/main/java/fr/oupson/taotoolbox/activities/TaoWidgetConfigurationActivity.kt create mode 100644 app/src/main/java/fr/oupson/taotoolbox/adapters/DirectionAdapter.kt create mode 100644 app/src/main/java/fr/oupson/taotoolbox/adapters/LineAdapter.kt create mode 100644 app/src/main/java/fr/oupson/taotoolbox/adapters/ScheduleAdapter.kt create mode 100644 app/src/main/java/fr/oupson/taotoolbox/adapters/StopAdapter.kt create mode 100644 app/src/main/java/fr/oupson/taotoolbox/receivers/TaoWidget.kt create mode 100644 app/src/main/java/fr/oupson/taotoolbox/windows/StopInfoWindow.kt create mode 100644 app/src/main/res/drawable/bg_widget.xml create mode 100644 app/src/main/res/drawable/ic_baseline_place_48.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_outline_error_outline_24.xml create mode 100644 app/src/main/res/drawable/ic_outline_save_24.xml create mode 100644 app/src/main/res/drawable/tao_widget_preview.png create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/activity_tao_widget_configuration.xml create mode 100644 app/src/main/res/layout/item_line.xml create mode 100644 app/src/main/res/layout/item_line_direction.xml create mode 100644 app/src/main/res/layout/item_schedule.xml create mode 100644 app/src/main/res/layout/item_stop.xml create mode 100644 app/src/main/res/layout/widget_tao.xml create mode 100644 app/src/main/res/layout/window_stop_info.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/values-fr-rFR/strings.xml create mode 100644 app/src/main/res/values-night/bools.xml create mode 100644 app/src/main/res/values-night/colors.xml create mode 100644 app/src/main/res/values-night/themes.xml create mode 100644 app/src/main/res/values/attrs.xml create mode 100644 app/src/main/res/values/bools.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/main/res/xml/backup_descriptor.xml create mode 100644 app/src/main/res/xml/widget_tao_info.xml create mode 100644 app/src/test/java/fr/oupson/taotoolbox/ExampleUnitTest.kt create mode 100644 build.gradle create mode 100644 common/.gitignore create mode 100644 common/build.gradle create mode 100644 common/consumer-rules.pro create mode 100644 common/proguard-rules.pro create mode 100644 common/src/androidTest/java/fr/oupson/common/ExampleInstrumentedTest.kt create mode 100644 common/src/main/AndroidManifest.xml create mode 100644 common/src/main/java/fr/oupson/common/api/Line.kt create mode 100644 common/src/main/java/fr/oupson/common/api/Stop.kt create mode 100644 common/src/main/java/fr/oupson/common/api/TaoRestApi.kt create mode 100644 common/src/main/java/fr/oupson/common/db/TaoDatabaseHelper.kt create mode 100644 common/src/main/res/font/noto_sans_bold.ttf create mode 100644 common/src/test/java/fr/oupson/common/ExampleUnitTest.kt create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 wear_tao/.gitignore create mode 100644 wear_tao/build.gradle create mode 100644 wear_tao/proguard-rules.pro create mode 100644 wear_tao/src/androidTest/java/fr/oupson/wear_tao/ExampleInstrumentedTest.kt create mode 100644 wear_tao/src/main/AndroidManifest.xml create mode 100644 wear_tao/src/main/java/fr/oupson/wear_tao/MainActivity.kt create mode 100644 wear_tao/src/main/java/fr/oupson/wear_tao/TaoTile.kt create mode 100644 wear_tao/src/main/res/drawable/ic_launcher_background.xml create mode 100644 wear_tao/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 wear_tao/src/main/res/layout/activity_main.xml create mode 100644 wear_tao/src/main/res/mipmap-anydpi create mode 100644 wear_tao/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 wear_tao/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 wear_tao/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 wear_tao/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 wear_tao/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 wear_tao/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 wear_tao/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 wear_tao/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 wear_tao/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 wear_tao/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 wear_tao/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 wear_tao/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 wear_tao/src/main/res/values-night/themes.xml create mode 100644 wear_tao/src/main/res/values/colors.xml create mode 100644 wear_tao/src/main/res/values/strings.xml create mode 100644 wear_tao/src/main/res/values/themes.xml create mode 100644 wear_tao/src/test/java/fr/oupson/wear_tao/ExampleUnitTest.kt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ffdee74 --- /dev/null +++ b/.gitignore @@ -0,0 +1,90 @@ +# Built application files +*.apk +*.aar +*.ap_ +*.aab + +output-metadata.json + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ +# Uncomment the following line in case you need and you don't have the release build type files in your app +# release/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +*.iml +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/assetWizardSettings.xml +.idea/dictionaries +.idea/libraries +# Android Studio 3 in .gitignore file. +.idea/caches +.idea/modules.xml +# Comment next line if keeping position of elements in Navigation Editor is relevant for you +.idea/navEditor.xml + +# Keystore files +# Uncomment the following lines if you do not want to check your keystore files in. +#*.jks +#*.keystore + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild +.cxx/ + +# Google Services (e.g. APIs or Firebase) +# google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md + +# Version control +vcs.xml + +# lint +lint/intermediates/ +lint/generated/ +lint/outputs/ +lint/tmp/ +# lint/reports/ + +# Android Profiling +*.hprof \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..ee07fc5 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Tao Toolbox \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..3c7772a --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..61a9130 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..2370474 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..d5d35ec --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..6d3946f --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,63 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' +} + +android { + compileSdkVersion 30 + buildToolsVersion "29.0.3" + + defaultConfig { + applicationId "fr.oupson.taotoolbox" + minSdkVersion 21 + targetSdkVersion 30 + versionCode 1 + versionName "0.0.2" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + // Enables code shrinking, obfuscation, and optimization for only + // your project's release build type. + minifyEnabled true + + // Enables resource shrinking, which is performed by the + // Android Gradle plugin. + shrinkResources true + + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + viewBinding true + } +} + +dependencies { + + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.3.0' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + implementation 'androidx.preference:preference-ktx:1.1.1' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3' + + implementation project(":common") + implementation 'org.osmdroid:osmdroid-android:6.1.10' +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/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/app/src/androidTest/java/fr/oupson/taotoolbox/ExampleInstrumentedTest.kt b/app/src/androidTest/java/fr/oupson/taotoolbox/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..ab0ef15 --- /dev/null +++ b/app/src/androidTest/java/fr/oupson/taotoolbox/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package fr.oupson.taotoolbox + +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("fr.oupson.taotoolbox", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..c4bf984 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..f6a22b6686e73337eedcfc7ea383a3a7f3bfa403 GIT binary patch literal 10312 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 literal 0 HcmV?d00001 diff --git a/app/src/main/java/fr/oupson/taotoolbox/activities/MainActivity.kt b/app/src/main/java/fr/oupson/taotoolbox/activities/MainActivity.kt new file mode 100644 index 0000000..596e26d --- /dev/null +++ b/app/src/main/java/fr/oupson/taotoolbox/activities/MainActivity.kt @@ -0,0 +1,324 @@ +package fr.oupson.taotoolbox.activities + +import android.Manifest +import android.content.pm.PackageManager +import android.database.sqlite.SQLiteDatabase +import android.graphics.* +import android.opengl.Visibility +import android.os.Bundle +import android.util.Log +import android.view.MenuItem +import android.view.View +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat +import androidx.preference.PreferenceManager +import fr.oupson.common.api.TaoRestApi +import fr.oupson.common.db.TaoDatabaseHelper +import fr.oupson.common.db.TaoDatabaseHelper.TaoDatabase.LineEntry +import fr.oupson.common.db.TaoDatabaseHelper.TaoDatabase.StopEntry +import fr.oupson.taotoolbox.BuildConfig +import fr.oupson.taotoolbox.R +import fr.oupson.taotoolbox.databinding.ActivityMainBinding +import fr.oupson.taotoolbox.windows.StopInfoWindow +import kotlinx.coroutines.* +import org.json.JSONArray +import org.osmdroid.config.Configuration +import org.osmdroid.tileprovider.tilesource.XYTileSource +import org.osmdroid.util.GeoPoint +import org.osmdroid.views.CustomZoomButtonsController +import org.osmdroid.views.overlay.CopyrightOverlay +import org.osmdroid.views.overlay.Marker +import org.osmdroid.views.overlay.Polyline +import org.osmdroid.views.overlay.compass.CompassOverlay +import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider +import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider +import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay +import kotlin.coroutines.coroutineContext + + +class MainActivity : AppCompatActivity() { + companion object { + private const val TAG = "MainActivity" + + private const val REQUEST_PERMISSIONS_REQUEST_CODE = 1 + } + + private val taoRestApi = TaoRestApi() + private lateinit var binding: ActivityMainBinding + + private val job = Job() + private val scope = Dispatchers.IO + job + + private val locationOverlay: MyLocationNewOverlay by lazy { + MyLocationNewOverlay(GpsMyLocationProvider(this), binding.map) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityMainBinding.inflate(layoutInflater) + + setContentView(binding.root) + + setSupportActionBar(binding.bottomAppBar) + + supportActionBar?.setDisplayHomeAsUpEnabled(true) + + window.apply { + clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) + addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) + decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { + decorView.systemUiVisibility = + decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR + } + statusBarColor = Color.TRANSPARENT + } + + Configuration.getInstance().also { + it.load(this, PreferenceManager.getDefaultSharedPreferences(this)) + it.userAgentValue = BuildConfig.APPLICATION_ID + } + + binding.loadingProgressBar.visibility = View.VISIBLE + + + binding.map.setTileSource( + XYTileSource( + "osm fr", 1, 19, 256, ".png", + arrayOf( + "https://a.tile.openstreetmap.fr/osmfr/", + "https://b.tile.openstreetmap.fr/osmfr/", + "https://c.tile.openstreetmap.fr/osmfr/" + ), "© OpenStreetMap contributors" + ) + ) + + buildOtherOverlays() + + requestPermissionsIfNecessary() + + GlobalScope.launch(scope) { + val helper = TaoDatabaseHelper(this@MainActivity).apply { + try { + this.checkUpdate() + withContext(Dispatchers.Main) { + binding.loadingProgressBar.visibility = View.GONE + } + } catch (e: Exception) { + Log.d(TAG, "while checking update", e) + } + } + + val db = helper.readableDatabase + + val copyright = CopyrightOverlay(this@MainActivity).apply { + this.setAlignRight(true) + } + binding.map.overlays.add(copyright) + + buildLineOverlays(db, helper) + + buildMarkerOverlays(db) + + binding.map.overlays.remove(copyright) + binding.map.overlays.add(copyright) + + db.close() + } + } + + + private fun buildOtherOverlays() { + binding.map.overlays.add(locationOverlay) + + val compassOverlay = + CompassOverlay(this, InternalCompassOrientationProvider(this), binding.map) + + compassOverlay.enableCompass() + + compassOverlay.setCompassCenter(35.0f, 70f) // TODO + + binding.map.overlays.add(compassOverlay) + + + binding.map.apply { + controller.setZoom(15.0) + controller.animateTo(GeoPoint(47.90250000, 1.90888889)) + zoomController.setVisibility(CustomZoomButtonsController.Visibility.SHOW_AND_FADEOUT) + setMultiTouchControls(true) + isFlingEnabled = true + } + } + + + private suspend fun buildMarkerOverlays(db: SQLiteDatabase) { + val infoWindow = StopInfoWindow(binding.map, taoRestApi) + + val cursor = db.query( + StopEntry.TABLE_NAME, + arrayOf( + StopEntry.COLUMN_NAME_STOP_ID, + StopEntry.COLUMN_NAME_STOP_NAME, + StopEntry.COLUMN_NAME_COORD_LONG, + StopEntry.COLUMN_NAME_COORD_LAT + ), + null, + null, + null, + null, + null + ) + + with(cursor) { + val stopIdIndex = cursor.getColumnIndexOrThrow(StopEntry.COLUMN_NAME_STOP_ID) + val stopNameIndex = cursor.getColumnIndexOrThrow(StopEntry.COLUMN_NAME_STOP_NAME) + val stopCoordLongIndex = + cursor.getColumnIndexOrThrow(StopEntry.COLUMN_NAME_COORD_LONG) + val stopCoordLatIndex = + cursor.getColumnIndexOrThrow(StopEntry.COLUMN_NAME_COORD_LAT) + + val drawable = + ContextCompat.getDrawable(this@MainActivity, R.drawable.ic_baseline_place_48) + drawable?.colorFilter = PorterDuffColorFilter( + ContextCompat.getColor(this@MainActivity, R.color.tao_blue), + PorterDuff.Mode.MULTIPLY + ) + + while (moveToNext() && coroutineContext.isActive) { + binding.map.overlays.add(Marker(binding.map).apply { + position = GeoPoint( + getDouble(stopCoordLatIndex), getDouble(stopCoordLongIndex), + ) + icon = drawable + + title = getString(stopNameIndex) + id = getString(stopIdIndex) + setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM) + this.infoWindow = infoWindow + }) + } + } + + cursor.close() + } + + private suspend fun buildLineOverlays(db: SQLiteDatabase, helper: TaoDatabaseHelper) { + val lineCursor = db.query( + LineEntry.TABLE_NAME, + arrayOf( + LineEntry.COLUMN_NAME_LINE_ID, + LineEntry.COLUMN_NAME_LINE_NAME, + LineEntry.COLUMN_NAME_BACKGROUND_COLOR + ), + null, + null, + null, + null, null + ) + + with(lineCursor) { + val lineIdIndex = getColumnIndexOrThrow(LineEntry.COLUMN_NAME_LINE_ID) + val lineNameIndex = getColumnIndexOrThrow( + LineEntry.COLUMN_NAME_LINE_NAME + ) + val lineBackgroundColorIndex = + getColumnIndexOrThrow(LineEntry.COLUMN_NAME_BACKGROUND_COLOR) + + while (lineCursor.moveToNext() && coroutineContext.isActive) { + val jsonResponse = JSONArray(taoRestApi.getTaoGeoJson(getString(lineIdIndex))) + val color = Color.parseColor(getString(lineBackgroundColorIndex)) + + for (routeIndex in 0 until jsonResponse.length()) { + val route = jsonResponse.getJSONObject(routeIndex) + val routeLine = Polyline(binding.map).apply { + outlinePaint.color = color + id = route.getString("routeId") + title = getString(lineNameIndex) + subDescription = this@MainActivity.getString( + R.string.line_popup_description, + helper.getRouteName(db, route.getString("routeId")) + ) + } + + val geo = route.getJSONArray("geojson") // TODO DECODE ENCODED ? + + for (i in 0 until geo.length()) { + val value = geo.getJSONArray(i) + routeLine.addPoint(GeoPoint(value.getDouble(1), value.getDouble(0))) + } + + binding.map.overlays.add(routeLine) + } + } + } + + lineCursor.close() + } + + override fun onResume() { + super.onResume() + binding.map.onResume() + } + + override fun onPause() { + super.onPause() + + binding.map.onResume() + } + + override fun onDestroy() { + super.onDestroy() + scope.cancel() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + when (requestCode) { + REQUEST_PERMISSIONS_REQUEST_CODE -> { + val res = grantResults.getOrNull(0) + if (res == PackageManager.PERMISSION_GRANTED) { + onAccessLocationPermissionGranted() + } + } + } + } + + private fun onAccessLocationPermissionGranted() { + Log.d(TAG, "onAccessLocationPermissionGranted") + + locationOverlay.enableMyLocation() + locationOverlay.isOptionsMenuEnabled = true + locationOverlay.enableFollowLocation() + } + + private fun requestPermissionsIfNecessary() { + if (ActivityCompat.checkSelfPermission( + this, + Manifest.permission.ACCESS_FINE_LOCATION + ) != PackageManager.PERMISSION_GRANTED + ) { + ActivityCompat.requestPermissions( + this, + arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), + REQUEST_PERMISSIONS_REQUEST_CODE + ) + } else { + onAccessLocationPermissionGranted() + } + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return when (item.itemId) { + android.R.id.home -> { + onBackPressed() + false + } + else -> super.onOptionsItemSelected(item) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/oupson/taotoolbox/activities/TaoWidgetConfigurationActivity.kt b/app/src/main/java/fr/oupson/taotoolbox/activities/TaoWidgetConfigurationActivity.kt new file mode 100644 index 0000000..0ec76cc --- /dev/null +++ b/app/src/main/java/fr/oupson/taotoolbox/activities/TaoWidgetConfigurationActivity.kt @@ -0,0 +1,366 @@ +package fr.oupson.taotoolbox.activities + +import android.app.Activity +import android.appwidget.AppWidgetManager +import android.content.Context +import android.content.Intent +import android.database.sqlite.SQLiteDatabase +import android.graphics.Color +import android.os.Bundle +import android.util.Log +import android.view.MenuItem +import android.view.View +import android.widget.AutoCompleteTextView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.edit +import fr.oupson.common.api.TaoRestApi +import fr.oupson.common.db.TaoDatabaseHelper +import fr.oupson.common.db.TaoDatabaseHelper.TaoDatabase.* +import fr.oupson.taotoolbox.BuildConfig +import fr.oupson.taotoolbox.R +import fr.oupson.taotoolbox.adapters.DirectionAdapter +import fr.oupson.taotoolbox.adapters.LineAdapter +import fr.oupson.taotoolbox.adapters.StopAdapter +import fr.oupson.taotoolbox.databinding.ActivityTaoWidgetConfigurationBinding +import fr.oupson.taotoolbox.receivers.TaoWidget +import kotlinx.coroutines.* + +// TODO FIND A WAY TO AUTO SELECT +class TaoWidgetConfigurationActivity : AppCompatActivity() { + companion object { + private const val LINE_ID = "WIDGET_LINE_ID" + private const val LINE_CODE = "WIDGET_LINE_CODE" + private const val ROUTE_ID = "WIDGET_LINE_ID" + private const val ROUTE_NAME = "ROUTE_NAME" + private const val STOP_ID = "WIDGET_STOP_ID" + private const val STOP_NAME = "WIDGET_STOP_NAME" + private const val BG_COLOR = "WIDGET_LINE_BACKGROUND_COLOR" + private const val TEXT_COLOR = "WIDGET_LINE_TEXT_COLOR" + + private const val PREFERENCE_NAME = "WIDGET" + + private const val TAG = "TaoWidgetConfiguration" + + private fun savePrefs( + context: Context, + widgetId: Int, + lineId: String, + lineCode: String, + routeId: String, + routeName: String, + stopId: String, + stopName: String, + bgColor: Int, + textColor: Int + ) { + Log.d(TAG, "savePrefs, widget id : $widgetId") + context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE).edit(true) { + putString("${LINE_ID}_$widgetId", lineId) + putString("${LINE_CODE}_$widgetId", lineCode) + putString("${ROUTE_ID}_$widgetId", routeId) + putString("${ROUTE_NAME}_$widgetId", routeName) + putString("${STOP_ID}_$widgetId", stopId) + putString("${STOP_NAME}_$widgetId", stopName) + putInt("${BG_COLOR}_$widgetId", bgColor) + putInt("${TEXT_COLOR}_$widgetId", textColor) + } + } + + data class WidgetPrefs( + val lineId: String, + val lineCode: String, + val routeId: String, + val routeName: String, + val stopId: String, + val stopName: String, + val bgColor: Int, + val textColor: Int + ) + + fun getPrefs(context: Context, widgetId: Int): WidgetPrefs? = + with(context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE)) { + Log.d(TAG, "getPrefs, widget id : $widgetId") + WidgetPrefs( + getString("${LINE_ID}_$widgetId", null) ?: return null, + getString("${LINE_CODE}_$widgetId", null) ?: return null, + getString("${ROUTE_ID}_$widgetId", null) ?: return null, + getString("${ROUTE_NAME}_$widgetId", null) ?: return null, + getString("${STOP_ID}_$widgetId", null) ?: return null, + getString("${STOP_NAME}_$widgetId", null) ?: return null, + getInt("${BG_COLOR}_$widgetId", Color.BLACK), + getInt("${TEXT_COLOR}_$widgetId", Color.WHITE), + ) + } + + fun destroyPrefs(context: Context, widgetId: Int) { + Log.d(TAG, "destroyPrefs, widget id : $widgetId") + val prefs = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE) + prefs.edit(commit = true) { + remove("${LINE_ID}_$widgetId") + remove("${LINE_CODE}_$widgetId") + remove("${ROUTE_ID}_$widgetId") + remove("${ROUTE_NAME}_$widgetId") + remove("${STOP_ID}_$widgetId") + remove("${STOP_NAME}_$widgetId") + remove("${BG_COLOR}_$widgetId") + remove("${TEXT_COLOR}_$widgetId") + } + } + } + + private var widgetId: Int? = null + private lateinit var binding: ActivityTaoWidgetConfigurationBinding + + private var db: SQLiteDatabase? = null + + private val lineList = arrayListOf() + private val directionList = arrayListOf() + private val stopList = arrayListOf() + + private val lineAdapter: LineAdapter by lazy { LineAdapter(this, lineList) } + private val directionAdapter: DirectionAdapter by lazy { DirectionAdapter(this, directionList) } + private val stopAdapter: StopAdapter by lazy { StopAdapter(this, stopList) } + + private var linePosition: Int = -1 + private var directionPosition: Int = -1 + private var stopPosition: Int = -1 + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityTaoWidgetConfigurationBinding.inflate(layoutInflater) + setContentView(binding.root) + + setSupportActionBar(binding.bottomAppBar) + supportActionBar?.setDisplayHomeAsUpEnabled(true) + + widgetId = intent.extras?.getInt( + AppWidgetManager.EXTRA_APPWIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID + ) + + if ((widgetId == AppWidgetManager.INVALID_APPWIDGET_ID || widgetId == null) && !BuildConfig.DEBUG) { + setResult(Activity.RESULT_CANCELED, null) + finish() + } + + binding.loadingProgressBar.visibility = View.VISIBLE + + (binding.configSelectLine.editText as? AutoCompleteTextView)?.also { autoCompleteTextView -> + autoCompleteTextView.setAdapter(lineAdapter) + autoCompleteTextView.setOnItemClickListener { _, _, position, _ -> + GlobalScope.launch(Dispatchers.IO) { + linePosition = position + directionPosition = -1 + loadDirectionList(position) + } + } + } + + (binding.configSelectDirection.editText as? AutoCompleteTextView)?.also { directionAutoComplete -> + directionAutoComplete.setAdapter(directionAdapter) + directionAutoComplete.setOnItemClickListener { _, _, position, _ -> + GlobalScope.launch(Dispatchers.IO) { + directionPosition = position + stopPosition = -1 + + loadStopList(position) + } + } + } + + (binding.configSelectStop.editText as? AutoCompleteTextView)?.also { + it.setAdapter(stopAdapter) + it.setOnItemClickListener { _, _, position, _ -> + binding.configSelectStop.isErrorEnabled = false + stopPosition = position + } + } + + binding.fabConfirm.setOnClickListener { + save() + } + + GlobalScope.launch(Dispatchers.IO) { + db = TaoDatabaseHelper(this@TaoWidgetConfigurationActivity).apply { + checkUpdate() + withContext(Dispatchers.Main) { + binding.loadingProgressBar.visibility = View.GONE + } + }.readableDatabase + + loadLineList() + } + } + + private fun checkEntryValid(): Boolean { + var res = true + if (linePosition == -1) { + res = false + binding.configSelectLine.error = getString(R.string.activity_tao_config_missing_value) + } + + if (directionPosition == -1) { + res = false + binding.configSelectDirection.error = + getString(R.string.activity_tao_config_missing_value) + } + + if (stopPosition == -1) { + res = false + binding.configSelectStop.error = getString(R.string.activity_tao_config_missing_value) + } + + return res + } + + private fun save() { + if (!checkEntryValid()) + return + + if (widgetId == AppWidgetManager.INVALID_APPWIDGET_ID || widgetId == null) { + setResult(Activity.RESULT_CANCELED, null) + } else { + savePrefs( + this, + widgetId!!, + lineList[linePosition].lineId, + lineList[linePosition].lineCode, + directionList[directionPosition].routeId, + directionList[directionPosition].directionName, + stopList[stopPosition].stopId, + stopList[stopPosition].stopName, + lineList[linePosition].bgColor, + lineList[linePosition].textColor, + ) + + val appWidgetManager: AppWidgetManager = AppWidgetManager.getInstance(this) + runBlocking { + TaoWidget.updateAppWidget( + this@TaoWidgetConfigurationActivity, + appWidgetManager, + widgetId!!, + TaoRestApi() + ) + } + + val resultValue = Intent().apply { + putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId) + } + setResult(Activity.RESULT_OK, resultValue) + + } + finish() + } + + + private suspend fun loadLineList() { + if (db != null) { + lineList.clear() + + val cursor = db!!.query( + true, + LineEntry.TABLE_NAME, + arrayOf( + LineEntry.COLUMN_NAME_LINE_ID, + LineEntry.COLUMN_NAME_LINE_CODE, + LineEntry.COLUMN_NAME_LINE_NAME, + LineEntry.COLUMN_NAME_BACKGROUND_COLOR, + LineEntry.COLUMN_NAME_TEXT_COLOR + ), + null, + null, + null, + null, + LineEntry.COLUMN_NAME_LINE_ORDER, + null + ) + + while (cursor.moveToNext()) { + lineList.add( + LineAdapter.Line( + cursor.getString(0), + cursor.getString(1), + cursor.getString(2), + Color.parseColor(cursor.getString(3)), + Color.parseColor(cursor.getString(4)) + ) + ) + } + cursor.close() + + withContext(Dispatchers.Main) { + lineAdapter.notifyDataSetChanged() + } + } + } + + private suspend fun loadStopList(position: Int) { + stopList.clear() + if (db != null) { + val cursor = db!!.rawQuery( + "SELECT ${StopEntry.COLUMN_NAME_STOP_ID}, ${StopEntry.COLUMN_NAME_STOP_NAME} FROM ${StopEntry.TABLE_NAME} NATURAL JOIN ${IsStopEntry.TABLE_NAME} NATURAL JOIN ${DirectionEntry.TABLE_NAME} WHERE ${DirectionEntry.COLUMN_NAME_ROUTE_ID} = ? ORDER BY ${IsStopEntry.COLUMN_NAME_STOP_INDEX}", + arrayOf(directionList[position].routeId) + ) + while (cursor.moveToNext()) { + stopList.add( + StopAdapter.Stop( + cursor.getString(0), + cursor.getString(1) + ) + ) + } + cursor.close() + } + + withContext(Dispatchers.Main) { + binding.configSelectDirection.isErrorEnabled = false + stopAdapter.notifyDataSetChanged() + } + } + + private suspend fun loadDirectionList(position: Int) { + directionList.clear() + + if (db != null) { + val cursor = db!!.rawQuery( + "SELECT ${LineEntry.COLUMN_NAME_LINE_ID}, ${LineEntry.COLUMN_NAME_LINE_CODE}, ${DirectionEntry.COLUMN_NAME_ROUTE_NAME}, ${DirectionEntry.COLUMN_NAME_ROUTE_ID}, ${LineEntry.COLUMN_NAME_BACKGROUND_COLOR}, ${LineEntry.COLUMN_NAME_TEXT_COLOR} FROM ${LineEntry.TABLE_NAME} NATURAL JOIN ${DirectionEntry.TABLE_NAME} WHERE ${LineEntry.COLUMN_NAME_LINE_ID} = ?", + arrayOf(lineList[position].lineId) + ) + while (cursor.moveToNext()) { + directionList.add( + DirectionAdapter.Direction( + cursor.getString(0), + cursor.getString(1), + cursor.getString(2), + cursor.getString(3), + Color.parseColor(cursor.getString(4)), + Color.parseColor(cursor.getString(5)) + ) + ) + } + cursor.close() + } + + withContext(Dispatchers.Main) { + binding.configSelectLine.isErrorEnabled = false + directionAdapter.notifyDataSetChanged() + } + } + + override fun onDestroy() { + super.onDestroy() + if (BuildConfig.DEBUG) + Log.v(TAG, "Closing database") + db?.close() + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return when (item.itemId) { + android.R.id.home -> { + onBackPressed() + false + } + else -> super.onOptionsItemSelected(item) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/oupson/taotoolbox/adapters/DirectionAdapter.kt b/app/src/main/java/fr/oupson/taotoolbox/adapters/DirectionAdapter.kt new file mode 100644 index 0000000..69a04e6 --- /dev/null +++ b/app/src/main/java/fr/oupson/taotoolbox/adapters/DirectionAdapter.kt @@ -0,0 +1,66 @@ +package fr.oupson.taotoolbox.adapters + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.ImageView +import android.widget.TextView +import fr.oupson.taotoolbox.R +import fr.oupson.common.api.LineColors + +class DirectionAdapter(context: Context, private val lines: List) : + ArrayAdapter(context, 0, lines) { + data class Direction( + val lineId: String, + val lineCode: String, + val directionName: String, + val routeId: String, + val bgColor: Int, + val textColor: Int + ) { + override fun toString(): String { + return "${this.lineCode} : ${this.directionName}" + } + } + + override fun getView(position: Int, c: View?, parent: ViewGroup): View { + var convertView = c + val holder = if (convertView == null) { + convertView = + LayoutInflater.from(context).inflate(R.layout.item_line_direction, parent, false) + + LineViewHolder(convertView).also { + convertView.tag = it + } + } else { + convertView.tag as LineViewHolder + } + + holder.bind(context, lines[position]) + + return convertView!! + } + + class LineViewHolder(view: View) { + private val directionNameTextView: TextView = + view.findViewById(R.id.item_line_direction_name_text_view) + private val directionImageView: ImageView = + view.findViewById(R.id.item_line_direction_image_view) + + fun bind(context: Context, line: Direction) { + this.directionNameTextView.text = line.directionName + this.directionImageView.setImageBitmap( + LineColors.getLineBtm( + context, + line.lineCode, + line.bgColor, + line.textColor, + 256, + 256 + ) + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/oupson/taotoolbox/adapters/LineAdapter.kt b/app/src/main/java/fr/oupson/taotoolbox/adapters/LineAdapter.kt new file mode 100644 index 0000000..6d75fe2 --- /dev/null +++ b/app/src/main/java/fr/oupson/taotoolbox/adapters/LineAdapter.kt @@ -0,0 +1,61 @@ +package fr.oupson.taotoolbox.adapters + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.ImageView +import android.widget.TextView +import fr.oupson.common.api.LineColors +import fr.oupson.taotoolbox.R + +class LineAdapter(context: Context, private val lines: List) : + ArrayAdapter(context, 0, lines) { + data class Line( + val lineId: String, + val lineCode: String, + val lineName: String, + val bgColor: Int, + val textColor: Int + ) { + override fun toString(): String { + return "${this.lineCode} : ${this.lineName}" + } + } + + override fun getView(position: Int, c: View?, parent: ViewGroup): View { + var convertView = c + val holder = if (convertView == null) { + convertView = LayoutInflater.from(context).inflate(R.layout.item_line, parent, false) + LineViewHolder(convertView).also { + convertView.tag = it + } + } else { + convertView.tag as LineViewHolder + } + + holder.bind(context, lines[position]) + + return convertView!! + } + + class LineViewHolder(view: View) { + private val lineNameTextView: TextView = view.findViewById(R.id.item_line_name_text_view) + private val lineImageView: ImageView = view.findViewById(R.id.item_line_image_view) + + fun bind(context: Context, line: Line) { + this.lineNameTextView.text = line.lineName + this.lineImageView.setImageBitmap( + LineColors.getLineBtm( + context, + line.lineCode, + line.bgColor, + line.textColor, + 256, + 256 + ) + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/oupson/taotoolbox/adapters/ScheduleAdapter.kt b/app/src/main/java/fr/oupson/taotoolbox/adapters/ScheduleAdapter.kt new file mode 100644 index 0000000..8707d19 --- /dev/null +++ b/app/src/main/java/fr/oupson/taotoolbox/adapters/ScheduleAdapter.kt @@ -0,0 +1,82 @@ +package fr.oupson.taotoolbox.adapters + +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import fr.oupson.taotoolbox.R +import fr.oupson.common.api.LineColors +import fr.oupson.common.api.Schedule +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +class ScheduleAdapter( + private val scheduleList: SimplePtr> +) : + RecyclerView.Adapter() { + class SimplePtr(private var value: T? = null) { + fun get(): T? = value + fun set(value: T?) { + this.value = value + } + } + + class ScheduleViewHolder( + private val view: View + ) : RecyclerView.ViewHolder(view) { + private val scheduleDirectionTextView = + view.findViewById(R.id.item_schedule_direction_text_view) + private val scheduleImageView = view.findViewById(R.id.item_schedule_line_image_view) + private val scheduleNextTextView = view.findViewById(R.id.item_schedule_next_text_view) + private val scheduleAfterTextView = + view.findViewById(R.id.item_schedule_after_text_view) + + fun bind(schedule: Schedule) { + scheduleDirectionTextView.text = view.context.getString( + R.string.line_and_direction_name, + schedule.lineColors.lineCode, + schedule.lineDirectionName + ) + + scheduleNextTextView.text = + view.context.getString(R.string.time_remaining, schedule.timeRemaining() ?: "∅") + scheduleAfterTextView.text = view.context.getString( + R.string.time_remaining, + schedule.timeRemainingAfter() ?: "∅" + ) + + + GlobalScope.launch(Dispatchers.Default) { + val btm = LineColors.getLineBtm( + view.context, + schedule.lineColors.lineCode, + Color.parseColor(schedule.lineColors.background), + Color.parseColor(schedule.lineColors.text), + 48, + 48 + ) + withContext(Dispatchers.Main) { + scheduleImageView.setImageBitmap(btm) + } + } + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ScheduleViewHolder { + val inflater = LayoutInflater.from(parent.context) + return ScheduleViewHolder(inflater.inflate(R.layout.item_schedule, parent, false)) + } + + override fun onBindViewHolder(holder: ScheduleViewHolder, position: Int) { + val ref = scheduleList.get() + if (ref != null) + holder.bind(ref[position]) + } + + override fun getItemCount(): Int = scheduleList.get()?.size ?: 0 +} \ No newline at end of file diff --git a/app/src/main/java/fr/oupson/taotoolbox/adapters/StopAdapter.kt b/app/src/main/java/fr/oupson/taotoolbox/adapters/StopAdapter.kt new file mode 100644 index 0000000..530cfe6 --- /dev/null +++ b/app/src/main/java/fr/oupson/taotoolbox/adapters/StopAdapter.kt @@ -0,0 +1,42 @@ +package fr.oupson.taotoolbox.adapters + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.TextView +import fr.oupson.taotoolbox.R + +class StopAdapter(context: Context, private val lines: List) : + ArrayAdapter(context, 0, lines) { + data class Stop(val stopId: String, val stopName: String) { + override fun toString(): String { + return this.stopName + } + } + + override fun getView(position: Int, c: View?, parent: ViewGroup): View { + var convertView = c + val holder = if (convertView == null) { + convertView = LayoutInflater.from(context).inflate(R.layout.item_stop, parent, false) + LineViewHolder(convertView).also { + convertView.tag = it + } + } else { + convertView.tag as LineViewHolder + } + + holder.bind(lines[position]) + + return convertView!! + } + + class LineViewHolder(view: View) { + private val stopNameTextView: TextView = view.findViewById(R.id.item_stop_name) + + fun bind(line: Stop) { + this.stopNameTextView.text = line.stopName + } + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/oupson/taotoolbox/receivers/TaoWidget.kt b/app/src/main/java/fr/oupson/taotoolbox/receivers/TaoWidget.kt new file mode 100644 index 0000000..24e6f0d --- /dev/null +++ b/app/src/main/java/fr/oupson/taotoolbox/receivers/TaoWidget.kt @@ -0,0 +1,238 @@ +package fr.oupson.taotoolbox.receivers + +import android.app.PendingIntent +import android.appwidget.AppWidgetManager +import android.appwidget.AppWidgetProvider +import android.content.Context +import android.content.Intent +import android.graphics.* +import android.net.Uri +import android.util.Log +import android.widget.RemoteViews +import fr.oupson.common.api.LineColors +import fr.oupson.common.api.RealTimes +import fr.oupson.common.api.TaoRestApi +import fr.oupson.taotoolbox.R +import fr.oupson.taotoolbox.activities.TaoWidgetConfigurationActivity +import kotlinx.coroutines.* +import java.util.* + +class TaoWidget : AppWidgetProvider() { + companion object { + private const val TAG = "TaoWidget" + + suspend fun updateAppWidget( + context: Context, + appWidgetManager: AppWidgetManager, + appWidgetId: Int, + taoRestApi: TaoRestApi + ) { + Log.d(TAG, "updateAppWidget, appWidgetId : $appWidgetId") + + // Construct the RemoteViews object + val views = RemoteViews(context.packageName, R.layout.widget_tao) + + val serviceIntent = Intent(context, TaoWidget::class.java) + serviceIntent.action = AppWidgetManager.ACTION_APPWIDGET_UPDATE + serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, intArrayOf(appWidgetId)) + serviceIntent.data = Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)) + + val pending = PendingIntent.getBroadcast( + context, + appWidgetId, + serviceIntent, + PendingIntent.FLAG_UPDATE_CURRENT + ) + views.setOnClickPendingIntent(R.id.tao_widget_root, pending) + + try { + val prefs = TaoWidgetConfigurationActivity.getPrefs(context, appWidgetId) + if (prefs != null) { + val depart = taoRestApi.getNextDeparturesForLine( + prefs.stopId, + prefs.routeId + ) + + views.setRealtime( + context, + prefs.stopName, + prefs.routeName.toDirection(), + LineColors.getLineBtm( + context, + prefs.lineCode, + prefs.bgColor, + prefs.textColor, + 256, + 256 + ), + depart + ) + } + } catch (e: Exception) { + Log.e(TAG, "While updating widget", e) + + views.setTextViewText( + R.id.widget_tao_stop_name_text_view, + context.getString(R.string.widget_tao_error_title) + ) + views.setTextViewText( + R.id.widget_tao_stop_direction_text_view, + context.getString(R.string.widget_tao_error_description) + ) + + views.setImageViewResource( + R.id.widget_tao_line_icon_image_view, + R.drawable.ic_outline_error_outline_24 + ) + + val now = GregorianCalendar() + views.setTextViewText( + R.id.widget_tao_refresh_date_text_view, + context.getString( + R.string.widget_tao_time, + now.get(GregorianCalendar.HOUR_OF_DAY), + now.get(GregorianCalendar.MINUTE) + ) + ) + + views.setTextViewText( + R.id.widget_tao_next_text_view, "" + ) + + views.setTextViewText( + R.id.widget_tao_after_next_text_view, + "" + ) + + views.setTextViewText( + R.id.widget_tao_third_text_view, + "" + ) + } + + + // Instruct the widget manager to update the widget + appWidgetManager.updateAppWidget(appWidgetId, views) + } + + + private fun String.toDirection(): String { + return if (indexOf(" - ") > 0) + split(" - ").last() + else + this + } + + private fun RemoteViews.setRealtime( + context: Context, + stopName: String, + lineName: String, + lineBtm: Bitmap, + realTimes: RealTimes + ) { + setImageViewBitmap( + R.id.widget_tao_line_icon_image_view, + lineBtm.roundCorner(context.resources.getDimension(R.dimen.widget_tao_corner)) + ) + setTextViewText(R.id.widget_tao_stop_name_text_view, stopName) + setTextViewText(R.id.widget_tao_stop_direction_text_view, lineName) + + val now = GregorianCalendar() + setTextViewText( + R.id.widget_tao_refresh_date_text_view, + context.getString( + R.string.widget_tao_time, + now.get(GregorianCalendar.HOUR_OF_DAY), + now.get(GregorianCalendar.MINUTE) + ) + ) + + setTextViewText( + R.id.widget_tao_next_text_view, context.getString( + R.string.time_remaining, + realTimes.timeRemaining(0) ?: "∅" + ) + ) + + setTextViewText( + R.id.widget_tao_after_next_text_view, + context.getString( + R.string.time_remaining, + realTimes.timeRemainingAfter(0) ?: "∅" + ) + ) + + setTextViewText( + R.id.widget_tao_third_text_view, + context.getString( + R.string.time_remaining, + realTimes.timeRemainingThird(0) ?: "∅" + ) + ) + } + + private fun Bitmap.roundCorner(radius: Float): Bitmap { + val res = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) + val canvas = Canvas(res) + + canvas.drawColor(Color.TRANSPARENT) + + val shader = BitmapShader( + this, + Shader.TileMode.CLAMP, + Shader.TileMode.CLAMP + ) + + val paint = Paint() + paint.isAntiAlias = true + paint.shader = shader + + + val rect = RectF(0.0f, 0.0f, width.toFloat(), height.toFloat()) + + canvas.drawRoundRect(rect, radius, radius, paint) + + return res + } + } + + private val job = Job() + private val coroutineContext = Dispatchers.IO + job + + override fun onUpdate( + context: Context, + appWidgetManager: AppWidgetManager, + appWidgetIds: IntArray + ) { + GlobalScope.launch(coroutineContext) { + val taoRestApi = TaoRestApi() + // There may be multiple widgets active, so update all of them + for (appWidgetId in appWidgetIds) { + updateAppWidget(context, appWidgetManager, appWidgetId, taoRestApi) + } + } + } + + override fun onEnabled(context: Context) { + // Enter relevant functionality for when the first widget is created + } + + override fun onDisabled(context: Context) { + // Enter relevant functionality for when the last widget is disabled + } + + override fun onDeleted(context: Context?, appWidgetIds: IntArray?) { + super.onDeleted(context, appWidgetIds) + Log.d(TAG, "onDeleted : ${appWidgetIds?.contentToString()}") + + runBlocking { + job.cancelAndJoin() + } + + if (context != null && appWidgetIds != null) { + for (widgetId in appWidgetIds) { + TaoWidgetConfigurationActivity.destroyPrefs(context, widgetId) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/oupson/taotoolbox/windows/StopInfoWindow.kt b/app/src/main/java/fr/oupson/taotoolbox/windows/StopInfoWindow.kt new file mode 100644 index 0000000..f917793 --- /dev/null +++ b/app/src/main/java/fr/oupson/taotoolbox/windows/StopInfoWindow.kt @@ -0,0 +1,60 @@ +package fr.oupson.taotoolbox.windows + +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import fr.oupson.taotoolbox.R +import fr.oupson.taotoolbox.adapters.ScheduleAdapter +import fr.oupson.common.api.Schedule +import fr.oupson.common.api.TaoRestApi +import kotlinx.coroutines.* +import org.osmdroid.views.MapView +import org.osmdroid.views.overlay.Marker +import org.osmdroid.views.overlay.infowindow.InfoWindow + +class StopInfoWindow( + mapView: MapView, + private val taoRestApi: TaoRestApi = TaoRestApi() +) : InfoWindow(R.layout.window_stop_info, mapView) { + private val job = Job() + private val windowsContext = Dispatchers.IO + job + + private val titleTextView: TextView by lazy { view.findViewById(R.id.window_stop_info_title_text_view) } + + private val scheduleList: ScheduleAdapter.SimplePtr> by lazy { + ScheduleAdapter.SimplePtr( + null + ) + } + + private val adapter: ScheduleAdapter by lazy { ScheduleAdapter(scheduleList) } + private val recyclerView: RecyclerView by lazy { + view.findViewById(R.id.window_stop_info_schedule_recycler_view).also { + it.adapter = adapter + it.layoutManager = LinearLayoutManager(view.context) + } + } + + override fun onOpen(item: Any?) { + scheduleList.set(null) + recyclerView.adapter?.notifyDataSetChanged() + + if (item is Marker) { + val id = item.id + titleTextView.text = item.title + + GlobalScope.launch(windowsContext) { + val schedule = taoRestApi.getSchedule(id) + + withContext(Dispatchers.Main) { + scheduleList.set(schedule) + adapter.notifyDataSetChanged() + } + } + } + } + + override fun onClose() { + windowsContext.cancelChildren() + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_widget.xml b/app/src/main/res/drawable/bg_widget.xml new file mode 100644 index 0000000..c47cdf8 --- /dev/null +++ b/app/src/main/res/drawable/bg_widget.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_baseline_place_48.xml b/app/src/main/res/drawable/ic_baseline_place_48.xml new file mode 100644 index 0000000..d411330 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_place_48.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..17b423a --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_outline_error_outline_24.xml b/app/src/main/res/drawable/ic_outline_error_outline_24.xml new file mode 100644 index 0000000..45ba5f6 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_error_outline_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_save_24.xml b/app/src/main/res/drawable/ic_outline_save_24.xml new file mode 100644 index 0000000..3c59fbc --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_save_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/tao_widget_preview.png b/app/src/main/res/drawable/tao_widget_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e671a0bf7344f2ec86934bc93583ae4e9bb077 GIT binary patch literal 16386 zcmd6ObyQSu+b(tjB7%y9jDZM47@pNCn}|M5?<~n4X`96S4pJA9x6G<5{I4Kl^m)M zmfB^`cb;JsVmx}X?#=mk56&IE5O)4({&%Gx->9m}%Wb^_KI7bSy{k@EWL?e7Q+x32 zOQ!u%ibKa{v>)&@GR7V49Bf$(zPln|e2?*^jFIj8-j$`FFWQ{sw%*YCI#sXic?6$? zLHuXGy!bo#%Do21Sy0!+k_)kK0v=qa&tX?^gr3gtv6+9Hn z;mgYz{FHL;3KNQaXtPUFES6T2jD+Mt=u<|NfVjbMphz06rrfXzW8F>v1}%!2xoJ_j zPxQ+;)UrQz-pQVkH_6HV5O2pbv1-bYVNtJRBqVu})u;k_v1*Etb+Viki9n9J;{gpQ z3O+_u60O!5xVPOJR*95tGg4`yP$DItlxdnp`E>whHqWXIt92p7f`a)%$g3*{Y!>Oi z;Za;Iiei-)4oEMA^q@LFkr8w*hI~XVo4;0e3ZPNMVjhcCXB#HK-I-94V&l@URgaR8 zd|&krc$|zC3&8HkuCq{wbf5}G=*7EJ^WXIOp_Z*O%Hs7X_*hXje%LQM;)mc7*W^&0 zQex$PSWVKMOJd{d6kB~d;@!y{Z~6#g;{h}}EL0)aP_|mQ2u~Q$gIe1N9DZ|5ybkY! zsmC@*S122JCq1%wg`Gc7agin0@JaV(-}wp^7zjxS?&C2jRA*C@c?zmi9;d=#eNxh= z?<57^b<`mhohQ^G3}VThIaDx)2aW1t3z4`}&m#(waV0#hIaI?x)6dN@D;ExytGN)J zDEci&ZQ+jAlpFq!Pp}Xr#m4VsMAsOo2D#eLSx~rqmv)O*TKjyMgd}mP^ty89C1>>_ z-^bmh>J?MGlB;#a6d{}n7}|O63=O@^p#|iLi9Bq{vxiQOP!lH<){?se)>-Q*aQp)C&K(^8(wkg@H6B8v~5rEyztqRC@!V=j~!5XHcY|8RO@URDC4zgnF8m0`_ zP)-Ad=iGezyj2Erq`K`~;0fP1<1U1_vk+H^>TiUQ1+p*ctR@6;!!!~--YTpym!}A$ zI%{>r`#9^!N;)Ih9O;jqB_Z*0t+=W@SEnIepn52XET2Gh#=sSQZKqh!vUlo^V;{@2 z5E~uKh2cYsx%c74ViZew!Z#w79z$Md#5L57e|?oHhFgw(FDE9^H}-q|bbilG`;IeU zeTnGE>>`Ikf;U|7I=e{yrW4%9BmggH%(l@VTP14oF1%PzK>G@ON?NNCUl_4t(H0_< z|3(cyKo|1VWHfHn-OE7Ccre;s-oh)KN0b%DT|KoaTo)Cj0{E(#YO<~fR^vseG zSC;zr_V(@~%%FGIu+qZ#Aka`cNji>FoO-i3s4+_`nDfl#zJms_JV-Idl( zzLo>)K(fZsD6RS0Sf+KgZlHO2qSlFOV?2X!)FJHds zP*70prxJhv{(V}q=LigG_Cp_RAxSG^9kNk&(Jj`m44WfvT)%O{feW3MoIL)GK(Knc zFg7(c<-Raf#?e$NuF#H#nV=SFp$ ze|cXc-9ok{(NXqh-S+l&`S#9^TU2p?zkd_!hK-F)2lEC6#nSS!E&RQ)v0>3)km4Jz zA1g!H+}gtDVJ6_xQsuKu@Q>FdS5$o8_V%3a!FE7eTG~pf%^1HUae({lkNEfR-&a`w z`uYfkIzdKTI$L@gtm?Taw(8g3#%RqglH1Fuqi@#4kE_Gs?8tVjMZQ?GyD_M9GK z<$Qm4&V-DS8lDyX2n$PsJn@|Q-Aiwq&{aC42GzXqO*(f}Vq`*sZqCp;GTg!9?3e=L zM_>BW8MPToFG|G&sAVS?A%G`lnB1GIi|2Q^ty)H$oSZCpQS0;NN#q@&XKHF{9cl6j zKPj$B)b%*VfBh<|d?^Tv{i9pyY_l=yd9bIUqN37hoPcrs)`N%r`Pl=b*qKR7xY_=J zBk2b$boUQO0-e*F%AJJ@hZzjFfXD7;H{9(*NnC8~s^{()gByh0p|TZPWG< zGBPq?PuT=)3o*+pD*>?l(pJUouzT$W#>N->iuqw`eF~wc@=>UEk%Qe|p8G2a6}EPE z0bxXmqz>obb$&$z22Xc=9UYye*0zwyNY$nJ!gfnO&wclZ3G<1GiQ}5Rh)Zgw6?Qqi zRT-e>9zT}gI-8M4M#sN-ftp&yVzgSwyf;U?*K&=v)|Z_8v5bs`AuO$NdwlD`?n-+X z%_kKY18IywO7<5{qfk=F(Ik0ieBbols&$GFw9iijJs({VC7=sfHZw3P_pY@rfMKr}Hf>Ew{lF zb3;2!E>KXs{_@=jSM#vuCBI3QLx0nBN75r0!Flrm9-6>>k4>f%rR`>P05c zO2ABuBTWUEn9{CZz52YYDn~@G4(oN9)5u=_@ne&*`FRV6`>oxXs%J#Dr;}cD8nxUv z&4s}BJx@wyfJRW?%uHrp+i95UX)or;kt3M>O@hd}p!?>ZBj~|mheG$^Z{NO2m1XzN zr4)27#aSUwo$1R@s<9Qgc5SS@Drc|$ij}=uzTUSZRc;%Wnu=aje}jlS5#PJbrdgbo zR%HebR3f3sSgcP7VzXNN0Izq-nJT13774I0jhU*s)L87LKne8{%i+e=ReRqJN1mQ? ziyQaub;_4vW;$F4BR&(~#qXJ_Z>*LoKISgc%HD7Z!CV6s%G z#$Xa;8f$Yd?wiF9b3N5fM7yarL(Fm`6GX$b-Z}By-Z?#eeND2<_mW>HBqaEn)_{#j zR4zBMJX@J;tuQegEVG-!%f<0yV3|JTow<1DLY8&~&!ESsR4a|ScJX-{n%SfwVa&FD zyiksS%kntAoSfXG?!a4#q}|mndE?2}7$*zj0KWg_%a?b$(&QI6zn)=VwRLcCprGiO zu`j=<nsz>(NP#>sLTahb}R@OXWklz#-#&4x30uK@9v!DK+AUmk8 zu0CIl+Y?@ulHl&;6t zL@jr#UT{#5;{icr-^O@xr0Uv{!-p$niQeAcDJRJ3Wuo{UW~+tV*3%D*p&hCqKE&OW zi@n6I9QUTcWo42xQzctEoQ7$w%f)+HLsk0u}R0L(QKmI?&eY~<0GFBwFQ}(nE^2|F*=tM zC4=edcBe!R%ATaj#fgRq?H@aK>;_y{wL4&*OP5DY2H9=IqbZEp&vtCe>CewEVRQnH zT3ag#2SZ(>qoYs643>U>+qo$lZJ%DINF2jA0>Ef&&ZnhWHsWBlv#3_6;oG*>?URQYYz4nFHD#tAsVp6FeX1gpD_YoR$6-B z2@uF`VY~2|Q{?0arfso&Q*0Y$QIN=MngiIY`vx!Q$R38!rh{4QuITFOQm(mFY3B?*umJBA~rr@v5}FHgD^1xm=`$( zC6nBcfy+LlSl)wv6;175zkcC3zEruc`4^nManrR* z=Kx?qJ@X(;S-aSx|Gfd*_1nlQRV~$DagvmfC?By9NofpalC0YN9pD#ns7EZVOUlF~ z-Ati3oJF-o2urFy$X>Ji9#$2vXE^xwGUqmCdnQe&vZ^Y3e@~s$bALA{SZH0%$^4^2 zV{dQoUc$ld6iM?s4|*WI`k=J5^l7sloscV6J9RH^@vmj2MV-4sN0+S;b(NEovnG|} zy{`L`xNaBW;O5RcvH31$7@{yutr8N@7QhF|Qqf5rw?^GpT00sV8dBIaiZ)^5-*&lPysz&8f06a+l8@w~Mq!)~+Rrv$eNe zT^ogh_yVhhLV@SVs+U^-T96msGN>_CJ`y@TJ^f%}9q`1Cn3&jy*98zlEJv&NT1NNR zOA;d4G#&4Xh>X&%!t{qnJa&k8B6scl&7W;HBDK;)n8#3#(;NoP%6=Fv5L1vX|Q$HKOkV`&)S;u+QJ>} z^3~6Z@hY!OyQ{ z2LVt7oeR-Opk9Zd=J0gAfF@8Piqp8QZKf+N=Jgn?S&sX9zj3XD|CbDaf(_{D0hxIB z<;Fc&zNMMb8qcDFVb~~4!#l=&2nL=lkR#q3x5btnAb`QlW!LM_kzFkIOv%+jki(eqP-_I5@ZuCQ&*N#0eg)UT8#ASsyrl>{v#d!+amd z%25t-a`Ns`zqB;tfVMaRH+m6|%I`lW7Z(q_@#cY-Ia8Bt-46Em8kC?-_g2CK?{jJi5gaN)#83J7EuW+)8R}-ungFS6Dn;r;*P?NWYBv}3z zU*A~L)6?UW&qKlzhRACMG2sP(s=c+fUR_n$-GOS1TYOsDlrgVB%|spk(R`kJ}k0<8|PMU&jv&Im*K%jE#zUErqwy$$|SexoOBnPIIL_@XM=X z#$hj2n0a`3)XJ(LXFrM9X-N<{_zF92ML%G@x4q_H{=*PmnKfbU4_GJTRowEm&CN~c zZbB<8-VF#dvQ~yMI=Q{fgrf4YvhJDvyxm)_!{rWBtQ%6&(x(-UXF_Saj1&l5_UH&C zh1Z^;X1%}CCa`E<0f=GH#mz0#_3H5Ou%=9caFs5k|NfyeJ9aez!gyn7()Q{M<@w8( zXXc-<&YIzqivWR1Vgm5;#-svF93c?{m+%W6r+~NDMI`ob1Dg4;vvk z-l+x`I6+RwpFC?*J{9lwDr^t{%#9|zCIo2*^f!MhNyw(X!}hXJUr#{@&O`nf$GfBw z{3w|^N5SWhu&89+Wnbg6=*v@Sdj5io#t^pBGy)H!QdZMEpHW;sP-2x!!yXeItwE%9 z8nW>%U`Q**O9W`vmcqE^Gj)is(){W5^}VheS= zbx*b?uQHZXR>Qnuz|0na%hwYO?$&7u38V4-g~m?w+-6D^&z~oj9cN-<+VkA&^}M0s z(+7Lz-~nK-;`q^{&dMU08h|OkZLiI>W*XPk)uq?l1JN*QkLlUg$`t-{SMQ9UdO8tX1WTABTv-2O087w&`9^U!Pj@-DgCGMFPE>#pthE-`r}* zdc)VQT~qFLgx4(0X>%&UlOAy84zbXvm7htEJ~TZmf5>(wJ0>GLCok`A_ZGWW=~Hz6 zPD8`vZeb|nd&R^S%BJWK28_xy_0jhtQr^5d+C3^SB_$Pwk2h<6?l935empmu2keU~ z^rkGoplN4vEnpVygl9<-4m?%V7cPvi03hY~S~ULy64o|3z2GL<#F9kPGXy8VOIk=s zNIQJ4)X2~(W1gxgC06{uz6WrG4 z`=^ZB<1v<<$x_*bx0kzefb#g*#F2UD&Yd>JG&$m4uIJty0#bn}VN-fIui|#vJd@@6 zb+K;EtwF0A(ZdoQq9X_th@5P}(Mc3?Z5ZV|F2#Km3wl!TH$-&3OJ zv%NlnjAS2bK|_Bm0<4ZKR4i6s>Y9rXigCaU<*?=aA9K}ODG;ub0RP9?K}c?+z3I9> zKa;f6N}5Y*NJm;zkYqxxCog&yF1?A zkZ))2&#ziO6bhn0?%V#FYt_QA)2NVTfMn3*)Knx(2^$k_)DJGxY)12y^>xdR9BqLW z=V4?gt*oq=%&S(HmX>s&DpTowM#pEHZ1!72TDqy*a=0A*v{*goP|W-HdO4#5U6X*B zpRYZnTdVpf!54{A&ea`1aU#<-BJ9wjN-303uV1}lJy_z|P{@YL)D$q&*!tqA$bLh} zwP1)*a(JcQSU$V9sfh_H=D}C5UJZ$f0Wb?oaliD+*VlIrex^(rZ`2msZwO`+NALXe zr5xmg;5k@B6YW_VE|aJDr2+w`1*KzKP|cA9^e@(vUg0tDR}%6mNlbh|MQz;jp+lYZ z=<(y_^L_dH-_NjDo-^IjkPTuG$=OzS25_(LF$%@>oE{&ADR?2N&R;P3aR~9YXc12j zUh|!{cp-r=%MVH6F)igb=*@mN;=w@(Pc|U0*-2_z76G7`L;! zfcZBWJa;*mSXeTLT3clgIwTn!RM&3-mKXz?EtU=S9wMG2fVsB-Ro(U;4b zC8gbcUfz;SaW+a2h<}X{ISjD08eCgP-#;a-4S=vDwDqT#8oR^f;x)zh_~6hpohhnDt~ zFqAiCN(&$PlCe20j>JU(OEC2D(TRkYM@|%@N2{xDJL{I)Luzvs1p)~-RSXf}OR8aS zs(b>y5Fmh~&2Fn;*pm|-z(jrA?nerv@rem_I>%?D=Ka5s~5A0So;H_ zjcMZn>^blfs0ZIO)k<$#(AXXyp+OR#PNn_UAm_Y!3L14nbb<^U9~DM+<^#1+B+ zo(CJAqncg&5u7Vm3X1vcCgkk5PjvOQ49uP;Csz$*5^`G5%2CUU-Lr(C44G{!w`zT$7?gv8fm!e$ ztx3*y!NQ8-J(>M6k$wGy34IwhvqpShu_pQen7lh}z_mwy`t(VoolOC+GusS>T`fTW zR`QGwKx2ipw8$v`>6u&OS4?Mx7Zjd22en+SGQEZVqTPP2a{G*Wo$+m*X6nC*_xtpt ztcmLp01F1=|0qTp2F1HfMm=JOjJg3dgtV%UdI(PEC(uVj-e)c@_yq)Lx&dpAY93>7 zo&Kl|ps6n|G*pr8#{@*oEDiju8Zds35dhUB&16wVU7I^Vx?fY24q zO}!9xGzDS9Nqxx~K3I$%M&j|$ckj+^fb$dpIMm5*zTY+QmR^YezOZoh1R&w&n(f)l zu))jb{ZH{xZy7{{A&u1&0DLkF2vpcZaoFGVf|0iih`!N>ua6%CusK|e9=um#HELN{ zPV2%31oR6K;*Pg}_$#*j@O>m|k;EW}(EDnrf7GXw2=D)$7SYN`xO~rne)b>2)PL(& z>AA=KNk|wHkzRoRAw&9~Jq$vB$FU!h?CrN|{0?CR95=9MHyqagtUB0kSli3CYI_*k zJhK$H>G<`#IU~V{xV_i=)y^d-2Xsmc~yq8;G%Jg!Y= z^sr@khe=pKN`F+Y&c4x3uJ@EJoi;frv*$vyinyI0bZKER?0WVa1kE++?;$$ewI*CN zs*?*Mn^WVtPh;GvMUSEc{&SAAo->`wM{Aeg1np4a2% z%r{rB@N=Skj&E)6AD(M=^qgOu29?Zf-4srHaG9ecIk}xZXe8_FY=FcV?3LziylrZ+I&DdVDF|aJCk9=I6nR z>q3reLekG9UG!5}^#@}TSoG1@ukLjlR^*QZ?tEMmzK95JTqoZ2NnEwwD-5~=D(M5o zllf#nX6Kl`rRXOnHN(xn$4ZFgXJ(j{{h>GvKKmK{iK(Y;^`XxBq8UEPNJLmQ1y!2j z5TZo#O#9&}6L?Pq5Yq1i-2r7LQR-^lz{^n)Nk7el^?yETyjsVT_p>S&+xD%o!w??8 z#r&r4_yyZ(Wywh7an~vIu6RuqR(;#?uKw2*sJemog*t-uj@Leetjl#*G>g=GK4yOU zJp4ZT7`$`d|Cr`nGc@|o{jLbkC&r)5gD=-5Dc9&8s(4{6bA!_qt`e1xqc$vuc1VYiz=WqHne+qvJ-8^v1`a6A-^-FS3B@da$Q%v=E{Jnxi zRNf+6W7R^|3o0cOgOmBZzi2PA?g!L!sd>pRZUrCbV@KAJVEu~b4XrEwVSB;|#`1MM z1FQyf60F_XV<|_Whrr7fRo8PhY4mVRLf1P@)+kbI9Ym1!Ij4C<|6xX$1s}R_z$>f{=es6M4OD1Ozl0IwF^XESofh6q(IM#WEXpcWE@K06 zuq|FE8H-hXVo{Bk{(M2x#e^5B`K!{E*oecjT&?SQx#a41!Ro&H#$GeajjA2344H}% zFJ-ulOZQD5e>soc>kC%=%5xsyV&tSGa$OwL5yg889OIRFZg%8vZfo~#q&7W0@O`xkQWhE#-V>3X`9c;vQNa4==LmVhC9y%^ULyc_u}Moy-@c<$ z`C(%sQdbAT!^J|g;$7!Jk=joa*~`Fyq?!n9nkFKG0toPg`m!d zZFQRB7j$DRwS!FGtE%IYQZIQ9bgo_}kRSZug|_F{#(Q2ld;Im%&o8eV5k)`e$O*D> zUW>Kw_jq}E_dqKdup4g($zNDlV9O%f0Z;T6QGTadV|aD5X9NLKqBmwUbJtIkk*(*i zyMpdJvO3e{i7+kMHL)MRs5hID#&gX09iwR|wHXtI0+_20=+5j^3}~E>BG@!}5Si!- zQT7~G#GJyK?1Z3kvkG<^( zC=7Mw-+6N*Y9^qQD>T3^xfbs6JI-I)?N-&j5lF*rHVhTmGOMm`sr8FpAR>F8lQAQ}wdf-PS_n`pHW7!43ko{(fWvEv4${qg{zV8r0iKH$3?diM zmR3JKE$uv~)51`E@gCWCB~WhHb(%>up&=&v{d?Q)WgRo|q{UIhp_9$YyWNez)S~)3&y@r|ChKbb$5H zb#-%NA4arD*4`uJg5P`gl|L~fMd;^i!GfLKtgJ1$sTkw}AarhLRjv1ET746fkihv= zSPT@+D1ivt>f=x*ca=z$%ePD4<7MUsYUpuqeB z%7=J}X7Wi>Pgy!bv?3|A;cko-6crCTw+TM52 z(9jqGp|`}?&@emzt5s_K(V*6c6h~r)E>)J1c{>|F0(@g5G-)-v4^_IXcqmpcfa(0m zP)wuo{d&trgoo{|-!TgdsLknyhlaFd20?-013Ph3Q`(j(F$LYJYGg)9&ic?ogM^vBA%1E4kcmm#DO z;0owjD0APkZPT=>!cUDJ?3bAF`~d}|*A$ALrBri^k;<(WoO0%SU`#^JUAc0_V)hga zidn6|pz)(=S8ALEwub#jJDt6Y3~1>{2r2pC2+j~N4mV@qo!Ov?QhWD=hc{B3+Otfo0~g#5<#f7b{O+!M_q$hM zgVN0_Kzf(5l+=I<^Q4K`)Fj=_7buZrU}zZSX*1?wA$&65D-h}n`L$_8;A6jpl*y04TUy^sJ2J!J@K0J`tGn!Xju zzCf6K{p+Y#pn4Gd5HvkRObEkntUmKm1LFqPZ<0_gE+Mgfdm}g?;7pgW+C|*tv1@X0eiGBoO8-B93RyoXO;gn62}pRE0v(u^&>%#4lflpq15CF7k)g z(7VDzECh>xA}lP-MvqzTXahwkCl&L1Z0u3k)R|MKG8_XTai&6;W@m<6)&`xEKk1s{ zeIU2<2M>CWou$2>mtu=<^Y=epTkbH2+e0abLWRD%wzlTrU}tA%I$VyoLiFdaeTaA~ z7tJNbof@-4g(n|B- zf!FPmxxh$lJ|Y(?YA(`-78Q5Uyp^AHA>n!)0+S~Xx}vVc%Jf%V?e*VAix_}zr731Ui#00hq;wg(4$ zqX$C0AbuQxo{?4YxSOyI&P4ij0imz*ffJ-e@QS6Oz=rl~M4+yPMHVjdz=(xX4bdXK@FXk>YZQynHDS|O5Vu3cJ2p9) zItmtrK|JuqQ6SaGN1Kt+AUC1+1>%&7PQ*it%BS}0S0y1**wU?tDm179@zhfs?B_>P zo?PrM9d2o9ac@?y1A$Ai`$IxPu7&|^prVpem|2z%q-4AwCpR>TY&@2gZIy*T@M2Tg zuN{U|l4n)3=V%T2FJSo+Y(*Wk1G_-O@kaUh?F?q>Y^g9Oh%r&cb~4^ zbX^{oT6y;x5ERbUE_*E*j~-N^is#1ZxR${4{!XpIn6uH5IISj>tmO7!4Ge5|LCl($?1I8iE^Xhh7kRXb0A%Ie&h6 z4fcLT7Ftxcj2SLnnufSI?>xa*$`ErAaWHUtoXzCS%uKha1#|%geE$5PJ7yY^Q0|B7 zV)vDzo=~I9NGUFdtBML>foAu9K!yz>XAs_@F28ZPw{hXo}6|;b6UgUv2F;u$ZU1g<*8A&5fjzL9`s~nw00yf8yUS z8TC+PGquxaXy$jOv>f*#XP{5il1>M{)po2t&_O5ab97b~Yd0ZrWMm|#3B90t3&B*z zkQHk|!8DE!w1W2A1ZY|Cm>9qP|@wzcKh7`_78 zowO9#Y06X)XxXY69Pj`Hq8P}*%EH2#5WGVr4JD058OT`IC!BkLwr@gwLI9dEoc|aR z>IsA$wbernAVuKTtl^#JNbuwdMr#os5o9t7ii*l(@erVttV)q~NJvsgK6ci?b-;>!*+%w0Z|mQ)2t5q@bWs4C+ev6$6k}lzUr2hqxz1Y5}+dHwNkK ziQ~dh#_Wy9($WR)l)RRGc^`Y21is|65{_tGnKRboq9H{T!Ml4>j~`?ItgoxE^$0uv zd42$NsW{6ZG-4PpIQ;hTZcKlc^hza1D=OLjy9Cr9{m=;I5e@Bvelc_`C|d|Fw#~)J z9{5~aT^t>?`uX`KZs!@FO88Fx){8ippGuaR%@Sl|4te*oxtxlDJL(0=I|vtB?ns>F zwfS9VnUj+<**}b6fla7;Q)7x3D_7*Y3ki0%w#zHa%SypoZvz4p**+SezditFS9#|a z(<5jVm0AnY2BW}_QBqPWTm3F8D--YOu@f89<0D&yHYRSLKA2xJG`ZI8Uibw5lmM`c ziA}e9*8q}`X@W5371;1)=tnTrxv*bP_&UkqHn7h~6Zr!?t z^keE6YHAx*!Ahx6DM3e^0y+WGc4oakb2}v!RZ6)}0aGoI-ab)y8Uwx;69_V_KN1a{ zUQ^J+E|Smlfe`#-IRLdI)AhpCciRSuu;uj)Gzf)`6W>E$?%sBL{@^T1c<;P!^;l zJdu{h$xbWW1_1>TBPOBMGQHkiTue-@Ei0SnX3KJjKXl+^7Rv+3nGl}j9r*Ldy15s3 zEDol{S*W6qH0rTNIzzvclcVfT09J5oJX8~MwHfA;C?bEtQ4`^1kjD>j7E>PHkJtR< z91ORlzEA?8vjf5@vjd+a$iNq&OT|N>7%CyeyXtu?hd!(f*|npEk@Eqz`OYD@yVje3 zeuaV1o2yE8?QRCTCku~3WZUS==4c}#eBQbPvMw%2#C_8mABB%-ZoV~I*Kt3PmQR73 zKCiN}(iUhJUef#uM`C#ofZRnMi$3cD=)M~u#6g$1;m*cl4HweB2C;8Ye~W*EMGTkg zrmYHT>e*f_QV0WPw;4*VF6cmCdp+^=5EzQ&zx(6U@0>_= zh~aFk$8+6g^wq)7Y;{(&!{0Ot)4!M<%1;zo0E+N%8pSvzLW_tU7+bzM^6>9dDF0ap8vb7=Uj9p-H8wweIJ#nPac}%DNeep9+;j0}a{hAU zEL^MUDwIhqPyFe$k67g96%^HVASc0yW~+?ru7)-tN#XHgo4tYA z%G%YuBP3pfJs>e+8|IiZJ>hf(khwe{`%SPjn->fG!{0}r%%96;Xzp{}`ynOS`*M3w z*?N7I#`Oj0)Iy*N_+tfaUNpA5gn#pfdzY}+6qHVP*fF5(5LMy94i}}KxR_pW)&4j6 zUb#3ulb6Mi7yF|;C+!LPxt>VTwf4dv(!6L@J^PbGoNitfm?^H?*Q6GBnc-)9$y; zoX*PJn9Is6{46$Ne=&=WshBFZ(Z*gDc-x1F*#Ut}b}B!bh7xFQ66`-#@bJIQK>l_7 z>c7Mo^>fd~yhv#smg_|nfZDu>sZOHJi@yS-Wu$L-@l7hdYz*h$r9hiU2<7*@7l0)y zN`mu!8fWqkIhOOlTN)p{U~jVM{6iM>vwwXeA;5y}u}x_0XQ{J17a|?NV+H3AyVhW- zpKG$EY+JvQrcgHy4j5#q)1eHBQyCcSo7sjt<*}LbSyo^#48mzd_r8~Sr4cDHd&exe zjASj1GDMAq=s4p|W#f)rqYe?6R|9J&nPr#5*~X?U&MSKfJ(`!I*!m{z_6mEyKOa;l zk|ALxin1>09deXy$KMl_{#cpf&dEEdIHDF94~eC`YX1Ja*9S$$6zgR9JK_c@;p_CM z-&Rv#k8qqt!|$;Z3sKjDXARkQ2$SLUO3{cTjXGW?AAnm?yCICMp8~4d*EQ&d;483G-`EL@nd#%nO=2YEOl^ z`Zq{qXn1Db>`lJ?C!RXQ-R%PCG2iR99(N~alj&imy`)l=9QYRsC7K3TNI&yb({Wz)haY$8_hmU2|qvtw!@_5GBY z$&?`>sAW}(naMsl6;BfF{Tj7AiYln@@E(%UC(oDG7B|=o6sbzF$;yJS6CJ`)%bD1$ ziy@>6cw42Uw3Kt1KNN8Bql4nOo3DZY`x7YQa5?rY%yG!T|FI7?d34jtA4?mGlUifd jM~>hBXTP|V56FM4yt{qW(jLSz5)vtKIk6nk=db=3SkazP literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..d131c32 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,33 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_tao_widget_configuration.xml b/app/src/main/res/layout/activity_tao_widget_configuration.xml new file mode 100644 index 0000000..b30dbfa --- /dev/null +++ b/app/src/main/res/layout/activity_tao_widget_configuration.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_line.xml b/app/src/main/res/layout/item_line.xml new file mode 100644 index 0000000..02cc747 --- /dev/null +++ b/app/src/main/res/layout/item_line.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_line_direction.xml b/app/src/main/res/layout/item_line_direction.xml new file mode 100644 index 0000000..41fc834 --- /dev/null +++ b/app/src/main/res/layout/item_line_direction.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_schedule.xml b/app/src/main/res/layout/item_schedule.xml new file mode 100644 index 0000000..ae3f7e4 --- /dev/null +++ b/app/src/main/res/layout/item_schedule.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_stop.xml b/app/src/main/res/layout/item_stop.xml new file mode 100644 index 0000000..ed8cf91 --- /dev/null +++ b/app/src/main/res/layout/item_stop.xml @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/widget_tao.xml b/app/src/main/res/layout/widget_tao.xml new file mode 100644 index 0000000..a12332e --- /dev/null +++ b/app/src/main/res/layout/widget_tao.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/window_stop_info.xml b/app/src/main/res/layout/window_stop_info.xml new file mode 100644 index 0000000..67f2a87 --- /dev/null +++ b/app/src/main/res/layout/window_stop_info.xml @@ -0,0 +1,23 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..2ecf790 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..318c4786654029248ca4bbf61cd084ce3b996505 GIT binary patch literal 3349 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5a1d9e73daac3eac9b49962d99876c356147ce88 GIT binary patch literal 2134 zcmV-c2&wmpP)picJQb}I$OG#;HAEc>ypfRWG3e2Ty|$kkyh58Bs?eIMg~n-2 zSGxeRIEeW^Iy8LYxic+MH;BXT8qF zFL{>2<_SLa2m53F{cObYU4eb?pvGxl}^-{d0>6u5k~~paWgO4nE+^QFh`&DVz9jPMK~ulmtej5;B|0 zHHJJPH`nHL;=Vj`k%j~S+^eV}dkcz5SlUH0C#8VQIAkW%4w}hV$$4Z#(m5u$#yvcP z4s>AyTlj!4_;k2V&`y^-R1>VuB7U2aC)tjIC^gZ^lI$$@A*(a4kZLz$-jTo;d^*ld9HxNCV+Vz~ zz_1GoL_kDpS4EuRuC-37-PxMVE0)HOUMV37=Zhr?Yz05?=`^kCOeAPW=G~!Tk=~ZY zO-M_!ZKo#j<$}{PK};a@@OjA#7HnN5z(kkx2w^mQP2x9}lq!rsV03!8D|!EU5@6Ug z2J)V2eIsV3no9kY>gGYQXUtLvq+Tu| z@#dS71h(!HK$r(a9xv$i+5FZP0z+1*+soBiH>42ol(<76aJ#;!&y-~yEd+d5#CDOZ zvv2=@2&9+voBeBd3xPq4Bf3f@P}h@KAkceSn76eGou}#$6nC~rDuIvxGLZ;FAvt{M zHVMzZPCm3#oZ;SP`V2bIg^g4KvZ#~)_Wb&XE*1hE6jNIV#hx}xC9wF!Ma%DUT4nxd zr!2s|a#7U^8>s~RBaaod_5J7-aXr^q7NtKfmB9MbS8b|Gdu0LciL2MO)JLeqG&(|c zKu<9@6&G?1-`{d1!es&(wge{c&nK7eJS2B$QC3hwE6b!OH!8S?XV8HzDpVT+8Lls6 z!&dL!PBD8i?0hLvf7qH`)2*iij?0OqCohqQm0WMGJaw7f3yIHVfX2`*WNmhM1|8_) zH*DbpzTng8sRc@jooC5_Md7o7*`}1}J!6?q@J_=WSBg2*_Sf&0v&IYQcQW0yB$$ic z64(^-KHv*Jotz!9VlHr-zO2XCS%bL+7|~-br<>EsaoCk|dK4`KqD?nEQc}YQe8HzH z<@E3kdr~RZmNr`fVIKG{-8us?=1Lf0r&V;X!Y2FNykEiYITGlIvk~r1NOHWnmuu*@ zQfH#!bA}9}+BBWn}rK-V1t!j^JG z_#tzvj@>)j-PrStUK|{@bpg&|Fku{x!g$)KFb^Quuw!v@mPw!kUBM1M#ycip>HWTQ zH~s{ScF%`IjM@ckPRVpO7f=pkbDl&u=ZSQ8bD^=lZ^&46iQ+O-Yjre&Yj1K<)@DeZ0_07Z1ewe}a}NX6+u4MgRZ+ M07*qoM6N<$g3TNiH~;_u literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..19e9409094bd85f4f3f20013ae244723eb52ae4c GIT binary patch literal 4742 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 UalF%z-T(jq07*qoM6N<$g4hr)g#Z8m literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..fcc6593b9eb2b15d101c44c533bbedcc9e5433ee GIT binary patch literal 7345 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml new file mode 100644 index 0000000..7365fcc --- /dev/null +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -0,0 +1,15 @@ + + + Boite à outils TAO + Direction : %s + Il manque une valeur + Ligne + Direction + Arret + Sauvegarder + Le logo de la ligne + Un widget pour savoir le temps restant avant un départ + Erreur + Quelque chose s\'est mal passé + %smn + \ No newline at end of file diff --git a/app/src/main/res/values-night/bools.xml b/app/src/main/res/values-night/bools.xml new file mode 100644 index 0000000..9cf91a4 --- /dev/null +++ b/app/src/main/res/values-night/bools.xml @@ -0,0 +1,5 @@ + + + false + true + \ No newline at end of file diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000..bf21992 --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,6 @@ + + + #99000000 + #000 + #fff + \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..5afeec7 --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,27 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml new file mode 100644 index 0000000..97531a2 --- /dev/null +++ b/app/src/main/res/values/attrs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/bools.xml b/app/src/main/res/values/bools.xml new file mode 100644 index 0000000..7040b9b --- /dev/null +++ b/app/src/main/res/values/bools.xml @@ -0,0 +1,5 @@ + + + true + false + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..0b4d4e3 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,18 @@ + + + #4baed5 + #16527c + + #26285b + #7c86b2 + + #e0217e + #a10058 + + #FF000000 + #FFFFFFFF + + #99ffffff + #fff + #000 + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..e2ee615 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,16 @@ + + + + + + + 2dp + 10dp + + + 200dp + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..370e989 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,25 @@ + + TAO ToolBox + + + Direction : %s + + + Missing value + Line + Direction + Stop + Save + + + + The logo of the line + A widget to know the remaining time + %02d:%02d + Error + Something went wrong + + %smn + + %s : %s + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..be79322 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,26 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/backup_descriptor.xml b/app/src/main/res/xml/backup_descriptor.xml new file mode 100644 index 0000000..93222bc --- /dev/null +++ b/app/src/main/res/xml/backup_descriptor.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/xml/widget_tao_info.xml b/app/src/main/res/xml/widget_tao_info.xml new file mode 100644 index 0000000..0af3988 --- /dev/null +++ b/app/src/main/res/xml/widget_tao_info.xml @@ -0,0 +1,14 @@ + + \ No newline at end of file diff --git a/app/src/test/java/fr/oupson/taotoolbox/ExampleUnitTest.kt b/app/src/test/java/fr/oupson/taotoolbox/ExampleUnitTest.kt new file mode 100644 index 0000000..4928ef2 --- /dev/null +++ b/app/src/test/java/fr/oupson/taotoolbox/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package fr.oupson.taotoolbox + +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/build.gradle b/build.gradle new file mode 100644 index 0000000..8dcfd25 --- /dev/null +++ b/build.gradle @@ -0,0 +1,27 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + ext.kotlin_version = "1.4.32" + ext.ktor_version = "1.5.3" + repositories { + google() + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:4.1.3' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} \ No newline at end of file diff --git a/common/.gitignore b/common/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/common/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/common/build.gradle b/common/build.gradle new file mode 100644 index 0000000..a13b163 --- /dev/null +++ b/common/build.gradle @@ -0,0 +1,49 @@ +plugins { + id 'com.android.library' + id 'kotlin-android' + id 'org.jetbrains.kotlin.plugin.serialization' version '1.4.30' +} + +android { + compileSdkVersion 30 + buildToolsVersion "29.0.3" + + defaultConfig { + minSdkVersion 21 + targetSdkVersion 30 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles "consumer-rules.pro" + } + + buildTypes { + release { + //minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.3.0' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.1.0" + + implementation "io.ktor:ktor-client-serialization:$ktor_version" + implementation "io.ktor:ktor-client-core:$ktor_version" + implementation "io.ktor:ktor-client-cio:$ktor_version" +} \ No newline at end of file diff --git a/common/consumer-rules.pro b/common/consumer-rules.pro new file mode 100644 index 0000000..a971d58 --- /dev/null +++ b/common/consumer-rules.pro @@ -0,0 +1,20 @@ + +-keepattributes *Annotation*, InnerClasses +-dontnote kotlinx.serialization.AnnotationsKt # core serialization annotations + +# kotlinx-serialization-json specific. Add this if you have java.lang.NoClassDefFoundError kotlinx.serialization.json.JsonObjectSerializer +-keepclassmembers class kotlinx.serialization.json.** { + *** Companion; +} +-keepclasseswithmembers class kotlinx.serialization.json.** { + kotlinx.serialization.KSerializer serializer(...); +} + +# Change here com.yourcompany.yourpackage +-keep,includedescriptorclasses class fr.oupson.common.**$$serializer { *; } # <-- change package name to your app's +-keepclassmembers class fr.oupson.common.** { # <-- change package name to your app's + *** Companion; +} +-keepclasseswithmembers class fr.oupson.common.** { # <-- change package name to your app's + kotlinx.serialization.KSerializer serializer(...); +} \ No newline at end of file diff --git a/common/proguard-rules.pro b/common/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /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/androidTest/java/fr/oupson/common/ExampleInstrumentedTest.kt b/common/src/androidTest/java/fr/oupson/common/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..336b149 --- /dev/null +++ b/common/src/androidTest/java/fr/oupson/common/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package fr.oupson.common + +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("fr.oupson.common.test", appContext.packageName) + } +} \ 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 0000000..8587731 --- /dev/null +++ b/common/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/common/src/main/java/fr/oupson/common/api/Line.kt b/common/src/main/java/fr/oupson/common/api/Line.kt new file mode 100644 index 0000000..0f4b06c --- /dev/null +++ b/common/src/main/java/fr/oupson/common/api/Line.kt @@ -0,0 +1,89 @@ +package fr.oupson.common.api + +import android.content.Context +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Rect +import androidx.core.content.res.ResourcesCompat +import fr.oupson.common.R +import kotlinx.serialization.Serializable + +@Serializable +data class LineColors( + val lineCode: String, + val background: String, + val text: String, + val commuteMode: String, + val lineOrder: Int, + val _id: String, + val lineShortCode: String +) { + companion object { + fun getLineBtm( + context: Context, + lineCode: String, + lineColor: Int, + textColor: Int, + width: Int = 24, + height: Int = 24 + ): Bitmap { + val res = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565) + val canvas = Canvas(res) + canvas.drawRect(0f, 0f, width.toFloat(), height.toFloat(), Paint().apply { + color = lineColor + }) + + val textPaint = Paint().apply { + typeface = ResourcesCompat.getFont(context, R.font.noto_sans_bold) + textAlign = Paint.Align.CENTER + color = textColor + } + + setTextSizeForWidth( + textPaint, + (4f * width.toFloat()) / 5, + (4f * height.toFloat()) / 5f, + lineCode + ) + + val rect = Rect() + canvas.getClipBounds(rect) + val cHeight: Int = rect.height() + + textPaint.getTextBounds(lineCode, 0, lineCode.length, rect) + val xPos = + width.toFloat() / 2f // cWidth / 2f - rect.width().toFloat() / 2f - rect.left.toFloat() + val yPos = cHeight / 2f + rect.height() / 2f - rect.bottom + + canvas.drawText(lineCode, xPos, yPos, textPaint) + + return res + } + + private fun setTextSizeForWidth( + paint: Paint, desiredWidth: Float, desiredHeight: Float, + text: String + ) { + + // Pick a reasonably large value for the test. Larger values produce + // more accurate results, but may cause problems with hardware + // acceleration. But there are workarounds for that, too; refer to + // http://stackoverflow.com/questions/6253528/font-size-too-large-to-fit-in-cache + val testTextSize = 48f + + // Get the bounds of the text, using our testTextSize. + paint.textSize = testTextSize + val bounds = Rect() + paint.getTextBounds(text, 0, text.length, bounds) + + // Calculate the desired size as a proportion of our testTextSize. + val desiredTextSize: Float = + (testTextSize * desiredWidth / bounds.width()).coerceAtMost(testTextSize * desiredHeight / bounds.height()) + + // Set the paint for that size. + paint.textSize = desiredTextSize - 1 + } + } +} + diff --git a/common/src/main/java/fr/oupson/common/api/Stop.kt b/common/src/main/java/fr/oupson/common/api/Stop.kt new file mode 100644 index 0000000..aef30b0 --- /dev/null +++ b/common/src/main/java/fr/oupson/common/api/Stop.kt @@ -0,0 +1,167 @@ +package fr.oupson.common.api + +import android.util.Log +import fr.oupson.common.BuildConfig +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import java.text.SimpleDateFormat +import java.util.* + +@Serializable +data class Stop( + val type: String, + val stopName: String, + val city: String, + val _id: String, + // LONG THEN LAT + val coord: FloatArray +) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as Stop + + if (stopName != other.stopName) return false + if (city != other.city) return false + if (_id != other._id) return false + if (!coord.contentEquals(other.coord)) return false + + return true + } + + override fun hashCode(): Int { + var result = stopName.hashCode() + result = 31 * result + city.hashCode() + result = 31 * result + _id.hashCode() + result = 31 * result + coord.contentHashCode() + return result + } +} + + +@Serializable +data class RealTimes( + val realTimes: Array, + val disruptions: String?, + val summaryMessage: String?, + val summaryStatus: String? +) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as RealTimes + + if (!realTimes.contentEquals(other.realTimes)) return false + if (disruptions != other.disruptions) return false + if (summaryMessage != other.summaryMessage) return false + if (summaryStatus != other.summaryStatus) return false + + return true + } + + override fun hashCode(): Int { + var result = realTimes.contentHashCode() + result = 31 * result + (disruptions?.hashCode() ?: 0) + result = 31 * result + (summaryMessage?.hashCode() ?: 0) + result = 31 * result + (summaryStatus?.hashCode() ?: 0) + return result + } + + fun timeRemaining(index: Int): Long? = + this.realTimes.getOrNull(index)?.nextAsDate?.let { + (it.time - Date().time) / (1000 * 60) + } + + fun timeRemainingAfter(index: Int): Long? = + this.realTimes.getOrNull(index)?.nextAfterAsDate?.let { + (it.time - Date().time) / (1000 * 60) + } + + fun timeRemainingThird(index: Int): Long? = + this.realTimes.getOrNull(index)?.nextThirdAsDate?.let { + (it.time - Date().time) / (1000 * 60) + } +} + +@Serializable +data class Departure( + val lineId: String, + val lineCode: String, + val routeId: String, + val lineColors: LineColors, + @Serializable(with = DateAsStringSerializer::class) + val nextAsDate: Date?, + @Serializable(with = DateAsStringSerializer::class) + val nextAfterAsDate: Date?, + @Serializable(with = DateAsStringSerializer::class) + val nextThirdAsDate: Date?, + val nextVehicleId: String?, + val nextAfterVehicleId: String?, + val nextThirdVehicleId: String?, + val lineDirectionName: String +) + +object DateAsStringSerializer : KSerializer { + private const val TAG = "DateAsStringSerializer" + override val descriptor: SerialDescriptor = + PrimitiveSerialDescriptor("GregorianCalendar", PrimitiveKind.STRING) + + override fun serialize(encoder: Encoder, value: Date) { + encoder.encodeString( + SimpleDateFormat( + "yyyy-MM-dd'T'HH:mm:ss.SSSX", + Locale.getDefault() + ).format(value) + ) + } + + override fun deserialize(decoder: Decoder): Date { + val string = decoder.decodeString() + if (BuildConfig.DEBUG) + Log.v(TAG, "Deserialize : $string") + return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { + SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.getDefault()).parse(string)!! + } else { // Z format is not supported :/ + val newDateStr = if (string.endsWith("Z")) { + string.substring(0, string.length - 1) + "+0000" // Little trick to get time in correct time zone + } else { + throw Exception("$string is not supported") // TODO ? + } + + if (BuildConfig.DEBUG) + Log.v(TAG, "New date str : $newDateStr") + + SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.getDefault()).parse(newDateStr)!! + } + } +} + + +@Serializable +data class Schedule( + val lineId: String, + val routeId: String, + val lineColors: LineColors, + val lineDirectionName: String, + @Serializable(with = DateAsStringSerializer::class) + val nextSchedule: Date?, + @Serializable(with = DateAsStringSerializer::class) + val nextScheduleAfter: Date? +) { + fun timeRemaining(): Long? = + nextSchedule?.let { + (it.time - Date().time) / (1000 * 60) + } + + fun timeRemainingAfter(): Long? = + nextScheduleAfter?.let { + (it.time - Date().time) / (1000 * 60) + } +} \ No newline at end of file diff --git a/common/src/main/java/fr/oupson/common/api/TaoRestApi.kt b/common/src/main/java/fr/oupson/common/api/TaoRestApi.kt new file mode 100644 index 0000000..75665bb --- /dev/null +++ b/common/src/main/java/fr/oupson/common/api/TaoRestApi.kt @@ -0,0 +1,73 @@ +package fr.oupson.common.api + +import io.ktor.client.* +import io.ktor.client.engine.cio.* +import io.ktor.client.features.json.* +import io.ktor.client.request.* +import io.ktor.client.request.forms.* +import io.ktor.http.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import kotlin.coroutines.CoroutineContext + +class TaoRestApi(private val httpClient: HttpClient) { + constructor() : this(HttpClient(CIO) { + install(JsonFeature) + }) + + var requestContext: CoroutineContext = Dispatchers.IO + + private var baseUrl = "https://navigorleans.c-t.io/api" + + suspend fun getNextDeparturesForLine( + stopId: String, + routeId: String, + limit: Int = 100 + ): RealTimes = withContext( + requestContext + ) { + httpClient.submitForm( + "$baseUrl/2.0/realtime/byStopAreaAndRoute", + Parameters.build { + append( + "stopAreaId", stopId + ) + append( + "routeId", routeId + ) + append("limit", "$limit") + }, + true + ) {} + } + + suspend fun getTaoLineJson( + clientLineVersion: Int, + clientStopVersion: Int, + clientLastUpdate: String? + ): String = withContext(requestContext) { + httpClient.submitForm( + "$baseUrl/2.0/version/withDate", + Parameters.build { + append("clientLineVersion", "$clientLineVersion") + append("clientStopVersion", "$clientStopVersion") + append("clientLastUpdate", clientLastUpdate ?: "1970-01-01T00:00:00.000Z") + }, + true + ) {} + } + + suspend fun getSchedule(stopId: String): Array = withContext(Dispatchers.IO) { + httpClient.submitForm("https://navigorleans.c-t.io/api/2.0/schedule", Parameters.build { + append( + "stopId", stopId + ) + }, true) {} + } + + suspend fun getTaoGeoJson( + lineId: String + ): String = withContext(requestContext) { + httpClient.get("$baseUrl/2.0/lines/$lineId/geojson") + } +} \ No newline at end of file diff --git a/common/src/main/java/fr/oupson/common/db/TaoDatabaseHelper.kt b/common/src/main/java/fr/oupson/common/db/TaoDatabaseHelper.kt new file mode 100644 index 0000000..1d85c56 --- /dev/null +++ b/common/src/main/java/fr/oupson/common/db/TaoDatabaseHelper.kt @@ -0,0 +1,333 @@ +package fr.oupson.common.db + +import android.content.ContentValues +import android.content.Context +import android.database.sqlite.SQLiteDatabase +import android.database.sqlite.SQLiteOpenHelper +import android.util.Log +import fr.oupson.common.api.TaoRestApi +import org.json.JSONObject + +class TaoDatabaseHelper( + context: Context, + private val taoRestApi: TaoRestApi = TaoRestApi() +) : + SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) { + class TaoDatabase { + object LineEntry { + const val TABLE_NAME = "LINE" + const val COLUMN_NAME_LINE_ID = "lineID" + const val COLUMN_NAME_LINE_NAME = "lineName" + const val COLUMN_NAME_LINE_CODE = "lineCode" + const val COLUMN_NAME_LINE_SHORT_CODE = "lineShortCode" + const val COLUMN_NAME_BACKGROUND_COLOR = "backgroundColor" + const val COLUMN_NAME_TEXT_COLOR = "textColor" + const val COLUMN_NAME_COMMUTE_MODE = "commuteMode" + const val COLUMN_NAME_LINE_ORDER = "lineOrder" + + const val SQL_CREATE_ENTRIES = + "CREATE TABLE $TABLE_NAME (" + + "$COLUMN_NAME_LINE_ID TEXT PRIMARY KEY," + + "$COLUMN_NAME_LINE_NAME TEXT," + + "$COLUMN_NAME_LINE_CODE TEXT," + + "$COLUMN_NAME_LINE_SHORT_CODE TEXT," + + "$COLUMN_NAME_BACKGROUND_COLOR TEXT," + + "$COLUMN_NAME_TEXT_COLOR TEXT," + + "$COLUMN_NAME_COMMUTE_MODE TEXT," + + "$COLUMN_NAME_LINE_ORDER INTEGER" + + ")" + const val SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS $TABLE_NAME" + } + + object StopEntry { + const val TABLE_NAME = "STOP" + const val COLUMN_NAME_STOP_ID = "stopID" + const val COLUMN_NAME_STOP_NAME = "stopName" + const val COLUMN_NAME_STOP_NAME_NORMALIZED = "stopNameNormalized" + const val COLUMN_NAME_CITY_NAME = "cityName" + const val COLUMN_NAME_COORD_LONG = "coordLong" + const val COLUMN_NAME_COORD_LAT = "coordLat" + + const val SQL_CREATE_ENTRIES = + "CREATE TABLE $TABLE_NAME(" + + "$COLUMN_NAME_STOP_ID TEXT PRIMARY KEY," + + "$COLUMN_NAME_STOP_NAME TEXT," + + "$COLUMN_NAME_STOP_NAME_NORMALIZED TEXT," + + "$COLUMN_NAME_CITY_NAME TEXT," + + "$COLUMN_NAME_COORD_LONG REAL," + + "$COLUMN_NAME_COORD_LAT REAL" + + ")" + + const val SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS $TABLE_NAME" + } + + object DirectionEntry { + const val TABLE_NAME = "DIRECTION" + const val COLUMN_NAME_ROUTE_ID = "routeID" + const val COLUMN_NAME_ROUTE_NAME = "routeName" + + const val SQL_CREATE_ENTRIES = "CREATE TABLE $TABLE_NAME(" + + "$COLUMN_NAME_ROUTE_ID TEXT PRIMARY KEY," + + "${LineEntry.COLUMN_NAME_LINE_ID} TEXT," + + "$COLUMN_NAME_ROUTE_NAME TEXT" + + ")" + + const val SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS $TABLE_NAME" + } + + object IsStopEntry { + const val TABLE_NAME = "IS_STOP" + const val COLUMN_NAME_STOP_INDEX = "stopIndex" + const val COLUMN_NAME_STOP_POINT_ID = "stopPointID" + + const val SQL_CREATE_ENTRIES = "CREATE TABLE $TABLE_NAME(" + + "${DirectionEntry.COLUMN_NAME_ROUTE_ID} TEXT," + + "${StopEntry.COLUMN_NAME_STOP_ID} TEXT," + + "$COLUMN_NAME_STOP_INDEX INTEGER," + + "$COLUMN_NAME_STOP_POINT_ID TEXT," + + "PRIMARY KEY(${DirectionEntry.COLUMN_NAME_ROUTE_ID}, ${StopEntry.COLUMN_NAME_STOP_ID}, ${IsStopEntry.COLUMN_NAME_STOP_INDEX})" + + ")" + + const val SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS $TABLE_NAME" + } + + object VersionEntry { + const val TABLE_NAME = "VERSION" + const val PRIMARY_KEY = "versionPrimaryKey" + const val COLUMN_NAME_STOP_VERSION = "stopVersion" + const val COLUMN_NAME_LINE_VERSION = "lineVersion" + const val COLUMN_NAME_LAST_UPDATE = "lastUpdate" + + const val SQL_CREATE_ENTRIES = "CREATE TABLE $TABLE_NAME(" + + "$PRIMARY_KEY INTEGER PRIMARY KEY," + + "$COLUMN_NAME_STOP_VERSION INTEGER," + + "$COLUMN_NAME_LINE_VERSION INTEGER," + + "$COLUMN_NAME_LAST_UPDATE TEXT" + + ")" + + const val SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS $TABLE_NAME" + } + + } + + override fun onCreate(db: SQLiteDatabase?) { + db?.execSQL(TaoDatabase.LineEntry.SQL_CREATE_ENTRIES) + db?.execSQL(TaoDatabase.StopEntry.SQL_CREATE_ENTRIES) + db?.execSQL(TaoDatabase.DirectionEntry.SQL_CREATE_ENTRIES) + db?.execSQL(TaoDatabase.IsStopEntry.SQL_CREATE_ENTRIES) + db?.execSQL(TaoDatabase.VersionEntry.SQL_CREATE_ENTRIES) + } + + suspend fun checkUpdate() { + val str = taoRestApi.getTaoLineJson(11, 11, null) + val json = JSONObject(str) + + val db = this.writableDatabase + + val cursor = db.rawQuery( + "SELECT ${TaoDatabase.VersionEntry.COLUMN_NAME_LINE_VERSION}, ${TaoDatabase.VersionEntry.COLUMN_NAME_STOP_VERSION}, ${TaoDatabase.VersionEntry.COLUMN_NAME_LAST_UPDATE} FROM ${TaoDatabase.VersionEntry.TABLE_NAME}", + null + ) + val updateVersion = cursor.moveToNext() + val updateDb = if (updateVersion) { + val currentDBLineVersion = cursor.getInt(0) + val currentDBStopVersion = cursor.getInt(1) + val currentDBLastUpdate = cursor.getString(2) + + val jsonLineVersion = json.getInt("actualLineVersion") + val jsonStopVersion = json.getInt("actualStopVersion") + val jsonLastUpdate = json.getString("lastUpdate") + + currentDBLineVersion != jsonLineVersion || currentDBStopVersion != jsonStopVersion || currentDBLastUpdate != jsonLastUpdate + } else { + true + } + + cursor.close() + + Log.d(TAG, "updating database : $updateDb") + + if (updateDb) { + db?.execSQL(TaoDatabase.LineEntry.SQL_DELETE_ENTRIES) + db?.execSQL(TaoDatabase.StopEntry.SQL_DELETE_ENTRIES) + db?.execSQL(TaoDatabase.DirectionEntry.SQL_DELETE_ENTRIES) + db?.execSQL(TaoDatabase.IsStopEntry.SQL_DELETE_ENTRIES) + + db?.execSQL(TaoDatabase.LineEntry.SQL_CREATE_ENTRIES) + db?.execSQL(TaoDatabase.StopEntry.SQL_CREATE_ENTRIES) + db?.execSQL(TaoDatabase.DirectionEntry.SQL_CREATE_ENTRIES) + db?.execSQL(TaoDatabase.IsStopEntry.SQL_CREATE_ENTRIES) + + val stops = json.getJSONArray("stops") + for (i in 0 until stops.length()) { + val stop = stops.getJSONObject(i) + val stopEntryValues = ContentValues().apply { + put(TaoDatabase.StopEntry.COLUMN_NAME_STOP_ID, stop.getString("_id")) + put(TaoDatabase.StopEntry.COLUMN_NAME_STOP_NAME, stop.getString("stopName")) + put( + TaoDatabase.StopEntry.COLUMN_NAME_STOP_NAME_NORMALIZED, + stop.getString("stopNameNormalized") + ) + put(TaoDatabase.StopEntry.COLUMN_NAME_CITY_NAME, stop.getString("city")) + val coordArray = stop.getJSONArray("coord") + put(TaoDatabase.StopEntry.COLUMN_NAME_COORD_LONG, coordArray.getDouble(0)) + put(TaoDatabase.StopEntry.COLUMN_NAME_COORD_LAT, coordArray.getDouble(1)) + } + + db?.insert(TaoDatabase.StopEntry.TABLE_NAME, null, stopEntryValues) + + val stopAreasOnLine = stop.getJSONArray("stopAreaOnLines") + for (stopAreaIndex in 0 until stopAreasOnLine.length()) { + val stopArea = stopAreasOnLine.getJSONObject(stopAreaIndex) + val isStopEntryValues = ContentValues().apply { + put( + TaoDatabase.DirectionEntry.COLUMN_NAME_ROUTE_ID, + stopArea.getString("routeId") + ) + put(TaoDatabase.StopEntry.COLUMN_NAME_STOP_ID, stopArea.getString("stopId")) + put( + TaoDatabase.IsStopEntry.COLUMN_NAME_STOP_INDEX, + stopArea.getString("stopIndex") + ) + put( + TaoDatabase.IsStopEntry.COLUMN_NAME_STOP_POINT_ID, + stopArea.getString("stopPointId") + ) + } + + db?.insert(TaoDatabase.IsStopEntry.TABLE_NAME, null, isStopEntryValues) + } + } + + val lines = json.getJSONArray("lines") + for (i in 0 until lines.length()) { + val line = lines.getJSONObject(i) + + val lineEntryValues = ContentValues().apply { + put(TaoDatabase.LineEntry.COLUMN_NAME_LINE_ID, line.getString("_id")) + put(TaoDatabase.LineEntry.COLUMN_NAME_LINE_NAME, line.getString("lineName")) + put(TaoDatabase.LineEntry.COLUMN_NAME_LINE_CODE, line.getString("lineCode")) + put( + TaoDatabase.LineEntry.COLUMN_NAME_LINE_SHORT_CODE, + line.getString("lineShortCode") + ) + + val lineColors = line.getJSONObject("lineColors") + put( + TaoDatabase.LineEntry.COLUMN_NAME_BACKGROUND_COLOR, + lineColors.getString("background") + ) + put(TaoDatabase.LineEntry.COLUMN_NAME_TEXT_COLOR, lineColors.getString("text")) + put( + TaoDatabase.LineEntry.COLUMN_NAME_COMMUTE_MODE, + lineColors.getString("commuteMode") + ) + put( + TaoDatabase.LineEntry.COLUMN_NAME_LINE_ORDER, + lineColors.getString("lineOrder") + ) + } + + db?.insert(TaoDatabase.LineEntry.TABLE_NAME, null, lineEntryValues) + + val directions = line.getJSONArray("lineDirections") + for (directionIndex in 0 until directions.length()) { + val direction = directions.getJSONObject(directionIndex) + + val directionEntryValues = ContentValues().apply { + put( + TaoDatabase.DirectionEntry.COLUMN_NAME_ROUTE_ID, + direction.getString("routeCode") + ) + put( + TaoDatabase.LineEntry.COLUMN_NAME_LINE_ID, + direction.getString("lineCode") + ) + put( + TaoDatabase.DirectionEntry.COLUMN_NAME_ROUTE_NAME, + direction.getString("routeName") + ) + } + db?.insert(TaoDatabase.DirectionEntry.TABLE_NAME, null, directionEntryValues) + } + } + + if (updateVersion) { + db?.update( + TaoDatabase.VersionEntry.TABLE_NAME, + ContentValues().apply { + put(TaoDatabase.VersionEntry.PRIMARY_KEY, 0) + put( + TaoDatabase.VersionEntry.COLUMN_NAME_LINE_VERSION, + json.getInt("actualLineVersion") + ) + put( + TaoDatabase.VersionEntry.COLUMN_NAME_STOP_VERSION, + json.getInt("actualStopVersion") + ) + put( + TaoDatabase.VersionEntry.COLUMN_NAME_LAST_UPDATE, + json.getString("lastUpdate") + ) + }, + "${TaoDatabase.VersionEntry.PRIMARY_KEY} = 0", + null + ) + } else { + db.insert(TaoDatabase.VersionEntry.TABLE_NAME, null, ContentValues().apply { + put(TaoDatabase.VersionEntry.PRIMARY_KEY, 0) + put( + TaoDatabase.VersionEntry.COLUMN_NAME_LINE_VERSION, + json.getInt("actualLineVersion") + ) + put( + TaoDatabase.VersionEntry.COLUMN_NAME_STOP_VERSION, + json.getInt("actualStopVersion") + ) + put( + TaoDatabase.VersionEntry.COLUMN_NAME_LAST_UPDATE, + json.getString("lastUpdate") + ) + }) + } + } + db.close() + } + + fun getRouteName(db: SQLiteDatabase, routeId: String): String? { + val cursor = db.rawQuery( + "SELECT ${TaoDatabase.DirectionEntry.COLUMN_NAME_ROUTE_NAME} FROM ${TaoDatabase.DirectionEntry.TABLE_NAME} WHERE ${TaoDatabase.DirectionEntry.COLUMN_NAME_ROUTE_ID} = ?", + arrayOf(routeId) + ) + + val res = if (cursor.moveToNext()) { + cursor.getString(0) + } else { + + null + } + + cursor.close() + + return res + } + + override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) { + db?.execSQL(TaoDatabase.LineEntry.SQL_DELETE_ENTRIES) + db?.execSQL(TaoDatabase.StopEntry.SQL_DELETE_ENTRIES) + db?.execSQL(TaoDatabase.DirectionEntry.SQL_DELETE_ENTRIES) + db?.execSQL(TaoDatabase.IsStopEntry.SQL_DELETE_ENTRIES) + db?.execSQL(TaoDatabase.VersionEntry.SQL_DELETE_ENTRIES) + onCreate(db) + } + + override fun onDowngrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) { + onUpgrade(db, oldVersion, newVersion) + } + + companion object { + const val DATABASE_VERSION = 3 + const val DATABASE_NAME = "TaoDb.sql" + private const val TAG = "TaoDatabaseHelper" + } +} \ No newline at end of file diff --git a/common/src/main/res/font/noto_sans_bold.ttf b/common/src/main/res/font/noto_sans_bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..54ad879b41b5db8b21dca1aa00a2d474697e7bf0 GIT binary patch literal 398652 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

<5G2M1WZP5 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 F{|7XC?P&l2 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..21b28f4 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Apr 01 20:55:44 CEST 2021 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..cccdd3d --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..f955316 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..2c3fc71 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,4 @@ +include ':wear_tao' +include ':common' +include ':app' +rootProject.name = "Tao Toolbox" \ No newline at end of file diff --git a/wear_tao/.gitignore b/wear_tao/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/wear_tao/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/wear_tao/build.gradle b/wear_tao/build.gradle new file mode 100644 index 0000000..3b420b3 --- /dev/null +++ b/wear_tao/build.gradle @@ -0,0 +1,51 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' +} + +android { + compileSdkVersion 30 + buildToolsVersion "29.0.3" + + defaultConfig { + applicationId "fr.oupson.wear_tao" + minSdkVersion 26 + targetSdkVersion 30 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.4.2' + implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.3.0' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + implementation 'androidx.wear:wear:1.1.0' + implementation "androidx.wear:wear-tiles:1.0.0-alpha01" + debugImplementation "androidx.wear:wear-tiles-renderer:1.0.0-alpha01" + + implementation project(":common") +} \ No newline at end of file diff --git a/wear_tao/proguard-rules.pro b/wear_tao/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/wear_tao/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/wear_tao/src/androidTest/java/fr/oupson/wear_tao/ExampleInstrumentedTest.kt b/wear_tao/src/androidTest/java/fr/oupson/wear_tao/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..ac9b0d5 --- /dev/null +++ b/wear_tao/src/androidTest/java/fr/oupson/wear_tao/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package fr.oupson.wear_tao + +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("fr.oupson.wear_tao", appContext.packageName) + } +} \ No newline at end of file diff --git a/wear_tao/src/main/AndroidManifest.xml b/wear_tao/src/main/AndroidManifest.xml new file mode 100644 index 0000000..9074d0e --- /dev/null +++ b/wear_tao/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wear_tao/src/main/java/fr/oupson/wear_tao/MainActivity.kt b/wear_tao/src/main/java/fr/oupson/wear_tao/MainActivity.kt new file mode 100644 index 0000000..3b34700 --- /dev/null +++ b/wear_tao/src/main/java/fr/oupson/wear_tao/MainActivity.kt @@ -0,0 +1,30 @@ +package fr.oupson.wear_tao + +import android.content.ComponentName +import android.os.Bundle +import android.widget.FrameLayout +import androidx.activity.ComponentActivity +import androidx.wear.tiles.manager.TileManager + +class MainActivity : ComponentActivity() { + + private lateinit var tileManager: TileManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + val rootLayout = findViewById(R.id.tile_container) + tileManager = TileManager( + context = this, + component = ComponentName(this, TaoTile::class.java), + parentView = rootLayout + ) + tileManager.create() + } + + override fun onDestroy() { + super.onDestroy() + tileManager.close() + } + +} \ No newline at end of file diff --git a/wear_tao/src/main/java/fr/oupson/wear_tao/TaoTile.kt b/wear_tao/src/main/java/fr/oupson/wear_tao/TaoTile.kt new file mode 100644 index 0000000..40e107f --- /dev/null +++ b/wear_tao/src/main/java/fr/oupson/wear_tao/TaoTile.kt @@ -0,0 +1,235 @@ +package fr.oupson.wear_tao + +import android.graphics.Color +import android.util.Log +import androidx.wear.tiles.TileProviderService +import androidx.wear.tiles.builders.* +import androidx.wear.tiles.builders.DimensionBuilders.* +import androidx.wear.tiles.builders.LayoutElementBuilders.* +import androidx.wear.tiles.readers.EventReaders +import androidx.wear.tiles.readers.RequestReaders +import com.google.common.util.concurrent.ListenableFuture +import fr.oupson.common.api.LineColors.Companion.getLineBtm +import fr.oupson.common.api.RealTimes +import fr.oupson.common.api.TaoRestApi +import fr.oupson.common.db.TaoDatabaseHelper +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.async +import kotlinx.coroutines.guava.future +import java.nio.ByteBuffer + +// TODO +class TaoTile : TileProviderService() { + companion object { + private const val TAG = "TaoTile" + private const val RESOURCE_VERSION = "1" + } + + private val serviceJob = Job() + private val serviceScope = CoroutineScope(Dispatchers.IO + serviceJob) + + private val taoRestApi : TaoRestApi by lazy { + TaoRestApi().apply { + this.requestContext = Dispatchers.IO + serviceJob + } + } + + override fun onTileRequest(requestParams: RequestReaders.TileRequest) = serviceScope.future { + val gascogne = async { + taoRestApi.getNextDeparturesForLine( + "a", + "route:OLS:1_R_388" + ) + } + + val coligny = async { + taoRestApi.getNextDeparturesForLine( + "b", + "route:OLS:1_R_388" + ) + + } + + val iut = async { + taoRestApi.getNextDeparturesForLine( + "c", + "route:OLS:1_A_419" + ) + + } + + TileBuilders.Tile.builder() + .setResourcesVersion(RESOURCE_VERSION) + .setTimeline( + TimelineBuilders.Timeline.builder().addTimelineEntry( + TimelineBuilders.TimelineEntry.builder().setLayout( + Layout.builder().setRoot( + + Box.builder() + .setWidth(expand()) + .setHeight(expand()) + .setModifiers( + ModifiersBuilders.Modifiers.builder() + .setClickable( + ModifiersBuilders.Clickable.builder() + .setId("reLoad") + .setOnClick(ActionBuilders.LoadAction.builder()) + ) + ) + .setVerticalAlignment(VALIGN_CENTER) + .addContent( + Column.builder() + .setWidth(expand()) + .setHeight(wrap()) + .setHorizontalAlignment(HALIGN_CENTER) + .addContent(generateLayout("a", gascogne.await())) + .addContent(generateLayout("b", coligny.await())) + .addContent(generateLayout("c", iut.await())) + .build() + ) + ) + ) + ) + ).build() + } + + private fun generateLayout(stopName: String, realTimes: RealTimes): LayoutElement = + Column.builder() + .setWidth(expand()) + .setHeight(wrap()).setModifiers( + ModifiersBuilders.Modifiers.builder() + .setPadding( + ModifiersBuilders.Padding.builder() + .setTop(dp(2f)) + .setBottom(dp(2f)) + .setStart(dp(2f)) + .setEnd(dp(2f)) + ) + ) + .addContent( + Text.builder().setText(stopName).setFontStyle(FontStyle.builder().setSize(sp(16f))) + .setLineHeight(sp(0f)) + .build() + ).also { + val r = realTimes.realTimes.getOrNull(0) + realTimes.realTimes.getOrNull(0)?.lineDirectionName?.let { dir -> + it.addContent( + line(dir) + + + ) + } + } + .addContent( + layout(realTimes) + ) + .build() + + private fun layout(realTimes: RealTimes): LayoutElement = Row.builder() + .setHeight(wrap()) + .addContent( + Text.builder() + .setText("${realTimes.timeRemaining(0) ?: "∅"}") + .setFontStyle(FontStyle.builder().setSize(sp(14f))) + ) + .addContent(Spacer.builder().setWidth(dp(16f))) + .addContent( + Text.builder() + .setText("${realTimes.timeRemainingAfter(0) ?: "∅"}") + .setFontStyle(FontStyle.builder().setSize(sp(14f))) + ) + .addContent(Spacer.builder().setWidth(dp(16f))) + .addContent( + Text.builder() + .setText("${realTimes.timeRemainingThird(0) ?: "∅"}") + .setFontStyle(FontStyle.builder().setSize(sp(14f))) + ) + .build() + + + private fun line2(dir: String): LayoutElement = Spannable.builder() + .addSpan( + SpanImage.builder() + .setHeight(dp(18f)) + .setWidth(dp(18f)) + .setResourceId("line1") + ).addSpan( + SpanText.builder().setText(dir) + .setFontStyle(FontStyle.builder().setSize(sp(16f))) + .build() + ) + .build() + + private fun line(dir: String): LayoutElement = Row.builder() + .setVerticalAlignment(VALIGN_CENTER) + .addContent( + Image.builder() + .setHeight(dp(18f)) + .setWidth(dp(18f)) + .setResourceId("line1") + ) + .addContent(Spacer.builder().setWidth(dp(2f))) + .addContent( + Text.builder().setText(dir) + .setFontStyle(FontStyle.builder().setSize(sp(16f))) + + .build() + ).build() + + override fun onTileAddEvent(requestParams: EventReaders.TileAddEvent) { + super.onTileAddEvent(requestParams) + Log.d(TAG, "onTileAddEvent") + } + + override fun onResourcesRequest(requestParams: RequestReaders.ResourcesRequest): ListenableFuture = + serviceScope.future { + val db = TaoDatabaseHelper(this@TaoTile).readableDatabase + val c = db.rawQuery( + "SELECT backgroundColor, textColor FROM LINE WHERE lineCode = ?", + arrayOf("1") + ) + c.moveToNext() + val bg = c.getString(0) + val tc = c.getString(1) + c.close() + + db.close() + + val btm = getLineBtm( + this@TaoTile, + "1", + Color.parseColor(bg), + Color.parseColor(tc), + width = 24, + height = 24 + ) + + val bitmapData = ByteBuffer.allocate(btm.byteCount).apply { + btm.copyPixelsToBuffer(this) + }.array() + + ResourceBuilders.Resources.builder() + .setVersion(RESOURCE_VERSION) + .addIdToImageMapping( + "line1", ResourceBuilders.ImageResource.builder() + .setInlineResource( + ResourceBuilders.InlineImageResource.builder() + .setData(bitmapData) + .setWidthPx(24) + .setHeightPx(24) + .setFormat(ResourceBuilders.IMAGE_FORMAT_RGB_565) + .build() + ) + .build() + ).build() + } + + + override fun onDestroy() { + super.onDestroy() + // Cleans up the coroutine + serviceJob.cancel() + } +} \ No newline at end of file diff --git a/wear_tao/src/main/res/drawable/ic_launcher_background.xml b/wear_tao/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/wear_tao/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wear_tao/src/main/res/drawable/ic_launcher_foreground.xml b/wear_tao/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/wear_tao/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/wear_tao/src/main/res/layout/activity_main.xml b/wear_tao/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..2ffc8db --- /dev/null +++ b/wear_tao/src/main/res/layout/activity_main.xml @@ -0,0 +1,6 @@ + + \ No newline at end of file diff --git a/wear_tao/src/main/res/mipmap-anydpi b/wear_tao/src/main/res/mipmap-anydpi new file mode 100644 index 0000000..e69de29 diff --git a/wear_tao/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/wear_tao/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/wear_tao/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/wear_tao/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/wear_tao/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/wear_tao/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/wear_tao/src/main/res/mipmap-hdpi/ic_launcher.png b/wear_tao/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a571e60098c92c2baca8a5df62f2929cbff01b52 GIT binary patch literal 3593 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 P00000NkvXXu0mjfP=x?Y literal 0 HcmV?d00001 diff --git a/wear_tao/src/main/res/mipmap-hdpi/ic_launcher_round.png b/wear_tao/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..61da551c5594a1f9d26193983d2cd69189014603 GIT binary patch literal 5339 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 literal 0 HcmV?d00001 diff --git a/wear_tao/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/wear_tao/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..b216f2d313cc673d8b8c4da591c174ebed52795c GIT binary patch literal 11873 zcmV-nE}qeeP)>j(mnvHsDN`- z)Hpc!RY~GsN8h7-e0h){1pPyutMv!xY8((UfI!|$uSc$h*USS<3D;)>jA&v@d9D7< zHT4Fjd$j16?%uwChG$oUbXRr5R1Xal{*3>Jzr)wyYfFQK2UQ7FC4)xfYKnLmrg}CT zknXNCFx_kFjC)(1$K4CqX>!La*yN7qWum)8&xqa=WfSER0aGsfzxV7lce(d?1>-gF zT6j&oHvWy`fRfqbDIfBK#+iKbXJl;cI`!U`>C-Z|ZJwUFC3f0BTOUu$+zK-?w}I2c zzrg0fKA2AaJ?-8WL7Gm4*T8GxHSyZ?Z`|7&Lw??be;eC?ZBfFcU=N%Wj6KBvZxnGY zW*HlYn%(vHHM_eZiRe8Mh?L<^HSumhuE(R}*~|XjpKX@0A;&bsKgTTHKNn@1?*FMI ziC%~AA@9X&;I$@Z1myD9r^@@g@42>+Hj%br8^zmsYn%e-Q zJ01asY3^x8Y3?9WsvAD%7~OWuCO_vGrn==C-gf&mAk`CW|2+V+?`;R8+vIh(-2}>= zUIVX%*Tie%-@w1c|4r5gk!Tx9TaD8^OlXWGW|a;qty1|t3YvTjXbn@{9SzdluNiU^ z!ztArCo!8S#{egkOmsn+hyeP9f?z06_+GpQUdx07sE`aesB*~9*{p4%w$iqfK44!8 zx@6^ymlHUykB{k(yz9H$@Q(YNJZRid*#?}2DRtuI2~Z)RxHe|9HgoMKeZf9q-;^Mg zAvod#XmH1E(8!GSL2i$a!N?3>9-M6U>6U8ZD-xi55?LlU+9$4W>w}EbJq8yy4$6lF zagKOwV4UiyM_@UH!0>}S;_kZa;@nfE0!YlwjYwaY?fU3w-iL$qnZ!)}#A7{Wd{oLq z9Gw0ct2>ZE+$|R0d_r(sA0CAfch(7>EJXweg?*xZBOuXODX-tVaV&}&Bjuwgt3!S^ zyzOpF2JWTUAm-#7|# z`yNb>^X^rtA>vKwyn8#kxj#Pszl~4MgXR5QS#vXYfKb`o-v`^DgwbbNu4D1fF4*v2 z5Sg%JU@pUT@V$5qycS+lLHd@3W9^c8=*iT0FZD|4&iEj1N&3F__74yKyMc6Q=hKKR z$AAAMpVmJF%jMw_*#9h+KFe|)Y{$+g;owgu-cE+=;Ct~JcrC^1TSOL)`I7WK56myD z?Odq>Yd(!MxVpO0pgUeEgVWcLPsL6O&#*La7?|cISZ3+|;Q8i!p>Z7KX9f6f5WwIcT{gIli9H^Jc;nVYHw=1SpQ z7lFssgJ0*VG=uy(1H>&jX6yg$47#zlJ~&4T=gRmUVS`&PV?_nyY>`k2P{sF+&IOs1 zepgq5)&=WH3bl*R)7IZ)QRxyI=d~uIkcu^ap zN`MroZ&;vr(*<;6Y-7lreO2M{5L@M}qJPWPMLh0N0;IrwBXiX68gXU8HfwS2Dr}{i z51I{9R_GRtdz1hvZr}KLNH56=dLNnJzhWTDGkaBuS&S>Grbh{o0``q}Wzn|DWDcv# z-Ia-4*G*UJ;#`*!AO-Imy0R-PK;!HpNBLSIZY8sdW|Un!l65_!uB(KiFeN~W**8|G z54v#<&%fI;;~QGhD34WY7W-5+xaGE8l5$ifKnmP9TwuJu3N+8#?87-N_q3i5ob@g{ z=@58wiwm5U09B5@@d34Nfjz^p{BlO8uZPm*N2~1c(`A;i0VI1*(V9sHAmT0=YhAe}LpS8KjTfWEvwOeZ#pNb=wC9g*co?D^%u3 z?j2;-$LZES9XwtIMH=}D8!CymJqe}Nb{-FpgQV{%N`8;e!NaWQkeizeS-IKp=d*Z0 z*THsRd$3)yv`5yyxj#GxA+P?1oZKARC+r*cQI_@y?As@tQ@d-sVAdZlCOFs5Wod=@ z%xhHIx^2=~pR%<;)9-G9lP@m8$DAxW;CJ3XhFSNvS6U0S`2O$kB&vH$Qx_Hth}coORr_6AxujsJMnz>RD@nll zJnIb|_y-@K!;HJzDjh%${~m;w*>7ndurJuBip(&vY7ysF@8WXk{inGz&belidG)f` z^FmcKxape2Quhi62n)}TJx>x@p|dZp(0jBh3qS)?S3}CXe?->jFA~dPpDKKbf&hdd zX$4tdC39YrTb-6+kBpCfbmQy{_|s6Oy&bu{)=I`_1i;g**P?(L&ugwM0HLem;lVy& zUld`DOSG^UXAj-CPaTGHFH=g-OxRcbt~vV%abM*L5L%o~{{_Pb7EogfEa~7^BtVlh zHo?6Q|D$cjwqqZ#FAB3rO6C|#U)2v;Zo#=1?#7t=>h3(QuEA~B6lsHJd92oszO!Bw zP-7P3MLyX=1{o)CXxdtO-7zF{`7wP1)ufC-m`KF`8~@&L@|wYEYeXm9OVc;wR1Y}# zEKZcRW83kXinPj(b4=Y>u+6PD)QZ|~AY%-^5JfZyY@ z;PdDdZIdK@o0qvm3R~qoy*wCm|ueH}s?oID#m1a>0T9L-7zgcs8c71)cM1bdal$rYTd~bX3S8@iZfsP_S{QnG z*)Pa~BBT^>#2 zAY?+KIEckR-!2*1bV|miOw$ZMg>zw8SZ12;Ph$ywKdCYb+m3x0o9?G@0O6eD+>Z`- zebCxew+)ShB&ic(rs^xr6V@8jGPh(=fMob;rSbsC=AXTg{3gB9f>Th5Z|;EgKYJ7l zATsCZeasTPvb%VWGp0;zm0(qxy{KBh2-_cLWc~sZ?goAus350!;UXb!qGGE2xxkZ` z{=XyED3SJ25l&yj4d03P0zXZ>`-pw5=o4sBwhs>EEWEQ52K;5S8<~&@AQk8S7z5QZ zy6${zTIN;^R&$Ih@GNEA0>Fhhd8{HUim%q%h-@J*xKe+>h?=jE(6`p^=@bJPhz_Bo@5Pw$X6Mu`BiRp=Vs11I+;(f>zz1B9!ne8IW23c8yJ zKZp3i_|wkxIpY2mg@ET{b`~7UhyaV2jW8)}HP|QafJ;x(1YHZq2FFO=0QHTu&+cqJ zSf8>{(rPphP`3>e`^Xz0{M{eVVg(IsNajW8xo0Ny+B=KWzFDCAhXtI=h_CR1vYofj zfzC-Q&^T^M^fQ(2sfB_eI`B9OOm2C|7oaHHEQtVO=Bb97w^=XaRL^(v1PC*YM;~7Z za$9I|#NpvJJ!mz&{7`Y3+_U$u;Kva6eDG+T;N+OR3*HKFXOG@LgIOt?zz~bRLdhkr0(BK)4P>voPD&ZRhsWmKdN;3kQEg()j<$ z3m_~$7h2cz^xaFCeSU2rcu=ONS5hlbQ2;%C{}M)Ba4rN7$|`;{y!a^0I^z50By6A% z8QgR&_cUJj!jh-0$M#V#9UxYT*lM(PTcew9neqS#|L@SVc)_>VV1{!nEebUEo9BZ^ z3% zE51hhef9?uNC(0AFi+4X!SjUh)v)hQi0szw!z&mSomf-}y3HYsrS^#9cjn^Aw&Cw^ossr>Jb~*@xHg zkiP%n@`hEC!vB#h{nq00VA&mT5W1 zC>fwu=9;z1bHhfQ z36vnnrYq0WK|j=1B;zm#Sdg%ZS|Y4yl(ndSLXr=txs0+vCR&Y@0H7{b-(wb5udDm$ zepBymeqUa<_25C_Ut*?5hlcVLBB*tFudt1(``Lt zqdY#eoohH0ndmU1f6Y<>VtIa@hJ8A=pPUwufdJ{>b}jQ83-RAyQk`?T)lX-C1e+_{ zDLgu%OF%!&mI1T|biH9cW&|WohA+o@jkO-hED&Kd(K)OM< z*@OCwz2p0o9xx^FfQ6y}!h;bqKRi)ReizW5pVjxV6BLMO6L^4I$GKgGD zKeay19R{7Zf6;NYjv=zZ77?pR1`q~IjT_e|Kerxrb#*ubBs7pN3ZQZ68zJ+}e{}0X zI=zNhAKubuY2H&vAGqsat&sTt2@zi7)yKEezxQK);SM|Q-Qjb=-<77!xBr9DaURrN z=||WxfV}g-Ves(kcX4@%5aC?ocZeAuSb#^|wWBOZ7(j~x>8AQ>^~iI}!NHDRWew1v zTdQGioIlJAT0`UoGtaNduVB>Le40gsg=1@@_QHY?f0%W_8)k(R*6dIprgeD=ns z1UyvHb{s^-xG%IoeUltPd&Bf?m`pX+?NVRT09q6WwHVS1GqI)`-jhbs6IunHlUQ69 zW{~1ci>->PB;-pn#HGG}4(K0T0CSG71_Sb}{>R)r9pu#ePjgOx%`2=!^QrnAo)6kb zEMfW?PZ)h_IcOZUfIhsASyFLDV3x%egHfGY0GdRm=UreX0ay3TBG5cz#p&$ALee_7 zC{IC5=dC#fTZ2i616apyfdL_oq770`i}Q)kwy46G_+S|UinJF4$hI&%3?K^8rNWko zKOd3&tsFJWAycFcp!3{V7a9jOB@NfYA z%m7-E2auHTZ~$3>X|M~md?J7Zz=ImV0~G2g7#@swC_qUBpm=YrWiA#T-58=+glI)R zh;WYagw|dM=G-K6{|#k;W1)(40I8@{Yhci>5yn9pXBPUF2SBvJ*H+PqD-9m?0}P-O zUIZX3!SGOkjuL>*@&H*%2ah;Fr+I*Upzj%L!SJBPLCcdLAnD;j8I%N&I6OpsW9?}{ zTEELH3b`+}_2YlVxv#I+rZK%ERZ4)wdw#-l>iR~=uZaF zUsi(Q>2t(_0JMMrw3-7*faT%g(c%FjF<0NS*2TjUR5CmiAOem}91oB%cre~Eh_VOE zfHx-s22`&c1XNYbKu zbY~b-6bBDl9JD;*011Hy-4zeenA03ULg1kQ5tn6l!4+na0KFhUl3JcZ0EIaUhKB>l zfdeQ(44_irp^A3^y=yCT^~s01=k8f}8b@a~_cf%Af5hEbb!Ng^_u4(%fj4pGbz`Ca zb!R$hMZv=ZH1{M2kWhFiK*tuqPv;mw0^z}UhX-hO0f3~12VE8gD1Ive$Vo6f2upr| z>?DRqmx#EoTVLjfYNhyXfgBemNS&$iI=hyx@99tu!2 z0q7zDD3JgpAv_eIM2FnI2@cR>_ssw5cWa}IbKX>~X+5FtE1w&y+ovU-4b$HEwB4_x z(|pVQOLs@!@P+|F_F(kaLZ(GvbZ8L_J7Nn9Pp^mXkJ^Fp5o=CIZ3^qy;yfKkEdk>b zocf7`Eu%6ygRAXFW1N;=~4GSXz zU`VhN3=DRFffrDYFfb%fgF>A06v}Hk3<~2kID9#bjdX|QiMzlw$^!;RtboChsFg4z ziq|R_5-l!g7#hPAi*kXXaV{`C-W_Z&@1*NQ!{S{zB@iXLGf+qp$^S=?8?Y^-q?x+>kuz;fKM73l{)%HwOloih)?&!PU*;_$LM?F(MP zyI|p&^q+PH$aU0c=q+d8CZx?B4@~@mOa$0t22PXmz%Kpl4u=&O*@JTrgwpVvi z*` zVQP?Psg`Fzk(P%OTAUeS-V~al7nT>YJo&6o5te6AIA?tZhp(WPXL-_ZU>fa7txwUG z#~Fsi6k&Oo^+An53v^`{U7a45;8vvN878tky!G+SL2IYsI|Ym9JJo4U=em}x?kj&V z-JJ&0Z8}&F979sRY)MmkSq~b=bt26(3u(+_cz7YTJca}&X=0v&>pVIqtYF4@FBo%{ z#6YF2^N7bhh0=5)y!U-hxG(4hEtV?gDVVAc40obdXJEu~sbZdj>pTWAj_~uPEigH0 zU5POdRRWEDK4Gax??23QnorQcmFG6~TGx{~crFMKl32TT`=)qvSr?5H3l1CHaFOUs z=*r@xdV{}R=!79S=&nQn34kXbK<5aYCl*K)Fc-H-C<5sGV!`lWpp4+;14sZoB7iP$ zg~`dJO{Kv@q?hQJgKbdrHa&}TTf1rPujz@b+?_ziTVVhXO<_&X1uCpx`Bf;mHrs3c>K8 z4C5SO0RnVU44|UmNpPgr2ix4mbtGn9U23&%+=kXZmr?Ls^vX0xXuJB|+iH_e{fmo> zC9O`E^_Q(U|8ociT(B1m55_wP(98>KIe<K8 zyE2S(5(B6xaERL?@aQHvaqB)ietJ|(t+_t6KCS9CEsNB>#FU;|A&%6}U46$p>S0|; zn!DTp!fbB%-)rbZQE;S$2ZbkuQGm|p0VEYXB7m&n$1o2LpbJX`!&3+#f$)d`x=H}L zL;xzn@*q6a`XoE$;yAUp8SH^`S>Dzse=LMs{IzPeCC^<+KpjC{*=^Tsd4Ay>ZouLs z_7PCeLjelm0kRSV4+V&r|8WGMxlw);AffP}#X)coAX?ij5FQFpJOZ?h0JJ_2pn~uu zIb~~;zuV1kVgi}N??}SlmX+?PmY4M@l#$ix(5xk{8MK(7F+wML*}LNQ$;$H^3lSom zENSa`bWbf30i-3R+Y(RJDL~;x03@KEXAl7h7YGMMuM`XqJu3(Sy2b!1;I=40NshUA zuUOALv)?x!N(1Lk<&}ArWQA~zpnlDk4Lgu$wQhlvR+ETc?f`LnXRA1fq^Rf7J-vul z5n?HZmH^AcXIt9A44`O#df1aJm4s+{@&P0O9tu#xat4r}2p|zWWRCix>pE%)o$SB& z!?|N~Sf9;lRTVircq>HD5mIST6OX{}rvB%=;C@$E7Rt)x@vY6cCWR9!>8?5gG>ZpF zhB8zNP=se5Kr&PkA~?7;K>-p74?Sp#0`v<^x$GwbhlfWmiLLqgjElrMV{_M-&81wd zPoaQXg)@JhYjtg|r+Lo$K34OKLnN=S{ig1W42~qb>R5i744#q0W!}Akg#Gf z5kN7k1j8c&=sE{bzXI^+lGkh6nmljYr;9XgVg#%`4M=r}1 zkB8(15MK&{lUiCCDg`LihXCYCwq3RHgM}T5@fP_~PB0#t)S_mL1;NbzXy1pHz zUSR+wvbcw2%jyTrb6ZW(wWO}AMT3s?elIx$&ZW6B+;nSFqgnkfXcoJ!pXf~&v{Kza z;VQK}0pi^mT7r_cC$N4Q0m51yErIY9256Z~m4pZm0yJ10ASvO&c*ii22gskE&e0e5 zx-KsN)cddnbhQ0`BhC?(O(^PY3Czfw(ex1H`*C zoVen)Cn!K+>k0uRZ6%=&0d;&N0VsAuK7fQ2gHeDk?}Wjzs|3S?GD=(lRw*1ndWlZB z-jkzo$_l=59djJ#hRsp)igaDYxw3jHwW&|VTS0pE+&eQAtNV=zMDhkGUrbcQA|aNa zViloTh?@u?A!Vo>K&$fsB(#!nusA>h;lX$(4g2t1lW)}Xf5EQ-vDI-Q$ZDy`{U zRiNuC$_iCwOW+M_HmunmeJoLLt%H`yCYPPT;{L8|$NL9m{@QP|bbs)Cc!EAl^7;X{ zJi#E`9`w%GfZkcAbBn<+XerDK^Mi>Yp3pC7G0_s}cb+Mj*HTUwIO!8W3d$hV7N$h4 zg`eXB>B(UFVRrPC45|oT_ViX8PQ)rli7DEVQ;Z}05a$LCS9ZhjcoH|pI&q3aEeE4` zrUXvL2`e}yiYaL&)xcyISbTj4%(@)|-CH1;^;^FgJWX%t6sxoc&-GLQ1-6ph+IVx0}#d4ytT60SqLNUXseVpoy10dE>E#`?l5p9Tov`5YR!ak`o(E0Usf z+D>B~)WVcsMOvJ)0|L@dXFFfq1E#+$zSF2(GXtCpHYbf0A?_(H9>NvPruEykRC|NSjnmJ?sGvT^&9F#0Ub`(~&A0uy7_!nhC*B6pY=>IqKKzrv!( zKp0Pc#zVlxg@=JtMWDQ3LL^g^7fhsD0~4dyz@+H4uq0s{I4AFcsj)sVDRwQ9H%y8{ z`Otf_P?M?F!Q=!^Q&5R0Uzn1_32T_wr5vG^gi|lBC-Q@-mzXYdns(VgPggcjO~1O4 z(=~kF0JBpzWxEh~ChxSr*P>^qK{yBXo7Km#qA8o3YKjO?zUoC5pf%$&v(}nwCR2~O z+%igDNn#=o!RJnoB(V>E=^8#u`(8tmo#AmOT4xs#H)cbNzz`)LH<9|mfojM6=h3rx5=kydl(Yu z40cy{!H{@oS_q~W>p*wYMZ){G;vMrX4)#lM;)KC65ym_ii;dZ~IE}%>XI#zLoK#n2 zcnWTH(A$A(aP)U;)UK6&pFMMuaWMC2@xPX zlMv74k)@JwFagMx0^}lbz^uow^I)ou0WSjJUXo?8`V2@yv7 zE$X$d_bqwuUcGvCjqcm0h3JsMr0YbfZgkO6UI6jyMEWGi#h3?cdC>9*g+~_wit(Z+ zf>D5Es3aUrEDzo_F(ko7VtD%IEfRjxII#fKJjX_mG1kJduF;f^c?&iN)fFvhmNYX{ zWgTeAI@FDHuy?nBiGSiG@MrN!3Q<`AgzA689W0VJ5r90X+Y(wy$N{v50c0mrB_UcK z5kLjuNhlf~+@8=&UQVksyEuSz?$u_t{+wP1=47%}>)g^@T3G^w z3!Agjx6zK>w;rc$f$*r- zRqd`)Q>7CNnCmLiLSb3PM0Hp?*^WWfvtGMq2HiGKzMw@c0lify)h%0I0O1O`;ol@X zi?$V142Id32%t!NnJNhp91bAY;>%EzoU+mS;Jy}#cf#tnX=sdNsM?}#4_edAjcuLE z81qPKiK?@;2;9hPOCaio`!g69bzV7QZJ(o-Z*YL{h*^44Rsm~N9sn7!`_AwfTxsih zcz|%B5CM{N>A7>pn+}Tx`Qn)2*s%{{TQ;V(KSy|q zT5QDCP(1ytl}f!D->NpM(-X~blcC*4ciS>03WHkymLYMsR$c(n?Cd79L{gMw;93u! zMTh_y@Bj%c21Cmu0*Kx8M?Oqgewu^7$3VI38q=62`rnvRmsLl#CypH*LvAcK3M*u z;3+CDs>ODRTNbcJy_*mGc8r?uxZ{0J{QLpq1hhaSGkkOS7|B4uH_?>#y`l&aPI74_ z8F&se9%hLrf)xTt0(f-U$zVDpvl^Q0o`XlM;7Mibd**!j#&y)mCI;V*EyC)wWMft9 zbB}kVwMI4A+C@|P39CV4qh6Tq;~=&etvR{RhN-75f_&c&j$H}taEDL4dy@tvNxqmC z18WLV3ELA05UwQ^0;m*ta65;@IG;$YlY?=NZoED8KW7KC{&IV(?m7NU^I<)vGH`m) zF{q*PEwegJ*%;OMQmu}p)~EsV@9ofJS8rGc7s=FdP`eJ(HtoH3;vNzs-KSr$c4Y){0F$KOY>eN6Od%>}g&Eh7L;yuQln4*HVcj^pPdW(>xw-@z%r@~_eU4i~k8RWL z_gFc0?>B~h%osT8w9lNoYR|@^fzs+o7aP@K*+ok_h;>!J!)%SWNVOW()9<`=sC)OV zQxp0evwW*VCJ#^Wz+-CJmxbgM2b45ljZNKIoPCjtgcP6zA9^Ms1xO4Y9qu6SPsG~f zlK1Bji$m{4*CFwh#_5I7Ywzs0UDuCKXlr5YLHc4KvN&}}A4y*sI4#*2)cKNQ9ii5! z8Z*^(Ss~QdG(IAqN-@{gn@F?854|RR<2-6>&z(PA(L8DS9w%6zSSEzShyX<_RIU+q zb*{Pi^MF*(Pqz2>!|c1i(62u-x?Qrc6a>pD3a|6n!Q@153Xpz`!zZ0+yIdUvCe|*8 z#5TD!K#t?S!vgD)d+nd|{yYDPS324b+uC$cx5?Ocww^;>l`3a(I%)#$RH%s@+&69twDR~x`*&V;!krzF3hsU|*4v!~_ zbI%zO@1A3EX-kgd_1(E+l2*frBoF$xzK?Q-!RH;p;NHy8uHez)y7+7{vt*hEiwK=g$s;azI!U@u7 z+_mkH9_B+9_I01K&3Mba(4l`UO&fmN>7{9eJ6K)Z3iGdTfk}V+!{pQen3}#BrrzBG z(=xXftEm~AVf>YKU>5HMrZJu{Cc+J7gnPr>3qCOX1WCmY*u3n&ZGM`b&rhM6PG;NG zruJXdxJ%oi%+mCs)`ql^S{u@4Y&+{ibJi!N#gP+8s%+W5KFdtLW_v-MDNJO7#4M8t zD5Abi^g55}ILpvV%fWPw&f3Ypb@Q8as@JyZvAy@rPSH4Eo}qcj;=b1L1^;QETKJUc zxz6cD&$Ul4e5!R~!GD^EE${ch*`klWX)~I*u;f=K0jie$!X<9PQpwA006m`<{e}F6La+= zCd8M<-#v%`fZtK;j*4l}+;#zxjj6@lrQXeft0k7uxxrm_q5=Z^mah{O(wnZ5c5%MLzTW;;&e^OY}{C ztn=uo)88w2r^)?25qlV}=l{KscK|wyNki?gG439O9Ob7R3OhtCXdyc=$QtU~O_t|@bak=wm@0{To0s)&_Zz1!!m}mZOs<$X= zET`&U*9Oz92!>_Pu;{solz-KYaP!x*ake?!GkD4CRh8LAD2}#rNlS*SKyLViG_!I( z1FgP^KFw-}(ir1Q^VGs4;=q_V1Jxr{Y@h7ZOUgLY>X6yAh(($%rQIVRuhH1JK0$?? zDVETM)0ZlvrEy$>Gl;7A<~rVKXEWL?rYzPOP*rZLr_Z&ew{A=BKHnDMjVTFVF^T05 zU+CA~s#slbJC%8kQg|J*jjotd*)yq{R%x`cJiWs(;{koDvs7e3|GgMLTcTSprt+cm z$Qu#|^U0zRF3Xu6(D^SzXUTeo>HfKDw`H-FhLu}LGujq%FRt(A!YEt+U=FLE5s9qV z>mp~3l~Dx;l{3-Ie?rVQH$N1%ki^ZM|53Ck`L%B0?e@o={qdjI3V%>D&t^oczm8Ow zejO?rJKz^}X-5yo|6PdRX6q_tv7?yoMmo8|?m|$Qq^Nyr%K6TK23~y>ycU&{~1j>eq z9Ks%pHs*?t6Gd*W_95ED&{lfYk0tA+@CF-c-D;(j`1uXsgS?!tf;aT*MYD)0Dcg)Gf>o-L(^(hCWMLVT>W-XzfyVgh> z71+re>L}QeGnM}kB`otCsaJmRKk4<_w^M8;WaOECJ*n=8y?`>B2}f;VMFhk6VTV}F z$RjM})O8LL!|{8oejqzB&>a}!wu!+hrd+eiD7$8DjL&U+!Je^Jzq?LEg${eYDq|QL z1cP#raZbKu;)z6ve3C72s_MjP6+JEle_rU`Wr}l{tcn7ljGAj_Hh>74myG*8M9H)! zZdZK%rT_66EW3W^I_aEy6;S&}VV#AW#L!?t-UrkQFq0@ZN>m`p17ur$|QOx<5RQ~W_&MB%xL7dV@g%DwdXyX%4G$lRh{;Nr9t zXkn+r-AhRXfMZ=raH6O6B{$vg@}Q5MZw1ULmMOu}q&QP(9qUcP#>2fRU)Clyw1paI z;b-gpL*S}U1qo6-M95i>4r_+5;u}{(sTRquUcNw&N4&nsjLd0-^euj30NJHNi65Wi1e>h&2Vob#rZ8%B4Aeqp*24#Hf89%mFnR07bX9*k5qv~pZ$~Bv&049y9 zecv-?UEvhXde2-OdzUO`Q9CXpD;ZJsGhCA7@GKov^@intitK?(UT5M)C#&{ryxeX4 zUG;gd!oiv*MQUV`S5H*aV2bpE0`mYTNN zgDMeX-veiiXwoY~UWG0`&aa&D|E-GUp$ED-C4N6t%df@k1u~1EZ5>R$gMg z=(pN3C{Ez2Z9sKMRA}7j43qs&>j$QdOw}T>g6pP_qZS_j(ZvAA_D>_BPOA--@uS~b z=pU(6nD!b3KEnK1rbu$nwI|EUJF@CDsQAj_?tYilT9AEOa6@dd`jp<>PH|)_{D1T1 z#xesVvv=9?oLBWj>48m)xM?dqR(Dq!X`gXApDjBv#MmW2zcy<%Mb@55tR%Se3Bge| zWcR855UnnG{zkp8tFQq%nxW~u`ww?(v{ft(z4*Iive7bUr*DSw|%YaE904Z zg{vWQQ+U$&HgW2LK2BY7H1;RccF z%W9%LoluENSHos%bNi&CP*L;$Of)~u>^PJkv62)NY(@PqL>F#&UHh)yiYL*2GKWlO zi#XLn8Jz{X@e_{OO*d|vkRTlj=vY!*MrfDMdw^E(d`W#?^tay?5$#7KQ4GXqAHJxD zkGGy^_mlEqFk+8n&P?>9@Auzddl11CrKDsPo&w zf5lM3T*L6I04aY%Fj6}Qq1@d3k+Rj5LwL(G=yHx1L)_3MHuYohe!n9O#fm1KPzL0c zP(R9Sn#H*vZTRySJ_6xPy$gcoXnQKCL!xctL0jfQFcr3c z&jo+~#;V}%_`1Ev&n6Kn*ni?)Ut~xUs+%t@m)1RFihj9Tg$?~3DzEos{O{RPZ%7C| zvnY!&hlyzTUewaT{-%q|-j_wJ7-bR!(|LB7$8T6$T{dj2k;%U?r-c%Pz_EK^Y<}Cp z#r@z~tFT>~FpH&c#UarjzyIuW-cwB(pVAB&Ryo)P4|V#p3GCRvE@P{mI@c9dp0A2f zu9f3>M0d1gKF`{Ef|L3p->P+SdH0sLQixnu?DWcSYT|dOG?p@tS3O=ILVFyU|4hE% zIdc2i;EP{l1|3Wkms>A_rXd6gk!%wqn|tFp*r2#5Bzkdbh3Zm=+J+mHdH7DKCwhiN zte__}3pWXjFOwOarn|7@%KWx_HB;}siOlK zR+XE$-me7BjT+tXWB#X?S ztn}K*Jab4!Fok!*gBuuWhy6fxvydq!Q*X#*?)FF5^_fqn_LgWt2D$9I`82goeu%fR z!TH0;Eb>%lXf_` zR$b6ml)W@-+X_AUEi~dIWL)sQ#GA+d=eE+5%o6?G)mXJAR%w%sTb}|t{|l6+9=^w~ zUJnu4inQ1qkn99qb6*ymN*S6=iw3*Y}^?WbKD_OG| z$U}o#TJq-T5oqv|w5|P5279l0{tDaAbIB(}#}dN8I7cAq7uMe==s2&tW#~n9-ZCC;pWNW|TxL(LE8LTc@mZqI*7oX+y_&V%h1c$=-sfXe#J!67BW5eU`y4&jAAMd5&L){8I49A(cAs9mNf{t|Aqj+^!f9Z7CX5G|@Hv z;WU8=na%*rCo@YEN9^*M5DUlO6T9EX{B8WbN-{0)gt&w3fuJ9Lw5Pyvn11FsuE+nU z+*5i8XhE3gPgoCdgL4|_u29lmsQechRfT!}}Y2jra)p)QFcRw;DZ^>vWZYnI1@1wjCI}G}uwScRd=*TQ-P=?$Rwwb1XprSCVL^0hk^hkHfJ0>D zQ0gjJgL=P|rLl;NbA#A(24TmNbTIKjY$S)qSS}-6}dcmw#4oQ|ptbv>Au9q5g zDFnzOXP0r07KBNB`U{BbVziFi*=#f+bu>3s?G)TU)r7SIH7*GnFvJsKn37mX_iJr{a48G=gc^#ZLRq2v zl~wTd_xzOf9JaQ=Xm7F!n-$ulkRi^#_|e0Ce4yO@Yg4qw?ILp4`kp;pnGXA&N4GaQ z(M285>ovF zJzq~ruP6+0RIUx^^(C9UpnhMC*@%%=;Ogf*lUY>(B|bMq)8oev4HHl%B*BhxpD`Xp zx~2hLH55uO=v713XC+hcS@B@p$|1j{3c*P^judPe4;GpdI&*svs?O5L3qCdkS>lcD z(;G`%_ck8zBv+#606~epIF+sO>#+`;x$12QoA`(`X<)|7HGw?^oiNBuprzob?<>iQ znh+Uv$ZU7I*0FCgUQkO0A2($QIrfb$M# zR@IX<1W~~X=O?#*OT(_Gf#Cggs%(~Zb(A;k){Q&*cPpN#RYR9e$r2l>pTM=0JsfNr zNG+W`qu4)pI3SCK$+VkjHI2EL>fxGJDopv6>dea=DLa6p_;<`ZB&laQQ`!<=3O_<( zQj0?;$>Tv}ek|E=;7c;4RYFIdPM81QN)5p0=IOfcXmsCd8hiJU^4K=X_?E3Av7pAne0?v_c67v2D~<5Kd}?Z1`066k_+- z4N+7Liguy53`HfvN0gSJYrZOVyuL))gEfz#H#(vBsM$|k0zr#}j00RKWO~s(hvM!; zH9z9x`#S`A=}C2b{K_1%hR(hu4Vm}y1=8N?J8Qio&e_+oOvTj-%RofhxM!s zGlkP=IUUnz1yZWi7YGpztUX4IrD|Bh3nROBb8S{5Y@2rr70a;=tD$ z@;Z^PFvVtS?akp(2jjH7-&;JK$)2)^M@S0DLl z=w`n;hbp=8BQl!%L`wZZXwNXdktbGKC~r!~>^rpv}IRweYExXtAchM>lx+nxaBwkWXA(U;~`Ou1@j8YMUPfHzD8`gp*Q`yepy^l z1U=YX4&hF5r1*xB7hBANP9V-20ADw-3nLx}C~2XLwCfmdJmzIVCNd!SKd;`h3)cT( zoxCLInUMKeUziLWt)|eSj}Vztp~4oyt^l~$5Ky{8)GVkbj0S>-SOH}kY7RL_z@&V3 zj6DtJ;D9#+V2))scw7uj8lgEw029y#*VI#j9>lZ;Ly@rm#o+p1BedEb^mQY1-7ARA zfcW51RSS4N2zI#|t~3`Q>lG!&0+Xa_pl6k&6Y-=){Qe>_XwOxziTDO24Jre;h{CtQ zLpdGNwKDf=x-xlFGz+Kli2&~vbs)9SVG+DbW#AvA;El9sqzJ}@3iI-zQliN3m>up{ zxv_Zs{BBN#ZKc0bX?e@^%A)if!BB-3gDcul0W>o36D-~sx1+;kk>VtvjMhu!;o~x& z(QY)T{NIM4Wizk~Gv1QJ;C?wVn9|Ok88`_4q~~}_>=R4uBY@UAP6hn}vxu*O<%K~T zowv(aAux%JAIwaiH%Kv@XKBFjXVa@8oLsm-668wy!MVgm4##`bhoG`2fEwx!U@wB1 zWKhmTLz-(wh4?V{=s4zb{~>fd(1VcbiPyr@FuzmRi$+kX6MpJ$ZnTv{HU~Z;q^UWg zu1-=@csP1IhR^Zb1&Np&7^sZwj0eaY3%cB<-iS(Y{@!G1Iz0q*pceUaF<*zYNVqH2yb#@SY4(TJ{3tg z&!a{!lI*p^IJ73X27ko2NEZRKn1y`6)6+2>!kF~~-_e$V!=3y&j_bBxzQf_+HrxmDBIAP{E+Xg{TWMTfYN_Q?@&+bYwcSWj473Y9Hhgp(DXpS$Fpev=QRPDyATA+Z8 zo-kT(r zjwl`?IM9jC5Z9hj9p^LI_IP6Cols~?Z~P#bpQWSr4&SzW1jM>w##sgTM`kuykUl>i zQtd`)^ECC^w)N@V;g1D%2w|$V8^@R^h`nVBA2NrAL@_6{0url*;=Dj+3n61(K@1s6 zwIQGH(mef)zgRIA8X$bwz9n2IZ2*Omz@xcELA+ z#*RBlpFQdJKW`)Lc#TDnMqLC#0^ARy%vMD#%>oTwAEM+Em423QI7{1w<}IIkTbGOf z3{x)f9W}S~buIjyvgJTtDSfkN<)abtJ2p}s_qXCz@kxi*rI#@W%VScVD1BFiuGV2u zvS2Dg_kdvLz!M?*i6~&jqEgeROjpa43$}-@_~7=6qY7e7ZD5%~O+ zGL|;n>BAQmQD^e4+rMov9YKN{@Hg)J`GtOWW2&tSR3Btp(G=wyGZdY_2SiH%0hlfn zH1wVQ^ijnX{9GgchYyx^RO(RV6h*CIZZFZ&G~F0KJVw8Btx~egXtkN&^aEu^)s^nB(z8O&=lk zA?I+{7{n-9X9Dt*A_gPekY(VMzn4umS2Cvo{yZQFGNm0;L$np2vMgMA6RI4bbJimv zm@ZXc=Z0j@5h6+X^%0LhL8Xn_|G`cgBRpHeAwH2-_lto~Hb4y=Irq02YuKE;(`+SK zCryo3!D9%Pj08K1@3+Bkp@MEyxgtgxK@vmiA!v{t1T$H+G9EmMYuH#~%~6F6&1*t@ z9Pt{;4>OGzq2;~tqUl|6`1w$J8i`?7CMm81hPJ3aO-*_d>Y?|IQKM7_27c9c(;ew; z4v>FiGy7=Z)54l_W@-f=hL_O*g7=A{d>%_3gBLXf`2`~a zLs0&QOf5Jux3(FuyYD&|2c`cMk~f~vf_D5t%p`aqe!A89%}?oa$n=2?0oUhx~bjsg`VO}G2FACuxVVfj$l3!l)w@&LFBTK5rNdoDlQc;Fi{BvKSl^bQZqqwWvr zUuA^5Plu@&mEqPa9}cIF#_jN{>zdCw3k&rYO#Wp-2LMGVo!{L^ee?Qk}IfM&H>n z>)zXizgwd04%7W3t{H%LbLeg-<=pwt?Mt5S3%?<$m6}dk;i5&^tVKhxo)XN?6yyZ^ zT+J4o>TXI%QfEblHX;ZmxLV@US4R{#dnEM#_=2J+u$E`D+&h;1K&zfcvpKWJ8`&Z-3#M%}S1FXZ78wxP#q?G{jAyIJ zJCpe<_`G5JzWRC%q-uE^vDu__Fl>80r3~Dit-6*T!*w7^B`b^`-%e$;`T?5GSgI@X zARyxlVBj;39Og3-TGBQMq~Pc-O_5d74@HP8XdYj-hiH>I!^Hm_UUnosKrhfY9#+1E zP1woPpDbCkcgBIwlvK-5?(2_}lNzEw$i6^Si4h-EMrDY>qtZjxtz-M}H|o2BsoG(4 zcXaIcxvNEE1;cCA`Qhe|Z&taQH`+4!NZxg|>3ls^TVTad{$+IERDbL@)sUT9PTqQL zfFPL#^IENm{+R9SFQb1vG}#*Nazr%yX;$`1!yi+wT{X zcN8VGJJt8@%UfL^UDX6ixgMND5~gIn_gocOO{9rfP5cZn*+^-(-E!v- zs_Lu$7zlPEin3y=A7|;KqAyb>yXSp{V z0(`|SZ5Id{t8V8^NtAzuOlKWMp+;k+I_+9Gfv$0D=t|@KecX$49_UMi_#(V({0~QU z@ufPiJyNx+EWw1P%0V?UA--(JuoQk0`JrvJC_?Iq7iGMb8s~$~DI7K5VdMvz^)Rz^ zVqH;k$mISv(6!mX;WM-Jr>4h~tG7!{AtdQUm>qTSV&a+8>l@@sA1Fqt zKBQ&y*L**fzM#Vh21NAlHwS%L*cp|+oWD4KG~tw9B>3{%W^MPvslj=7{=weC3&KL( zUDsKfuKcMPT$L38+2zg77Kf_{S1cUsS}S|C7U4|(N=dR(vbk(&k@t`zK>Up8@88uQ zT|XWeoSc>(xJVZ2@@@vW+4mXTIFdU1_Jb`qayPIN_oAD7_*}L^@cg1)_owT@-j^4I z+0YS)Gl95jV^q%duP>Qs8V)pWTHkFu@($8dKF$uY$SksL7oF?e8=P@^`7Ypi|CCP! zu0=?pF%p%MbR-urP(3kH-h25byJDtU7Qc0@l}ZCBZEzzKWe29_?GNo!p<7SHnj&g% zw;Zx}%@j7qS+Qb zNQ2d2uxsw~Z;7Dxb~?GSB>u_AW;Vj#&aI2C5toylWYAw7#^Jm^y3T)=#1o_^|KRkk zOx&q*6Ehs=UA$W8W9O#G(1?TIyvF{-D%g5t%zfPYnEj6{F80{y@R`eD`?71z(bO?| z-?*r2bdk0ZM|AU=cf3{bc`yaa5%xui+751TzwZE)6{(Dl_=O2uPr^#4sU`u-9mD)b2?jxVyVsk)p-j-5rV+cZc8GGY5%N`)qq>0%lm8H1uS zrdQ3<#fnm=+YqTy#qn+McW{6Nihq7Z%e?^;q5A?s$#eedqJriK_0fw%PWwIn2(QJCG|R zma%s1hZS$wg$RPFr;`@@oHqFnTgJs^f|N}7y)BROi2PG7Z`I^f3&-^cBK>#d0vX|3BeajwXf_ z)j5U~=eY+eVY^!~Xi7h8=*EXHwV9nP};_?~c{#{?CH^oz@I@oeyA*pCWq zw2e#6in8t6VUg~3Fa&usGc3uUi`HwI8+pFV13Xc|MXc`&C~b;JS1rj~QNxgMew1nB z4D7_d;*5Jbetta2!F8;T+(Ah#V>?ty2MFS6m6!<7mjssNi9{{Jd6I@mONNHezENXl zm{#X~@>eZ-wi)$l+aKLnZ2t9gmg+|&I7jf48W7C)9)&jHBVmI}LsCPnYKEx&wW^VE zk_3I6Gz;n!XV3;6E?$whGo9~QBJ*mamzN?lAAM2Z4##_ND)HcXvtF(%>8NKz?UEE7 z?rLi929wAH*}Huek?7#OH9uDR4r4^!8 z!+gxw8yooRJ9R2gT&#u1ip(KfX%ZPD1Itr{km7v6<~ij(mB;Bl>MGf)sg^~Y0&dEE z#jWUQy1G&(W2h^+1%V_jB8^WDOj>ccmDoPAwDo4W>ZW)X17o$#|!LpDQEjR{+@%F;CNwQpbc zB&8N0M*~3Y(j31o2D+X~GVwA~fpbLt){>Oy*EQ|ti6O=2AeMa0bkTZp=5}8qH9C+Q z)!f4wQMt#uQe08ZqjVMvz>g*=u!sV=m|~a>$aBCW%zE4~9)Vkv!7nZN>}OGF7M&&U z$9Ixf(P|^!>m1XHitm*4XvJ}eeQ`7@bP=-I+erOa?-J-(`Zm$} zF<@@r4$ienzdE>v(!MbukitTUz5knc2hpuUPVoh~^3=n&#$4MsQ>|%MXh%Wyw3;Lc;%mI@i9@)W#Xg-2d^JJUX z&~w&rf_aYhCEa*bztc-(zwJ3V?3Zdid|1Z^p{R#y0mB@CKH^fF0JdLmoAQ!CBD!aA zH(hG-<9ec^3IF^y>>_1~G;E-+nJ_m*CrhTt#>(o-<`u^eA;|X61@utYA?h#B8<`&9 zlOihJ2^g-wYZsEa3g!N2YrnuitM(`ixg2I^P2DLf^5|iizv$Ndw|5~I+5+os3<|WQ zNe`R0z-@R^Gpv|v8kDp{=x=PpkL+5!`Ip{bk#dPaVEL;dW&5qXS|7ZG*Zh}2%bO^sQ zRZp&#l~(^~BpJ^=RO5lj(Vs_7TB}3bJ}{CZatr-DylRxD)fKHJ*}4Y$@8uzmlTdSNLC-=#x*qinNNdsti|E&#<_>gdGl#&xN0zplKnw zc{7i+`iFZT@HicD(p39DwfCUBR%9fzNdNE&BEEMS-5-UA4vVkY zK8b37zeRds)B-+MadU0|0jB$KV1lk`XDa7dZYcpm%r4=?U?K``7nh!}!PiG*Dl}S1@NdjmWipaWmOme@#>Sqa> zU7c~ErR-P1Z_^JhP0W3JSpY4-V#yp;zVTmiSl|faj&}H;tS?d((}FQ+=wzv}{tTo~ zSB@lFKq)|wC+#;&@HJ$`?)Wnk;~;gax{mFb%n8?lxcUD)j&Mg-E5XXH!BSd8e!WDn zRVvQZ_B(VxbNp^And`q1mup(`;z`zVtlpmYvPp%I@`{uYGwJ&v2v3MCC=Se`n2DN* z=F=rA@$IJLJtn^aqADzbm+5v*pT%TYiU7(2eU&3^G_pt`^)j$_GsaUlAHP@ok4c0S z4j4Tz+VcwVA%HES+4{n@USMIhH7XMB316QN8I3_)jbmt(^cAD34uk>VjP3WBEa2%T5 z?e9T7(kD6id^PQe`Vwc8v-d_83T?Ebb0P6OE_p43-*cEc)U|!Ci6Jy-lH-dV5mpRS z;JH1zTW>Q32jb&{`XG0CTTicx0NcQK=>U;^K9CS=QsVcujRm0U_;VWtV(sC+*(5p- z_BHjg2L$M%nt%(4>r;C}7^Vn1fr4%v`BM@;n&3TgCQySCP`X|z>FX;H)vH2R_WPX{ zz+or$2Q}q62=ZbZ5>p)J+V6bXRDmYRi;iO<>DC)f=-DtvFI{(X;CA-TJoKon7MDn) zHGDYZGq#X-8J#32uaN?fMh?b<6J*3HIkb{ z!q>07-hB&0EF`ZFU&K4g=Ti(~4w)=IjksgKvRFFjRph))2}uY^3`q*9I|@j3%19UJ zi`y8!_<_t{+0z$Snh!C}Z4V=j{eUp|yO0_oKJl%vgG5z?EotRu-$%uzt9v%iiISs$ z%fS*sEj$p7d-EVzQ@UWCc^iWwkQ~x!9{XkY`Tu&-xT|lt`FHHZfO67xd=Szap|3U92aA!?O1 zheL&W8p?FKNvPt*EV- zty)SrPzD8-1<(p*Zck)|O7$wXrB~>8Z&8V|lEaYOSVlF#K`>cm6m~n30zXefVzM2V;gS5NNcITZli$)d{hZ z$u*se_D@8bWq#j5)Rm%qLe+MoaQUeDG^+lj=a`Z!j5vhLHk>Ipj|%CHxM}Q!t=`6% z5J%#^e+C9N6c)i}655NIiKfND`I}f$3xAF8USJfVFP7vVa%|eW?8BYQKFiJc)(_+Dd_GUGu1kc?Sw?w4 zte+9lcOQw`0C`bE1Xk*z36A7i|In_Z$4yQ1p9 zXIkrsPieLFTyy+rrZocx7%OM!g(sDZnsUHWD~r41(iI;^sBc88loByuk3@=S+&gzm zzG~*qH%60Hc+wdvNW9um7M6@NORc6DdzQV0!1I@SOei|YB35Rx{M9s=MC3HB`2&g_ zW=(KtatzVmP=Dp|r>(1X-T`ewl3HbE>2FV)s6OU0>%SoybQqI=WGlOAn)Jdh+h+e} z*iMnlg=R5Zy(a{8%tVm!cM|=KI_M3IrqJx4H$1PP4-*DXNg)VOht<7&ck6;0$JX=juH0!J$fGM`N)ijC;R(Z?3t%tvk<5f1l_Hx z+%aFtq-B`n&ZG_dB+By2)C73oGKsFSY>$;4UZ2dFjIVF=71H)VOQUYB*i3KI3$i&pNg|u#aTrTTm@L z1+3toJ-o7oq;h%>I(*L>^RYqP%|OiGAh+*+;(fe?H zJy0=(cL~&mOmaQ5N&C=kU&8D|-D9wF1*kLaK$g0;R}+@+G_v(U8;Pxlwm2aR+9C)x zm^Ay8q2u)3-E+{^*JQdR63{2lWpRW2AdP@7Msf&^&7BTDBGi|6WR>T6+Jca)w$FaZ z-iO&`R)@<|7anx2$tEW!8fN{r`W2Nn_IuzCWC{~LeHJ8|W(EVEm(D(~RXyqusl&*# zC)A(G&I|7ZM*oatC1+X|l15Qb61IUw{x)1opM9lxmT$T16>cf|j@@zE9Ze{y?}!7O z#SF0FI=*y29>u*%L8dMm%pdJ^Foat#jnhdjzooCGK#xwb=x&4ZF=#Tor`qLb*Z1Ow zo{~>;Ku#&NRa{@@^g3~!M6auYOT2e*|Irx&W5)YM{N_b+1igeVA`3IRRo9lVzX;h%`N94c2r_U10SXKEC^2_G3AKv)G{udqY~DTUCV!wU*5NmISYb z0S2_=#5n0cZ4=8>yKD>6#~N|5GXtCmM?$(s!Gn&}XqJ~{oJNdt0Ljmf3i2Pb>0s!X zsyIXQhg{JdTuYjY8~ZF;PybYS-Prtl61p(Y#=mMR)!BdpI1rWfOob zT~&5Eck1aXD}_AcB3_g@bWh9a@PS5sB<6bH=`CNzF~-kDDK2(;sM}Jz<2NQMgiwL* z<9`hdC_o$HSpX$dy55hz)UQ<`x*xzK>08M6_I6@VR??%sW45*wR_eg6Ne$`mk?X<- zFEwI7U!X6QGR&eL=GOzvGP(}L z|8Ruo|C!D$+MHdVroGT(8_ozbCr}y3?^mu2e#ZX!JPtK+`?+zps*rl|mwfCy-sjq{ ze2!D8ytcauy1>x8LmY=Ei?^$xA*mCFzZ&|$4t*Sy2J@@@{fU!65nP5L&*>LQR982N zXN2d)l>QBTtQlCJDz`W{LQH{YOhMZ#O}fn2mzBL?kc9fbk^SLymYyqQ9fd8?JhXq@ zpFJ>a&=}rvu){j>^seKL0ZIfH-j7SSXDOz2ZafXvQV>mfI;ac&Bs^Co?pO*;j<1`+ z_LI43#ida`P8=8isC!@B7L-m9#3a?(t<%Tl{PsOLEDZf0_z9oSaPmXnT{EF`dysL1 zQ$Zjlve}vA5r*ZBkvafbA=ZrH4`(}cC9zkwgJS0~0g3mP$?=+uD%N~w5u4%@raSvH zq3gQs|LDF9p=|67qD1d3N{kmj1ibP8SI;dK*;e!?eD}ASrSGEIl^s+?fSP>y-(jq& zomz1OD)ebvnRDUAN>#neL!G;4gHE|_;Zv35igN z19B?4=HLC@ubJK;Y811$q~D80>Knz|K<|3`OR0)&QNRql(f9$5)M>IhEx?a3!}nV< z8mU7lL+K2b)0_u$!>y~HnxoUtz!=C!ou3SmG`W=v(4cl$)-i-gi1O0ja9 zo6iixEu8IqUtbJkC3>+91;;L(2BcGm^YuL=_eYouo-gxrV>UyAwdBnAG}B&1734l$ zj(WsYD1Vg92SW2!Yrlsvc2|F>0s{b@_GX0-a2oF*zb1CNL@|2%O(A5aIu<)yYMpSqM#GIzb_SwrnvR zuSMKg`ABd;y2XMkIZ8v$9d9SA33qVrUaSYMWPW(Ulb*0naHX_6;pUh<=U_E@@M|j_ zQITFFy8hQxBzOfBO?iyH1U57fudPACUln(ujfFGsPN_}O205}b@%q|CLNGmE+5YGW zSHDW=v zt5_0tgTUHT1BC_#zsyOTtlKS;8y`L!jcx8l9$>(e#7EDiv0BAPE?o-VlrYQF^Ju2|jij})B5B*~ePB&; z54u5O;J}mzVfb&DaQrH{V4S6ER3_rG8QRB_v{whTo@Y+u5lBXbQP{wBqW5>5&z4`E zaBZdEXc`G*ks@c{KN+>M% zl+68+IY>@AQxhY>l#aGn7SIv}MNP)48|=;De8Hi!T*uAg;~gN!$VxJfU$Yf9)i(m2 zFM{8ZyX3!ifRl$JB=K{?N5*9fJm_O*klY7~B_`*L)FS-8=Fj|J!Nqh9(Nh=6(L^9m ze2a8J(V45Jvo7)Nv`&6ZpDMN{BpP~PA*c>EC&btNe*9SHe23}wcY-R=e)x1^u_(uz zsp+iL%|Zy|y`ilEtii=5pUV<~&nReCSS7GXFnsO87$O}99#7A;Z|MCp%@8wCqu=ot zrxhRNXukfpkmq$R)~`e*_pfjxlvR8SY=}AnOBCY9Y%JT!MxilQ2RLB3F;?ihM4;Q! z6LG<=;@hcjISBJ{o^9euKuC2wFk{Cy+T&33$Boupg%sqEc80ve2n0KAKBZWftft2w z2;P<~>e&l}YBJHF8qbQ#EQC+s6NWt56@nz~KK`C$l6SNDF zo7M%P>+w#o>*cy}rjNpZZ7zXz>T!L0S{gL{65bsn(ieu*QXp}KA3R2|L6%ER`!wi8 zLfT|%eawyrrMuKI)pKQ%1m!SvL@aMEr-YqUI7Q^^@q-yY5+w=fX0o-6^^!m1?fRCp zKxS?W1#8_c@xQ7^1kgTfn{Lw6xJA_=|BdV3pnhU*H~lRiCO?V2y~##RZW-!N6}Oaw z-ipXIyGl#*EL0Q!2BS6YBZ=$r*AJ&)o8W{dL#act4l1EL4ggTC25m79aMDu z6>d1CchA|i9IiW7gI1!L_X;-*ujM7JDe>v0AWPXTexJgMv-VOC<7kno=;jC3bjz?~ zOr8|@9t4Y)QgaoN>6EBsIh{<9TlWAoW0>HFML>uPVHcSvD0Y`A{}TO0m6phk;toA7r;<(k&G+hcSZ01(~pv zI0y{|x!xf~Hi_nc%wQJDFJd2tP`N+Q#j5Dfyct8?i+LD4n6d2&4i$GMh@d{&ISH9M zNkjFC;rf8KQKj>|V-F8=TyKYQSe;(xf*iL6D7Ig2*xOz#DDNx$2`MZC6bw59J4Z-R z?=2EwA(LvZo!vNrM0eV3hys$G^jT~f)I0hDwvn41FA%rloty1->~1E@G}esSWZlMW$BQ{H?03Lg3g&cKB8D=AEWi zQW71pnIs5>6pM2#CTD6fp9J@_WGKZ2BUs3pQ3&=0P+w{QpX;K-JchE-`qbSo>F*J* z5NYPerqO-!iUI2YFbfK7&}fGi%=PFn zbCt58p^})8o5FZT?Se@#{}Y{N#G^KdBMnUwXi@<4Zs~yXZ)0YIK`4r$?*Xp*s59ad zL}rQPJ8h6Zy4}BXE4&d@O9XFhKQ18{Y9bxcPi6eXxA|`#-)FLTuOY!`6pZThSrVUK z{Y7>^2HlVw=6(FgAS6Nj6GOX#3nx$JG{u-rE|d*ghQ$qIUzY6ArDyniO3au)MRFc3SR`E&`4Z*N#d@#XT?GDB>dJIQp^`At0Vwn<4?obElYPV zZPA3#*L=-(Y8bIw$@5lZIwT7w8uA1OrE-NAF6&ezQEa1W3YvFv^n{cU;oISX{p z$oJX$Q&CTSg78AEU~*xSI`R})nj`*;HWlTm6on(YbSNq4(UDUKb|J0_=x71^UGvhR z>cE_gzSM03I^=(q$U&U{s0$bnH-eW?#O}bF>5q#3HLtCL=iYl_7j+*-{81nKp`3L5 zn8JB@Re)30t18s|F0yJKqv}tIR?wFB+OYd)oF-`1tFevAl2>VPu=t>p2t+YS&_e^b zZz6O7>5L*Ynx!`yAc8FTw${Y*7-avqZ88OTAk%GBNy1Bf5<2VCCM^^fKXv8Wm8x)B z{;<$uC;i=M-Y}aVG@P|;gyai#DR!C2wT|~bE&N}Ub3mE}8}!r6 zX{@ z9v+8j=Ua0hB;p%F>cSnfgG*K&O<1Rvq;L7q%Y_me-nu8pUir>!KT0DJ`?tp#%JN)& zf7gJy3dlsRm5hFpo5>g`l%m0w!a|#6U($-75RDSjO2jZhN^V@W3fwU^?hjA-Q^KVk zb>aR?FW%kY0RL=+CL&fb>J3KRWfVlPHGJ@g*}2ms?*aZUR!FHB%e}TgZ(N#8O*Z1w z7Ea-e#2;07Wgfk@S#M8u{@H#LllZUWz@}6D z4O*3@(TJnaITPN$t{yb1>Evo}ti|iHjhsM$83qmE|rmtSPOwY9Y;py5YYv#5P`darC>}fjMe7WO!95 z$K9S1-#asy*PF20G2 zJ8@9hfW*%VRS3xqyh;;BqF$%r(XSStaHef)ea=odBNI==GqiMV% zmN++CeB`UdkI3i?(Wb*@G=hQ;~k-EO;Ssu6pN8f-v zVTgkHUuu7({KI&2Cadt|s^Egy2-}q@a6mFLr4#Rq9*$Ukyd=>GhLR3pNM9+Se6*kn zsc(n!lfp)$9#E{WCPrau1E*H^{Jh6&ONe50W*@%7gt^nGgB&{D*j_gryi1^{IhXl? z(i*c%-rOIghCp3*?UKttk2h=z0(Ap^993%~HY9l1u-8 z5E_NXJ#7OHJiUJj4dDJyoNXA^`(gDho)tD1cM6 z8bo-sc$cOhrc-wHF`Lg+soHZ_#QCN+>)zfTd6rVxhKO6wQ=+m1ktP=v1r%H0UXffU z3xLxt=%AASmv)pmm4k6o;ZEN-l12fq$6gxHBX=B=Id^SJj;q09{BiWfqaegRYnbYU~~^v9gfy~qW>Xh z94f8&|7eg6s%g;h-WEc`4I@M=hVBS5?Fh#Ej0wb>A_lH92j5#oq%nHdN&i5@T&`l= zO?Y=bO^ElYNfLIMGz%|??OzWTjK`_)U4O`d%yR-mJ8zDyAAd#I$3#MYXyOoSFpF02ST5rV3U=JFA76iOs^j;RW6%=VN+RzPwmkdN zS<28GtoWfvr6&0IJGC);uit8KpAs7u%J9hT;+27ROM%z3vFRF$m-HP4yQq?wJC)$} z0eom5{EFiBDZwNjQPc2J1<^f{85)uJICR0E+%oMLGy@Jbo*_Sedj0A)q^08ew*|&+ zb3)*?!4A6aT$LVZ5t5fxYyO4v@Z@d^bt=mLEEmEP9j^@-I-}p>)6hoKNrb>&Gei46 zy`zOQws=Gu0$AGl)4-Y`s0Qah+M$KTeKmq45Ae8JFiC`th}dj3wVhL@8May*A>>_I zG)W@}TZA0XBKGR@%XrV*pV_m;-^Y!ys2{cTgOFCS7 zfpdI(YGncGbU0T3;O2T4y|JU<6^jq`86f%sT+;SxWz=WFaWvw@x_(b_(tyv)z?#S~ zTzr`jMlep|V=&0nCo(`3grWpL%C47)smL(W%0+Qx2$a@|az7k7O~+Vo;!rc0&||H) z7?;-cef1Z;GH@OGqiL%ze@J8opIf6N9;^FO+Gq461mIv3_Y_cpsP6`_8*j0Nbc^%?D?8nu7PVUj`T#Htas$=|XLa>zLZM(jW z$4kT%c*R+KCuTRaqB$UP_2?J0)S8o%o98HgL7V;ivY;tNJEjt z{7=xpqSUk{a({w8E!?!tX@y|3YiTGO3;Lv>v5cZT@g37z!IYQ3VPzuf3S7AAPm^a# z`<|h%t*@sGSieVA9A#FUeIl(}fM;);Vn(2|1mEe|bl1R^0xNH{@Txj;<^I?CNiLy% z0T8*2N>gbwWU7dff&Z%(Rb)J$(O@9-(JXTqa{Cd&(Efro@1W^Ioj9=6qa-x zV{;1X&PQ%msPcRvnMuRV1i8|1N9)RDDO>!g&Q-H80_W|I}Z)-B*_ewVmyf)h)k@_Bw&wZwRjGYGF#v^2AuK=;EO z0Z1`80$pFZ@->{Ao3j!^$&UUN19l2HaH0;kUN~<@#Mx#Rf_XHW0Qo{$@)FtIK z`-TK+7UUr~C$&VE+i|Z5p=Fl4XfSwx87@^kga&}&+Q|Y z%a32lzLlEEbwWCiHMiA@9#v_{2usI3SFXcXnpe03v3tle?!f7~sA>ezA&L$gv*I-> z0zlt+3{H%7-HO3+*Rh4P$q~f0(xqNt66#KE_e(yoyEUS_2^;WsI z0VA-1Zi4kmqamn+I*{=d#ETAG!gG9qW$d|oJKw?<((4pKP6EN@Ehw1Spg?9n@cx4q zXx3c$NrlP$Ux@@c9haesM_R0kz*m%J5Pf{W4p}@mbz;Q+;C!53v%6jq`;?_>r~pK8*sSb)SKpE zj!xaKqUQI)5n9<6kaMj+OCJ;4!0Rb^77a%MUEMOaZ>jL$;(oV+V7hqrd8yz`$qXr@ zO}BS%1fAm4Zt@9xW+Lj8;#8B$PFTO2BxAK+RJOz&m3b6FTRmR2{85n6>^bd2(7 zwc>*XvK-$;!WLXqNoxRATzNQ^Vc0RdBK4NzHwc`n?p?E27l-xbdly)USn9PcWIE}) z4!hRZ>S&)nN8BNpzQ2*rBwuhy!b<61GN6h}9)h_Ml=ppKE#z(z~Hc@=5- zvWjAu<)OUm#lg^^_8TEw`m_s-!BN~gzeM}a) zjF>FwH(RPVfrmYKLQc-Qx3XO#S=21=1_9@3N=uJ(KJJZ~oK3$YJD!;RfMJETXdYG=YOK?3Qvys-Tyn zG-uE$#@7*`lOkTZlQt?MDf%oU&nWs(-@`caOp4 z`LmJJfX-15k!(}6KOox0_+4gN9=At3q8D$-8mQUM6Sp0{^cWJi%omyX*z1z>@>oer zIbyx;#JA%%=@kgOcy?=69`E;y|0c&9yiwHbq+3BZL;W=Iw=B6sOujQisL)8dH>rnP z-QD~c@gT}`ic6&50jUI5mRzbAH$H@shffJ~*9oDTH>1r;e8+cobB#p3s7560#F=xJF^R1@7vL=NEFr;b>bocxNMt^!P^Dt83dGZXG)w6* z&z4j;v(CAhVV_qzFVz#;Vu!cRk7*eAZ&P?SfEBJ72VLjqoz{>a+JD~u;u)`fZ`!WY z*_>ga<=>3g*&mJzdV{Zf*Hh7W7Bee_H1wfQOaE7Tf*dVijLbTlIkMMigDM|9F9m1T zV|v`#_)tkWD0qYt^hHFS!c&K?JJSQb!(@dLotS8~=OKjn%Fkq(*Zw>8o2feXIAC^=kA^yn zwpCL9qh$=UJzWs}_)^UrW=^+3u{~m(*<#}8=%j=DI?q*H$L)3}_JBC&kI%H$?r<<% zHKsobKXyc>>rwgyx%aEk0pSVyTA(2u(ApNNBYw+13~RoSHG@zkSxc0~Wf~&WMuyR&}_9F|k)9kO{)0ZW|509D6jrHD3J=KFIa9!2QuE+)m zu%bCh{#@k2HPO!If4`Dht68Gc#3_$4F+9{hL^r>6TBVKXSC})uw+@S259UiWgc!(iwJ9+4 z;?c2;RtztE5E?Z${vp&0DC8q;Csw2$3R3yGSdA7dm5*_-ae>_VKzJ<;RtXaKab2sC^@S#8URnXUaa)E43AuQ<@a=7R8 zvcHT>((`0(${jg#F~4V>o;O|f{R(`;Y-=fpY@9<}VDl$YGao#rg82Px=Q}*%tdgw> zTKmI_3tS2K@@|ddFlPt%{>D{tXnAKNUnVTJkS6eVi2TOnO0}@V+2Vp;4Bp;D%C!3! zQ6-vz^7i`=Sd-K#mq=tD=gW=aDuT}X_FmB1cr=|PK^q|C6^9?r_KTdmvIrMi{om|C*WFLb5_hhor--}Z1t>l~Dn+4ROFkf;CZMXIwNGqqy+n)7w)mK9NE!3$g)ShF)3~co>B|{AzrF`(R9^u(&P6+K#Utex?$6 zzHY{)xKx`dnWVJbz{*1T&80s&ToPz~{vbi_-Xo>MOWs^=r}atsbm_|q5Iqz0`H8m^NRpxWG)nx$~$KA$oB}T+Q^7x#1i9|0;r)0Ep z`=-o|x~h!EejO4_&3WT+>@-(Jr54aC9yU)blRqp(Ui{lAAxZqT^^a10lH83)1d3si zq+_v9+m}4daONBQNu$EgxHb{9NPF#eOiK^tJDQ|5RtXAP&Mzg1y9?iSvb#>+V+=(p z@vi39=mz;Bu~aOLQ{N(X3mVByN5Mor^Xk(=2-};jCSP%WKjX$db^6vMr$!g9w|ttG zNnJoCP~_*^qqyf>;o>$wwB}3d%(`vfbLS@yd0)aRUGB{|ja4N2H!Caf*!s;&5M(b| z=*Y>TT=663px!178Iyr8B8zC7Ubp)5w8(@mM#~$1((?>Gjp;phc|=d^zTAGHKWTYN zvKW)fO%bGEEfSFX9!@+>FQNH+fbMrOKCL(ePhx8-MQ?vTHWAzBkNNrsvLL@mXq4aWychS&o?VRf#rE6kC+$$+&hc{5Ne&rE zKG|$k`5GkOiPLU(lSo^{Q#V7u0_lhrk<7lbL3+cBEOOd#XAriVQ@+3@qb}HTuxDN^ zv)x~#Gl4^0lq>p%{FmcY(?u8ya3Ob@ZAm+CMJb$UAy`5y=AFaNgH_Z;QYHA=<Los^P4615`ATU{7m+Ws9*b#7eE9VF@ST`9htx%yTH(kV3I7kb02<`cmiAxi=ap zua~WEG}`!eGE}=q%y=89y43C4XRnVW=FdjNVxz7JFGwdm?bP{NF+*)u%aau!f4++P z?!4AP)CnETRq)m?R_BW^@s)du_o-^z|EMGsq5o{*a}_fvqV6DE*%tI>di|fTDWCX| z`_+7q7?x4@{q~2^*!9RR2biZSye6`b`sB(H^Zb6ovX9b@#D5(biRodW_yZvZ)tyqf z1amz!T**d2(NMWf>>o;VtSd2*^y1uA|H)@U3}I_*ncL-%gRjGvda-)jXDud|L2+jT zQbA#bKL@)*dt31@{%~_fx&6_tQ7;VV^JqRCA#iQppUi)0bkRz3Ay2#eWQvmCG#RY{ zYm$~BtG|)0h0`_~!?xoc!vOPSL?>-ebef z!i7>Tf;{u=k~zl)n!=Y5Fz!w)sV$;dzmme`^|TmmsbL%Zcu> zZ)H4KiklB{_n7KziFNl1|IClB zP%IL<_pAOBU`}y5T-Ikjvj@Y-r)eiG6>!pjOyTDVwH&{rSD75)Q2KZ-JFsaleEw3; z`cP1`%VM!O=86iIRCBvT6WU2sy9m$9AKyGQVhJnk;S--&}4|e zN literal 0 HcmV?d00001 diff --git a/wear_tao/src/main/res/values-night/themes.xml b/wear_tao/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..fd43956 --- /dev/null +++ b/wear_tao/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/wear_tao/src/main/res/values/colors.xml b/wear_tao/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/wear_tao/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/wear_tao/src/main/res/values/strings.xml b/wear_tao/src/main/res/values/strings.xml new file mode 100644 index 0000000..d80533a --- /dev/null +++ b/wear_tao/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + WearTAO + Sample tiles + \ No newline at end of file diff --git a/wear_tao/src/main/res/values/themes.xml b/wear_tao/src/main/res/values/themes.xml new file mode 100644 index 0000000..c24fc99 --- /dev/null +++ b/wear_tao/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/wear_tao/src/test/java/fr/oupson/wear_tao/ExampleUnitTest.kt b/wear_tao/src/test/java/fr/oupson/wear_tao/ExampleUnitTest.kt new file mode 100644 index 0000000..719f5a5 --- /dev/null +++ b/wear_tao/src/test/java/fr/oupson/wear_tao/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package fr.oupson.wear_tao + +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