diff --git a/.gradle/5.1.1/executionHistory/executionHistory.bin b/.gradle/5.1.1/executionHistory/executionHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..716216759bc19b631bb718026f846051a5c0d5ee Binary files /dev/null and b/.gradle/5.1.1/executionHistory/executionHistory.bin differ diff --git a/.gradle/5.1.1/executionHistory/executionHistory.lock b/.gradle/5.1.1/executionHistory/executionHistory.lock new file mode 100644 index 0000000000000000000000000000000000000000..b7df5673b5e9991869a066e0b302c56e2895491e Binary files /dev/null and b/.gradle/5.1.1/executionHistory/executionHistory.lock differ diff --git a/.gradle/5.1.1/fileChanges/last-build.bin b/.gradle/5.1.1/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d Binary files /dev/null and b/.gradle/5.1.1/fileChanges/last-build.bin differ diff --git a/.gradle/5.1.1/fileContent/fileContent.lock b/.gradle/5.1.1/fileContent/fileContent.lock new file mode 100644 index 0000000000000000000000000000000000000000..0226ef693eec5d64e4b3f7d3e76f5cbd597533a3 Binary files /dev/null and b/.gradle/5.1.1/fileContent/fileContent.lock differ diff --git a/.gradle/5.1.1/fileHashes/fileHashes.bin b/.gradle/5.1.1/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..bceba7b86fe88165c2df6ea4056e34db1b7611b5 Binary files /dev/null and b/.gradle/5.1.1/fileHashes/fileHashes.bin differ diff --git a/.gradle/5.1.1/fileHashes/fileHashes.lock b/.gradle/5.1.1/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..44bfb734a5ab068a68bf58ac72244d37a27625ab Binary files /dev/null and b/.gradle/5.1.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/5.1.1/fileHashes/resourceHashesCache.bin b/.gradle/5.1.1/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000000000000000000000000000000000000..7fab46a35b38bfe377714770e7fc10d2fbeae0e2 Binary files /dev/null and b/.gradle/5.1.1/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/5.1.1/gc.properties b/.gradle/5.1.1/gc.properties new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.gradle/5.1.1/javaCompile/classAnalysis.bin b/.gradle/5.1.1/javaCompile/classAnalysis.bin new file mode 100644 index 0000000000000000000000000000000000000000..f06c12a24291556ac766cda831497ed754502812 Binary files /dev/null and b/.gradle/5.1.1/javaCompile/classAnalysis.bin differ diff --git a/.gradle/5.1.1/javaCompile/javaCompile.lock b/.gradle/5.1.1/javaCompile/javaCompile.lock new file mode 100644 index 0000000000000000000000000000000000000000..2bb9c682d806159e7dc274388a691f26dce3c4fb Binary files /dev/null and b/.gradle/5.1.1/javaCompile/javaCompile.lock differ diff --git a/.gradle/5.1.1/javaCompile/taskHistory.bin b/.gradle/5.1.1/javaCompile/taskHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..019ea36fb671f06c010e878911b5ec5f9d4ba8e0 Binary files /dev/null and b/.gradle/5.1.1/javaCompile/taskHistory.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000000000000000000000000000000000000..6d84db3dc654193e723da2107a19219bc2a5201f Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000000000000000000000000000000000000..c02b058652a19efb22a5b8a5641ba313ebbbfa8d --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Fri Apr 19 19:30:17 BST 2019 +gradle.version=5.1.1 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000000000000000000000000000000000000..3917ca7ce1ea5c67ab6f957372ed0e430d304f70 Binary files /dev/null and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.gradle/vcsWorkingDirs/gc.properties b/.gradle/vcsWorkingDirs/gc.properties new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml new file mode 100644 index 0000000000000000000000000000000000000000..5435ed16710d7a6669cc9faf3736550c71dfe6b2 --- /dev/null +++ b/.idea/assetWizardSettings.xml @@ -0,0 +1,165 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="WizardSettings"> + <option name="children"> + <map> + <entry key="imageWizard"> + <value> + <PersistentState> + <option name="children"> + <map> + <entry key="imageAssetPanel"> + <value> + <PersistentState> + <option name="children"> + <map> + <entry key="actionbar"> + <value> + <PersistentState> + <option name="children"> + <map> + <entry key="clipArt"> + <value> + <PersistentState> + <option name="values"> + <map> + <entry key="color" value="000000" /> + </map> + </option> + </PersistentState> + </value> + </entry> + </map> + </option> + <option name="values"> + <map> + <entry key="theme" value="HOLO_DARK" /> + <entry key="themeColor" value="ffffff" /> + </map> + </option> + </PersistentState> + </value> + </entry> + <entry key="launcher"> + <value> + <PersistentState> + <option name="children"> + <map> + <entry key="foregroundImage"> + <value> + <PersistentState> + <option name="values"> + <map> + <entry key="color" value="000000" /> + <entry key="scalingPercent" value="55" /> + </map> + </option> + </PersistentState> + </value> + </entry> + </map> + </option> + <option name="values"> + <map> + <entry key="backgroundAssetType" value="COLOR" /> + <entry key="backgroundColor" value="ffffff" /> + <entry key="foregroundImage" value="C:\Users\james\Documents\COM2027\logo\4k logo (icon).png" /> + </map> + </option> + </PersistentState> + </value> + </entry> + <entry key="launcherLegacy"> + <value> + <PersistentState> + <option name="children"> + <map> + <entry key="clipArt"> + <value> + <PersistentState> + <option name="values"> + <map> + <entry key="color" value="000000" /> + </map> + </option> + </PersistentState> + </value> + </entry> + </map> + </option> + </PersistentState> + </value> + </entry> + <entry key="notification"> + <value> + <PersistentState> + <option name="children"> + <map> + <entry key="clipArt"> + <value> + <PersistentState> + <option name="values"> + <map> + <entry key="color" value="000000" /> + </map> + </option> + </PersistentState> + </value> + </entry> + </map> + </option> + </PersistentState> + </value> + </entry> + </map> + </option> + </PersistentState> + </value> + </entry> + </map> + </option> + </PersistentState> + </value> + </entry> + <entry key="vectorWizard"> + <value> + <PersistentState> + <option name="children"> + <map> + <entry key="vectorAssetStep"> + <value> + <PersistentState> + <option name="children"> + <map> + <entry key="clipartAsset"> + <value> + <PersistentState> + <option name="values"> + <map> + <entry key="url" value="jar:file:/C:/Program%20Files/Android/Android%20Studio/plugins/android/lib/android.jar!/images/material_design_icons/action/ic_home_black_24dp.xml" /> + </map> + </option> + </PersistentState> + </value> + </entry> + </map> + </option> + <option name="values"> + <map> + <entry key="color" value="ffffff" /> + <entry key="outputName" value="ic_home_black_24dp" /> + <entry key="sourceFile" value="C:\Users\james" /> + </map> + </option> + </PersistentState> + </value> + </entry> + </map> + </option> + </PersistentState> + </value> + </entry> + </map> + </option> + </component> +</project> \ No newline at end of file diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser new file mode 100644 index 0000000000000000000000000000000000000000..4ef3ec9ad431fb3af0a5809f24f57630142f9725 Binary files /dev/null and b/.idea/caches/build_file_checksums.ser differ diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser new file mode 100644 index 0000000000000000000000000000000000000000..1b3919cc3cea16bd2677f4ef0956bc71f041a8cd Binary files /dev/null and b/.idea/caches/gradle_models.ser differ diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000000000000000000000000000000000000..15a15b218a29e09c9190992732698d646e4d659a --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Encoding" addBOMForNewFiles="with NO BOM" /> +</project> \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000000000000000000000000000000000000..47bd81ff324e223261acf802991656d9876f7d31 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="GradleSettings"> + <option name="linkedExternalProjectsSettings"> + <GradleProjectSettings> + <option name="distributionType" value="DEFAULT_WRAPPED" /> + <option name="externalProjectPath" value="$PROJECT_DIR$" /> + <option name="modules"> + <set> + <option value="$PROJECT_DIR$" /> + </set> + </option> + <option name="resolveModulePerSourceSet" value="false" /> + </GradleProjectSettings> + </option> + </component> +</project> \ No newline at end of file diff --git a/.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml b/.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..bf16fff60d774b6b4019ee648078982839abec21 --- /dev/null +++ b/.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml @@ -0,0 +1,11 @@ +<component name="libraryTable"> + <library name="Gradle: android.arch.core:common:1.1.1@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/common/1.1.1/e55b70d1f5620db124b3e85a7f4bdc7bd48d9f95/common-1.1.1.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/common/1.1.1/ae9b923fc99c1fc5a7a9b6cedc6df8b2b8529c54/common-1.1.1-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml b/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..a26d333d9319c59db6312efada2e31018c48d858 --- /dev/null +++ b/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: android.arch.core:runtime:1.1.1@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f1ddab27c57a116ccd67f397b1d0cbb3/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f1ddab27c57a116ccd67f397b1d0cbb3/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/runtime/1.1.1/25df553df10af32bede9dd768a2d15299543d84/runtime-1.1.1-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml b/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..27b1867567b7eaf1a581ecad416d6477fe0125ab --- /dev/null +++ b/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml @@ -0,0 +1,11 @@ +<component name="libraryTable"> + <library name="Gradle: android.arch.lifecycle:common:1.1.1@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/common/1.1.1/207a6efae6a3555e326de41f76bdadd9a239cbce/common-1.1.1.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/common/1.1.1/bcdaa509a856d1430e736b102f899aa9870a8f83/common-1.1.1-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml b/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..e593d930a8de964c91a4331ae87dbd14d94c7921 --- /dev/null +++ b/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: android.arch.lifecycle:livedata:1.1.1@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7aed3e4b6b51da3ba4e1a6583590d815/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7aed3e4b6b51da3ba4e1a6583590d815/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/livedata/1.1.1/bf27acaa4953c98cd519756ed7b7caacf94407d4/livedata-1.1.1-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml b/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..666a5d2de9b6141899a585b94ff172eb38f57ac8 --- /dev/null +++ b/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: android.arch.lifecycle:livedata-core:1.1.1@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2edd907cb4b02bdc1e1b3fcd1336d10c/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2edd907cb4b02bdc1e1b3fcd1336d10c/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/livedata-core/1.1.1/c38818e006ea7a408c05e3090364332d46494ef/livedata-core-1.1.1-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml b/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..bbab9329bd8b3c3d65b445d8fd68d2745bf37101 --- /dev/null +++ b/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: android.arch.lifecycle:runtime:1.1.1@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1638308ae1b7b952095c1ae09bf3bf10/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1638308ae1b7b952095c1ae09bf3bf10/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/runtime/1.1.1/8e4214221b3797b863dc9998d16abb4af043e784/runtime-1.1.1-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml b/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..20abdd965c34eb3e599c4eb8b45710c99cdb98e9 --- /dev/null +++ b/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: android.arch.lifecycle:viewmodel:1.1.1@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e7cdd667d9edc3c7722b88c42064610b/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e7cdd667d9edc3c7722b88c42064610b/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/viewmodel/1.1.1/d1cc8e805317f171be63c68341f499acda7e42d6/viewmodel-1.1.1-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..ce6e1584b7c9829d6b5b8f3839b7fb5d63401bb8 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:animated-vector-drawable:28.0.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/c61ea99d8f012ff840857f410830b507/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/c61ea99d8f012ff840857f410830b507/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..18dfe9cc4fe9ed0744d081dbdccd63fcc020e213 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:appcompat-v7:28.0.0@aar"> + <ANNOTATIONS> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/3130850cf28d7ef9f18dfa871489eb27/annotations.zip!/" /> + </ANNOTATIONS> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/3130850cf28d7ef9f18dfa871489eb27/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/3130850cf28d7ef9f18dfa871489eb27/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..9fb6e944fa60ec8f849c9bc8bb4e98b29b77e24b --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:asynclayoutinflater:28.0.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/eaaea6236999500633d2a24a2823e6e8/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/eaaea6236999500633d2a24a2823e6e8/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..fd0496dcb8dab709e48b8a39859cd33f603c0fa6 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:cardview-v7:28.0.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e04a97ff00d28f77d05dfe58715e5d18/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e04a97ff00d28f77d05dfe58715e5d18/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml b/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..80e4d731eb624b41090c61619f91ad20b99ee390 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml @@ -0,0 +1,9 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:collections:28.0.0@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/collections/28.0.0/c1bcdade4d3cc2836130424a3f3e4182c666a745/collections-28.0.0.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_3_aar.xml b/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_3_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..fba8a3992a0b1f48a4bd75905f7bb7162274bc29 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_3_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support.constraint:constraint-layout:1.1.3@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/811bcc1c7426cdc327bb39a75e05eb73/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/811bcc1c7426cdc327bb39a75e05eb73/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_solver_1_1_3_jar.xml b/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_solver_1_1_3_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..c0adf88faeab6653f78ca993214c9e72d7c959d7 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_solver_1_1_3_jar.xml @@ -0,0 +1,9 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support.constraint:constraint-layout-solver:1.1.3@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support.constraint/constraint-layout-solver/1.1.3/bde0667d7414c16ed62d3cfe993cff7f9d732373/constraint-layout-solver-1.1.3.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b91dc37d4c112746ca079e8d726507a93a51b66 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:coordinatorlayout:28.0.0@aar"> + <ANNOTATIONS> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/43c60b53a800ff5e086998cb5419e5a7/annotations.zip!/" /> + </ANNOTATIONS> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/43c60b53a800ff5e086998cb5419e5a7/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/43c60b53a800ff5e086998cb5419e5a7/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..e1ade3047f5faa5d59aef239f76e033d8446ab74 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:cursoradapter:28.0.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/c43ccea522d81501f7b1db5dc342e39f/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/c43ccea522d81501f7b1db5dc342e39f/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..522130d07f68cff5bb6fa203520e19438a92a4d3 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:customview:28.0.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e9b0bbd41e5e73d108c616e2237f42e0/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e9b0bbd41e5e73d108c616e2237f42e0/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b9528bafb31bce99f177e97d4afcbf289a18700 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:design:28.0.0@aar"> + <ANNOTATIONS> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7ec8c50647f66cd4b0b79800196df1c8/annotations.zip!/" /> + </ANNOTATIONS> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7ec8c50647f66cd4b0b79800196df1c8/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7ec8c50647f66cd4b0b79800196df1c8/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..0fd27651962f9a509a65f8e09dd85735b233371e --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:documentfile:28.0.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/792506c3a81b5c0d545da77055930ed3/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/792506c3a81b5c0d545da77055930ed3/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..dd782639d9a22a1516e88a6661862241f14c7dda --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:drawerlayout:28.0.0@aar"> + <ANNOTATIONS> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1060649a970b090f41a1ffc452b7a760/annotations.zip!/" /> + </ANNOTATIONS> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1060649a970b090f41a1ffc452b7a760/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1060649a970b090f41a1ffc452b7a760/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..10dede2368c2913434101ab5fad18e2b4afa913e --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:interpolator:28.0.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/bd6fd2664373fb8537729aa265fa11c4/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/bd6fd2664373fb8537729aa265fa11c4/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..163f2f7283fa286bcb8cae6900b20f91845d74bf --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:loader:28.0.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/569da9078a77e13932e6056678d1464d/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/569da9078a77e13932e6056678d1464d/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..2522ba7f0073f2c12174d9b15e52df46c6d5be6e --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:localbroadcastmanager:28.0.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/37e7db454c64300ce74930ef92870548/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/37e7db454c64300ce74930ef92870548/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..5e2993ee46983dba6b3c14c033daaf71b20a322f --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:print:28.0.0@aar"> + <ANNOTATIONS> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b1cfd33c244e7c5f1258f37fe5c19f1a/annotations.zip!/" /> + </ANNOTATIONS> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b1cfd33c244e7c5f1258f37fe5c19f1a/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b1cfd33c244e7c5f1258f37fe5c19f1a/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..f723dc4048a6fa9ce10310e7aae3acc7e3e6a5ed --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:recyclerview-v7:28.0.0@aar"> + <ANNOTATIONS> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6a5d153332a925eb6daa5f1f5b7adba9/annotations.zip!/" /> + </ANNOTATIONS> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6a5d153332a925eb6daa5f1f5b7adba9/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6a5d153332a925eb6daa5f1f5b7adba9/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..01023406491ec996a4b24841c3dbb08736677f6b --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:slidingpanelayout:28.0.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2206e972fccf147045366113cfab7eb1/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2206e972fccf147045366113cfab7eb1/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0_jar.xml b/.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..0fdecce0d635b1b13ead093f15f6c59196f199f0 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0_jar.xml @@ -0,0 +1,9 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-annotations:28.0.0@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/28.0.0/ed73f5337a002d1fd24339d5fb08c2c9d9ca60d8/support-annotations-28.0.0.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..c962a4a47c1ca240aaa5664d5bdd06a46d762b44 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-compat:28.0.0@aar"> + <ANNOTATIONS> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/edc2e73e68502b20c48a430c436619cf/annotations.zip!/" /> + </ANNOTATIONS> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/edc2e73e68502b20c48a430c436619cf/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/edc2e73e68502b20c48a430c436619cf/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..d1f67d227a93225da995e1b114cef13a2f2f24fa --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-core-ui:28.0.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f7e9d651f343ec427b4eee4f699be4b6/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f7e9d651f343ec427b4eee4f699be4b6/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..5f6e61c96d210233b828bb30612e28d10610715c --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-core-utils:28.0.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/335e28948a0724c82a99dc690d752303/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/335e28948a0724c82a99dc690d752303/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..959c5d6abb37dcadac26ff7ed07208e97157d544 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-fragment:28.0.0@aar"> + <ANNOTATIONS> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/41b1c1de26ff8b63a410082f430bd0ae/annotations.zip!/" /> + </ANNOTATIONS> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/41b1c1de26ff8b63a410082f430bd0ae/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/41b1c1de26ff8b63a410082f430bd0ae/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..f8863c1b3981ac55bb5648fd224e5fad5e937759 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_aar.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-media-compat:28.0.0@aar"> + <ANNOTATIONS> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/dd8a7f010ada3a841bc30bf9cf665c04/annotations.zip!/" /> + </ANNOTATIONS> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/dd8a7f010ada3a841bc30bf9cf665c04/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/dd8a7f010ada3a841bc30bf9cf665c04/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..9eeb2a5bc550d9b63030161416c6f73f12fa2801 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-v4:28.0.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/82c850389c5b901c14f5723531a55e5b/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/82c850389c5b901c14f5723531a55e5b/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..502c6ec3086a2ea09c33b780e00b7ec9ba182e20 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-vector-drawable:28.0.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6213bbad4d9c9dad1bbec66fc95d62fe/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6213bbad4d9c9dad1bbec66fc95d62fe/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..412b78a8ee71012c12267a87c88c1f9016fa27c4 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:swiperefreshlayout:28.0.0@aar"> + <ANNOTATIONS> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b79081fd0b77bb0dbb114fc9e6760219/annotations.zip!/" /> + </ANNOTATIONS> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b79081fd0b77bb0dbb114fc9e6760219/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b79081fd0b77bb0dbb114fc9e6760219/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_3_0_2_aar.xml b/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_3_0_2_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..4a40f206a5e6fb5e78bb7bf31c463a3384da90ed --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_3_0_2_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support.test.espresso:espresso-core:3.0.2@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/576971d67ac0a462319e6e550bbc7b91/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/576971d67ac0a462319e6e550bbc7b91/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support.test.espresso/espresso-core/3.0.2/433f4f601a3f3835691d80838dd7ff9414931b05/espresso-core-3.0.2-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_3_0_2_aar.xml b/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_3_0_2_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..4724615d1197bf6192354dd0409b0bc7b2f884ae --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_3_0_2_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support.test.espresso:espresso-idling-resource:3.0.2@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/207aa2aeb2dccf412f1b582565bb8546/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/207aa2aeb2dccf412f1b582565bb8546/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support.test.espresso/espresso-idling-resource/3.0.2/6071e2b310c16836ba475a94df377e2f75928546/espresso-idling-resource-3.0.2-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_test_monitor_1_0_2_aar.xml b/.idea/libraries/Gradle__com_android_support_test_monitor_1_0_2_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b99e6c619b178537c8f2224fff3246ac084f1f8 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_test_monitor_1_0_2_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support.test:monitor:1.0.2@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/3b32b873677760a961de10124979d034/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/3b32b873677760a961de10124979d034/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support.test/monitor/1.0.2/5764301056100b445e9ba31df7d1b554a55450f6/monitor-1.0.2-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_test_runner_1_0_2_aar.xml b/.idea/libraries/Gradle__com_android_support_test_runner_1_0_2_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..96551266d1217a309be7783ba64f90ae561aaa0f --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_test_runner_1_0_2_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support.test:runner:1.0.2@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/edab8227e2a32eca6df7d0fdf275c1f9/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/edab8227e2a32eca6df7d0fdf275c1f9/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support.test/runner/1.0.2/b2ce2342744a66e935dbc4a298259709a4c1f042/runner-1.0.2-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..25c772911bffb4ef6b0c32523231c278d1cf4961 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:transition:28.0.0@aar"> + <ANNOTATIONS> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2317561b61aed41fdf6657e89c4929f2/annotations.zip!/" /> + </ANNOTATIONS> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2317561b61aed41fdf6657e89c4929f2/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2317561b61aed41fdf6657e89c4929f2/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..7f16be7281c11b56c3f389ea0684055bf452da40 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:versionedparcelable:28.0.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/5a83b1431a469844d2a7cf14ad6994dd/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/5a83b1431a469844d2a7cf14ad6994dd/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..2a4756d1ce8f6cd26a30867b948fc00306c98b8e --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:viewpager:28.0.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4d5094019d9dd47babd8bc940c57af37/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4d5094019d9dd47babd8bc940c57af37/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_ads_identifier_16_0_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_ads_identifier_16_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..07d6ae2e11f213c951a5c5c27a0972ef241df8d1 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_ads_identifier_16_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-ads-identifier:16.0.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/31bfc4f7eec15155bd06cb544d316c19/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/31bfc4f7eec15155bd06cb544d316c19/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_base_16_0_1_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_base_16_0_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..85e4f2459f1ad8b96a959992174b206a18d93c31 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_base_16_0_1_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-base:16.0.1@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/aff18a80f59f46f223f8cd8352488f69/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/aff18a80f59f46f223f8cd8352488f69/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_basement_16_2_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_basement_16_2_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..eadc434511f1a977a619c0d0768dd9c598577953 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_basement_16_2_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-basement:16.2.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8dc35d56addedabee372c48b93f50b5c/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8dc35d56addedabee372c48b93f50b5c/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.android.gms/play-services-basement/16.2.0/3e3589bff6719404b47afecaa49d192cfa3f5791/play-services-basement-16.2.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_flags_16_0_1_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_flags_16_0_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..75704153eea588a1ee1867806c05c4ba7f3fb045 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_flags_16_0_1_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-flags:16.0.1@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e96876a095a350434bdd42ffd8629e2d/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e96876a095a350434bdd42ffd8629e2d/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_location_16_0_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_location_16_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..30f228ab91e963f4ec2116d7efc375e1fc610bfc --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_location_16_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-location:16.0.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/71d2c02279f04e623c682e5948efb4cf/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/71d2c02279f04e623c682e5948efb4cf/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_maps_16_1_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_maps_16_1_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..3b5f3d301ad7bd1d6075bd4404ab8a06ba541fd4 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_maps_16_1_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-maps:16.1.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/5c3d4a4bb43d218ea8979263a5cb2f80/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/5c3d4a4bb43d218ea8979263a5cb2f80/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.android.gms/play-services-maps/16.1.0/68568da8e0d63d5d6fc4b6dfe9e01edc038e6a43/play-services-maps-16.1.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_16_4_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_16_4_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..57a0d392f2fc68f0d5cea979ac3a5f574a155f1c --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_16_4_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-measurement:16.4.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/61c282e29f80d22e7c8e6e2bae65c5a5/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/61c282e29f80d22e7c8e6e2bae65c5a5/res" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.android.gms/play-services-measurement/16.4.0/6ffd880f8d48b22cade5f0a40bc63ec6bbd71818/play-services-measurement-16.4.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_api_16_4_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_api_16_4_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..3408d8811f5612dacc2df80b49801c3a0267580a --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_api_16_4_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-measurement-api:16.4.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/5f59927a1ad6c3a75ccba740d1daf9a5/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/5f59927a1ad6c3a75ccba740d1daf9a5/res" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.android.gms/play-services-measurement-api/16.4.0/e3d686c60b90e01a909c923347c0e7aff8023b99/play-services-measurement-api-16.4.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_base_16_4_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_base_16_4_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..fef1ae6a2b05a24d7a1381eb5269471bf7e19e37 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_base_16_4_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-measurement-base:16.4.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/0ee30746c63eb2186a6251b4fc9119f8/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/0ee30746c63eb2186a6251b4fc9119f8/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.android.gms/play-services-measurement-base/16.4.0/8ff2fadcad61bc126ae562e28dedf98219fdc30d/play-services-measurement-base-16.4.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_impl_16_4_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_impl_16_4_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..13d17b955fe63fd8ada5685f817895188e3c9abf --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_impl_16_4_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-measurement-impl:16.4.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8ebe24e2b67b22e6734fa48156d5a301/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8ebe24e2b67b22e6734fa48156d5a301/res" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.android.gms/play-services-measurement-impl/16.4.0/98fea79e4a77817f0ce14dd933ef096cd7d79b20/play-services-measurement-impl-16.4.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_sdk_16_4_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_sdk_16_4_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..165bca097d6abb7977fbc373a1d9032b07e0a116 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_sdk_16_4_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-measurement-sdk:16.4.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e5742b302aa803638589a3b903fcbe48/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e5742b302aa803638589a3b903fcbe48/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.android.gms/play-services-measurement-sdk/16.4.0/88561e7c3615c80f0579c3ac4ee9d8ae8bd7df61/play-services-measurement-sdk-16.4.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_sdk_api_16_4_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_sdk_api_16_4_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..56c8102415d4d08327ffc8e1ebb8fb678d1ab97d --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_measurement_sdk_api_16_4_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-measurement-sdk-api:16.4.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d828696aa497d1650024fec778ab5150/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d828696aa497d1650024fec778ab5150/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.android.gms/play-services-measurement-sdk-api/16.4.0/b0889362b29c0c1a24c5af14e126d069e86c2644/play-services-measurement-sdk-api-16.4.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_places_placereport_16_0_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_places_placereport_16_0_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..75cdc428e9903432ad091577d8df0f348f9ff664 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_places_placereport_16_0_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-places-placereport:16.0.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/544edd79b93032c2db7502405d1379ad/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/544edd79b93032c2db7502405d1379ad/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_stats_16_0_1_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_stats_16_0_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..fe0d2af215a3dbfda2244b79f21652a17ffa5283 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_stats_16_0_1_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-stats:16.0.1@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/38703f9776ba9f10dd3efdde11d08328/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/38703f9776ba9f10dd3efdde11d08328/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_tasks_16_0_1_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_tasks_16_0_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..936ab5b22da0ec88f65cd48ce899a65e19c3d3c2 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_tasks_16_0_1_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.android.gms:play-services-tasks:16.0.1@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d9a65cf708e7da39e775b6754574fb8d/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d9a65cf708e7da39e775b6754574fb8d/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_auto_value_auto_value_annotations_1_6_jar.xml b/.idea/libraries/Gradle__com_google_auto_value_auto_value_annotations_1_6_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..e435b1b98685dd3113ff1d7f46b0f729d430ea2d --- /dev/null +++ b/.idea/libraries/Gradle__com_google_auto_value_auto_value_annotations_1_6_jar.xml @@ -0,0 +1,11 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.auto.value:auto-value-annotations:1.6@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto.value/auto-value-annotations/1.6/da725083ee79fdcd86d9f3d8a76e38174a01892a/auto-value-annotations-1.6.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto.value/auto-value-annotations/1.6/5a95aac7aa9d66baa4e5753a9079769ad76944dd/auto-value-annotations-1.6-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml b/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..947e2512f67ce099395001ceba1f3f026a2376fb --- /dev/null +++ b/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml @@ -0,0 +1,9 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/2.0.1/516c03b21d50a644d538de0f0369c620989cd8f0/jsr305-2.0.1.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_firebase_firebase_analytics_16_4_0_aar.xml b/.idea/libraries/Gradle__com_google_firebase_firebase_analytics_16_4_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..d581158e67d972e61cb4af2df147165915be0737 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_firebase_firebase_analytics_16_4_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.firebase:firebase-analytics:16.4.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/05aaad10cf023846f4e479b7d0d9e83a/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/05aaad10cf023846f4e479b7d0d9e83a/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.firebase/firebase-analytics/16.4.0/b884044d2f8732260837f470f4ed231a876cb2e3/firebase-analytics-16.4.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_firebase_firebase_auth_16_2_1_aar.xml b/.idea/libraries/Gradle__com_google_firebase_firebase_auth_16_2_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..9250a7a71ce11217043cfe797244ae7cd96a8b1d --- /dev/null +++ b/.idea/libraries/Gradle__com_google_firebase_firebase_auth_16_2_1_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.firebase:firebase-auth:16.2.1@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/cca49277aea77119cba2e35273dd9768/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/cca49277aea77119cba2e35273dd9768/res" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.firebase/firebase-auth/16.2.1/8bbeffaefcb0edbf09b108d2a63ce8e2d1508f3a/firebase-auth-16.2.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_firebase_firebase_auth_interop_16_0_1_aar.xml b/.idea/libraries/Gradle__com_google_firebase_firebase_auth_interop_16_0_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..f5a4cf3a76b0fa98acb25f758ee5805d86ff916d --- /dev/null +++ b/.idea/libraries/Gradle__com_google_firebase_firebase_auth_interop_16_0_1_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.firebase:firebase-auth-interop:16.0.1@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ab311d660699b5f7ac4a67e2b96fa4c5/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ab311d660699b5f7ac4a67e2b96fa4c5/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_firebase_firebase_common_16_1_0_aar.xml b/.idea/libraries/Gradle__com_google_firebase_firebase_common_16_1_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..9ea95ab8cfbb4819a7ac257b16d78ffed5c2321c --- /dev/null +++ b/.idea/libraries/Gradle__com_google_firebase_firebase_common_16_1_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.firebase:firebase-common:16.1.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/87d6202a37dc4c9c4978dffa4d93714c/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/87d6202a37dc4c9c4978dffa4d93714c/res" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.firebase/firebase-common/16.1.0/e6e3a5d7f4d0cf5797dadd5443a6978dc58ae4e5/firebase-common-16.1.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_firebase_firebase_core_16_0_8_aar.xml b/.idea/libraries/Gradle__com_google_firebase_firebase_core_16_0_8_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..0ee75ff79db90bfdbb47851f9b7ab3e3cef4966d --- /dev/null +++ b/.idea/libraries/Gradle__com_google_firebase_firebase_core_16_0_8_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.firebase:firebase-core:16.0.8@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/88a9fce8d404e5f5cef4763fea05244f/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/88a9fce8d404e5f5cef4763fea05244f/res" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.firebase/firebase-core/16.0.8/d744794686c273d9fe2fdad77ee686c87a47625b/firebase-core-16.0.8-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_firebase_firebase_database_16_1_0_aar.xml b/.idea/libraries/Gradle__com_google_firebase_firebase_database_16_1_0_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..fd99e2aa327f38ea535c6083465de68592e50a6d --- /dev/null +++ b/.idea/libraries/Gradle__com_google_firebase_firebase_database_16_1_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.firebase:firebase-database:16.1.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a1be0db2fd5cb278a94feeec1c2552ba/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a1be0db2fd5cb278a94feeec1c2552ba/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.firebase/firebase-database/16.1.0/e7623d62fd877e924d874fc13b225b748a57e95f/firebase-database-16.1.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_firebase_firebase_database_collection_16_0_1_aar.xml b/.idea/libraries/Gradle__com_google_firebase_firebase_database_collection_16_0_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..faed6aa1f0bb4109433ec02c083f9a87289522f3 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_firebase_firebase_database_collection_16_0_1_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.firebase:firebase-database-collection:16.0.1@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/0ddc6ed91afc63249b83c2942ad1249f/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/0ddc6ed91afc63249b83c2942ad1249f/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.firebase/firebase-database-collection/16.0.1/b5886c1473251920abb7253028aafb63b2d5e0a5/firebase-database-collection-16.0.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_firebase_firebase_iid_17_0_3_aar.xml b/.idea/libraries/Gradle__com_google_firebase_firebase_iid_17_0_3_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..bf4250f1b7dee522e0a8ff39ded6a37db3f3c1dc --- /dev/null +++ b/.idea/libraries/Gradle__com_google_firebase_firebase_iid_17_0_3_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.firebase:firebase-iid:17.0.3@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/0801de71e7a36e2562cc85b1ddea38aa/res" /> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/0801de71e7a36e2562cc85b1ddea38aa/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.firebase/firebase-iid/17.0.3/f75ec044e44b868f2a037e753b0287889e224837/firebase-iid-17.0.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_firebase_firebase_iid_interop_16_0_1_aar.xml b/.idea/libraries/Gradle__com_google_firebase_firebase_iid_interop_16_0_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..1c0365a54f3e1a813c49cf2be71f12b22b8651dd --- /dev/null +++ b/.idea/libraries/Gradle__com_google_firebase_firebase_iid_interop_16_0_1_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.firebase:firebase-iid-interop:16.0.1@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/46254619ca981c4beabaa0604579a08e/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/46254619ca981c4beabaa0604579a08e/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_firebase_firebase_measurement_connector_17_0_1_aar.xml b/.idea/libraries/Gradle__com_google_firebase_firebase_measurement_connector_17_0_1_aar.xml new file mode 100644 index 0000000000000000000000000000000000000000..66f90853afc78866e938a85e0cae369b53411a12 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_firebase_firebase_measurement_connector_17_0_1_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.google.firebase:firebase-measurement-connector:17.0.1@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7e2d001fc645ed6b99bd9557184fdb2b/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7e2d001fc645ed6b99bd9557184fdb2b/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml b/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..5c4dd4e8722443c464234949143da8f5d30be215 --- /dev/null +++ b/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml @@ -0,0 +1,11 @@ +<component name="libraryTable"> + <library name="Gradle: com.squareup:javawriter:2.1.1@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javawriter/2.1.1/67ff45d9ae02e583d0f9b3432a5ebbe05c30c966/javawriter-2.1.1.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javawriter/2.1.1/5b31387d839a5cdaf5b6de3990da01f7f2b963c5/javawriter-2.1.1-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml b/.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..f9c9a3064066c5386a2a4a93d68ae827f35500c7 --- /dev/null +++ b/.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml @@ -0,0 +1,11 @@ +<component name="libraryTable"> + <library name="Gradle: javax.inject:javax.inject:1@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/6975da39a7040257bd51d21a231b76c915872d38/javax.inject-1.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/a00123f261762a7c5e0ec916a2c7c8298d29c400/javax.inject-1-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__junit_junit_4_12_jar.xml b/.idea/libraries/Gradle__junit_junit_4_12_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..f4f25a81d9b6c86e485d93dfe75f8d161bf73c58 --- /dev/null +++ b/.idea/libraries/Gradle__junit_junit_4_12_jar.xml @@ -0,0 +1,11 @@ +<component name="libraryTable"> + <library name="Gradle: junit:junit:4.12@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa/junit-4.12-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0_jar.xml b/.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..5855a297fee62f1e139ecda40e8b9a447001369e --- /dev/null +++ b/.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0_jar.xml @@ -0,0 +1,11 @@ +<component name="libraryTable"> + <library name="Gradle: net.sf.kxml:kxml2:2.3.0@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.kxml/kxml2/2.3.0/ccbc77a5fd907ef863c29f3596c6f54ffa4e9442/kxml2-2.3.0.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.kxml/kxml2/2.3.0/309cd2cff7260e465792fda3dcbb063b730d8050/kxml2-2.3.0-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml b/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..50cf2b92b850e340e541cafa050973708969530b --- /dev/null +++ b/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml @@ -0,0 +1,11 @@ +<component name="libraryTable"> + <library name="Gradle: org.hamcrest:hamcrest-core:1.3@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b/hamcrest-core-1.3-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml b/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..a5eaca5bef3195718027663ab24ef255f97e7da1 --- /dev/null +++ b/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml @@ -0,0 +1,11 @@ +<component name="libraryTable"> + <library name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-integration/1.3/5de0c73fef18917cd85d0ab70bb23818685e4dfd/hamcrest-integration-1.3.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-integration/1.3/ae7787a563e6a1b1f17fd4ac43be3a3c8830cfda/hamcrest-integration-1.3-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml b/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml new file mode 100644 index 0000000000000000000000000000000000000000..b4dabdc1dd7899cfbf4c50abfe51ca5446fe78fd --- /dev/null +++ b/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml @@ -0,0 +1,11 @@ +<component name="libraryTable"> + <library name="Gradle: org.hamcrest:hamcrest-library:1.3@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/4785a3c21320980282f9f33d0d1264a69040538f/hamcrest-library-1.3.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/47a7ee46628ab7133129cd7cef1e92657bc275e/hamcrest-library-1.3-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000000000000000000000000000000000..0d45e8dac234fb8d8ce72a22fa160d3a6ababc22 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK" /> +</project> \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000000000000000000000000000000000..28226e39988a590b253e71596589b79b81acda31 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/unirides.iml" filepath="$PROJECT_DIR$/unirides.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000000000000000000000000000000000000..7f68460d8b38ac04e3a3224d7c79ef719b1991a9 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="RunConfigurationProducerService"> + <option name="ignoredProducers"> + <set> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" /> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" /> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" /> + </set> + </option> + </component> +</project> \ No newline at end of file diff --git a/.idea/unirides.iml b/.idea/unirides.iml new file mode 100644 index 0000000000000000000000000000000000000000..d6ebd4805981b8400db3e3291c74a743fef9a824 --- /dev/null +++ b/.idea/unirides.iml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="JAVA_MODULE" version="4"> + <component name="NewModuleRootManager" inherit-compiler-output="true"> + <exclude-output /> + <content url="file://$MODULE_DIR$" /> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/build.gradle b/build.gradle index eb3f0ec4f1af8d935d2670598ee8711483d06142..e0e25a0f7bfe9d3008a7972690ddfe56337cdb27 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,24 @@ +buildscript { + repositories { + mavenCentral() + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:3.4.0' + classpath 'com.google.gms:google-services:4.0.1' + } +} + + apply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { applicationId "com.example.liliyayankova.unirides" - minSdkVersion 19 + minSdkVersion 24 targetSdkVersion 28 versionCode 1 versionName "1.0" @@ -16,14 +30,31 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + productFlavors { + } } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:28.0.0' - implementation 'com.android.support.constraint:constraint-layout:1.1.0' + implementation 'com.android.support:support-v4:28.0.0' + implementation 'com.android.support:support-media-compat:28.0.0' + implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'com.android.support:design:28.0.0' + implementation 'com.google.android.gms:play-services-maps:16.1.0' + implementation 'com.google.android.gms:play-services-location:16.0.0' + implementation 'com.google.firebase:firebase-core:16.0.8' + implementation 'com.google.firebase:firebase-auth:16.2.1' + implementation 'com.google.firebase:firebase-database:16.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' } + +repositories { + mavenCentral() + google() + jcenter() +} + +apply plugin: 'com.google.gms.google-services' diff --git a/google-services.json b/google-services.json new file mode 100644 index 0000000000000000000000000000000000000000..cf36752de48ad013f1adb0dfce9f199345c96645 --- /dev/null +++ b/google-services.json @@ -0,0 +1,40 @@ +{ + "project_info": { + "project_number": "1055405105912", + "firebase_url": "https://unirides-e7561.firebaseio.com", + "project_id": "unirides-e7561", + "storage_bucket": "unirides-e7561.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:1055405105912:android:7bbad215fe94b0dd", + "android_client_info": { + "package_name": "com.example.liliyayankova.unirides" + } + }, + "oauth_client": [ + { + "client_id": "1055405105912-jt3gfugmjgg9anotpr9jod74b4k1pna4.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyBif6IsBwrlmoqxegu6wJJCndhxa7hfBkM" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "1055405105912-jt3gfugmjgg9anotpr9jod74b4k1pna4.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f6b961fd5a86aa5fbfe90f707c3138408be7c718 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000000000000000000000000000000000..6d9807c65e2b186237a30bd859b7d5b1c264ba81 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Apr 22 17:09:20 BST 2019 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip diff --git a/gradlew b/gradlew new file mode 100644 index 0000000000000000000000000000000000000000..cccdd3d517fc5249beaefa600691cf150f2fa3e6 --- /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 0000000000000000000000000000000000000000..f9553162f122c71b34635112e717c3e733b5b212 --- /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/local.properties b/local.properties new file mode 100644 index 0000000000000000000000000000000000000000..66f0181369099b2680aaf348a8877ef7d5821d6c --- /dev/null +++ b/local.properties @@ -0,0 +1,8 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Wed May 08 14:20:09 BST 2019 +sdk.dir=C\:\\Users\\Liliya Yankova\\AppData\\Local\\Android\\Sdk diff --git a/src/debug/res/values/google_maps_api.xml b/src/debug/res/values/google_maps_api.xml new file mode 100644 index 0000000000000000000000000000000000000000..4874de2a0bd3ebe87e6b0a13e3e64e36fd176960 --- /dev/null +++ b/src/debug/res/values/google_maps_api.xml @@ -0,0 +1,29 @@ +<resources> + <!-- + TODO: Before you run your application, you need a Google Maps API key. + + To get one, follow this link, follow the directions and press "Create" at the end: + + https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=9F:7D:89:6C:8D:68:E1:AB:41:7C:BE:64:E7:8A:E1:E5:C7:BC:CD:62%3Bcom.example.liliyayankova.unirides + + You can also add your credentials to an existing key, using these values: + + Package name: + 9F:7D:89:6C:8D:68:E1:AB:41:7C:BE:64:E7:8A:E1:E5:C7:BC:CD:62 + + SHA-1 certificate fingerprint: + 9F:7D:89:6C:8D:68:E1:AB:41:7C:BE:64:E7:8A:E1:E5:C7:BC:CD:62 + + Alternatively, follow the directions here: + https://developers.google.com/maps/documentation/android/start#get-key + + Once you have your key (it starts with "AIza"), replace the "google_maps_key" + string in this file. + --> + + //google maps api key = "AIzaSyCrlmLHqBo2wJ7QCGhn-regWPkUXw2xhnw" + + //added the google maps api key = "AIzaSyCnHWgrEhK2TSoEschf8WxjAHi2rkW4QkY" + + <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">AIzaSyCnHWgrEhK2TSoEschf8WxjAHi2rkW4QkY</string> +</resources> diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 27fc941267566947b75f7a668766fb685953cf39..69b3d5de8713ce80bc4020c86031f50b93dc9624 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -1,30 +1,92 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.liliyayankova.unirides"> - - <!-- To auto-complete the email text field in the login form with the user's emails --> + <!-- + The ACCESS_COARSE/FINE_LOCATION permissions are not required to use + Google Maps Android API v2, but you must specify either coarse or fine + location permissions for the 'MyLocation' functionality. + --> + <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> + <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> + <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.READ_PROFILE" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> + <uses-permission android:name="android.permission.INTERNET" /> + <uses-permission android:name="android.permission.CAMERA" /> + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> + <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" - android:icon="@mipmap/logo" + android:icon="@mipmap/ic_launcher_foreground" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - <activity android:name=".Homepage"> + <!-- + The API key for Google Maps-based APIs is defined as a string resource. + (See the file "res/values/google_maps_api.xml"). + Note that the API key is linked to the encryption key used to sign the APK. + You need a different API key for each encryption key, including the release key that is used to + sign the APK for publishing. + You can define the keys for the debug and release targets in src/debug/ and src/release/. + --> + <meta-data + android:name="com.google.android.geo.API_KEY" + android:value="@string/google_maps_key" /> + + <activity + android:name=".Homepage" + android:label="@string/app_name" + android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> + <activity android:name=".Offline_Map" + android:label="@string/offline_map" /> <activity android:name=".Login" - android:label="@string/title_activity_login" /> - <activity android:name=".Register"></activity> + android:label="@string/title_activity_login" + android:screenOrientation="portrait" /> + <activity + android:name=".Register" + android:label="@string/register" + android:screenOrientation="portrait" /> + <activity + android:name=".Driver_Register" + android:label="@string/register" + android:screenOrientation="portrait" /> + <activity + android:name=".User_Register" + android:label="@string/register" + android:screenOrientation="portrait" /> + <activity + android:name=".Driver_Main" + android:label="Home" + android:screenOrientation="portrait" /> + <activity + android:name=".User_Main" + android:label="Home" + android:screenOrientation="portrait" /> + <activity + android:name=".Map" + android:label="@string/title_activity_map" /> + <activity + android:name=".Route" + android:label="@string/create_route" /> + <activity + android:name=".Profile" + android:label="@string/profile" /> + <activity + android:name=".Settings" + android:label="@string/settings" /> </application> </manifest> \ No newline at end of file diff --git a/src/main/ic_launcher-web.png b/src/main/ic_launcher-web.png new file mode 100644 index 0000000000000000000000000000000000000000..8afa749b7bbe64a669e4eef13fac1a2be966f7a4 Binary files /dev/null and b/src/main/ic_launcher-web.png differ diff --git a/src/main/java/com/example/liliyayankova/unirides/Driver_Main.java b/src/main/java/com/example/liliyayankova/unirides/Driver_Main.java new file mode 100644 index 0000000000000000000000000000000000000000..62b3ed75b2df508313a3d57b3cb7f8671d6a050c --- /dev/null +++ b/src/main/java/com/example/liliyayankova/unirides/Driver_Main.java @@ -0,0 +1,104 @@ +package com.example.liliyayankova.unirides; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.ImageButton; +import android.widget.Toast; + +public class Driver_Main extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_driver_main); + + //setting the user_toolbar layout as the action bar + Toolbar toolbar = findViewById(R.id.toolbar); + try { + setSupportActionBar(toolbar); + } catch (Exception e) { + Log.e("TOOLBAR", e.toString()); + } + + ImageButton view_map_button = findViewById(R.id.view_route_button); + view_map_button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent map_i = new Intent(Driver_Main.this, Map.class); + startActivity(map_i); + } + }); + + ImageButton create_route_button = findViewById(R.id.create_route_button); + create_route_button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent route_i = new Intent(Driver_Main.this, Route.class); + startActivity(route_i); + } + }); + + } + + //Override for the user_toolbar menu items + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.toolbar_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + //checks the id of the item, if the item id matches a case id then the code in that case block will execute + switch(item.getItemId()){ + + case(R.id.item_home): + + //already home, so do nothing. + return true; + + case(R.id.item_logout): + + /* + TODO: + Possibly add a way to log out here? (not sure if we are even tracking the login instance + within each activity? as far as I understand the login just gets you to the next activity + however if you "logout" and just press the back button after it takes you back to the homepage + it will act as if you are still logged in when you reenter). + for now i have just set it so it goes back to the homepage (where you can register or login). + */ + + Toast.makeText(Driver_Main.this, "successfully logged out", Toast.LENGTH_SHORT).show(); + Intent logout_i = new Intent(Driver_Main.this, Homepage.class); + startActivity(logout_i); + + return true; + + case(R.id.item_profile): + + Intent profile_i = new Intent(Driver_Main.this, Profile.class); + profile_i.putExtra("userType", Login.userType.DRIVER); + startActivity(profile_i); + return true; + + case(R.id.item_settings): + + Intent settings_i = new Intent(Driver_Main.this, Settings.class); + settings_i.putExtra("userType", Login.userType.DRIVER); + startActivity(settings_i); + return true; + + } + + return super.onOptionsItemSelected(item); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/liliyayankova/unirides/Driver_Register.java b/src/main/java/com/example/liliyayankova/unirides/Driver_Register.java new file mode 100644 index 0000000000000000000000000000000000000000..7d3204e77db7272722942daf158c8dcb8fce2dd3 --- /dev/null +++ b/src/main/java/com/example/liliyayankova/unirides/Driver_Register.java @@ -0,0 +1,170 @@ +package com.example.liliyayankova.unirides; + +import android.content.Intent; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.text.TextUtils; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.auth.AuthResult; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; +import com.google.firebase.database.DatabaseReference; +import com.google.firebase.database.FirebaseDatabase; + +public class Driver_Register extends AppCompatActivity { + private EditText forename; + private EditText surname; + private EditText email; + private EditText password; + private EditText age; + private EditText car_model; + private EditText licence_plate; + private EditText time_driving; + private Button sign_up; + + /* Used for Firebase authorisation in creating a new account */ + private FirebaseAuth firebaseAuth; + + /* Allows access to the Firebase Database */ + private FirebaseDatabase firebaseDatabase; + + /* Used to add values to the database */ + private DatabaseReference dbReference; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_driver_register); + + //setting the user_toolbar layout as the action bar + Toolbar toolbar = findViewById(R.id.toolbar); + try { + setSupportActionBar(toolbar); + } catch (Exception e) { + Log.e("TOOLBAR", e.toString()); + } + + //makes it so the keyboard doesn't automatically popup! + this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); + + this.forename = findViewById(R.id.forename); + this.surname = findViewById(R.id.surname); + this.email = findViewById(R.id.email); + this.password = findViewById(R.id.password); + this.age = findViewById(R.id.age); + this.car_model = findViewById(R.id.car_model); + this.licence_plate = findViewById(R.id.license_plate); + this.time_driving = findViewById(R.id.time_driving); + this.sign_up = findViewById(R.id.signup_button); + + this.firebaseAuth = FirebaseAuth.getInstance(); + this.firebaseDatabase = FirebaseDatabase.getInstance(); + this.dbReference = firebaseDatabase.getReference(); + + //sign_up button listener + sign_up.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //execute register method + registerClick(view); + } + }); + + } + + public void registerClick(View v) { + final String forenameText = forename.getText().toString().trim(); + final String surnameText = surname.getText().toString().trim(); + final String emailText = email.getText().toString().trim(); + final String passwordText = password.getText().toString().trim(); + final String ageText = age.getText().toString().trim(); + + final String carModelText = car_model.getText().toString().trim(); + final String licencePlateText = licence_plate.getText().toString().trim(); + final String timeDrivingText = time_driving.getText().toString().trim(); + + Log.d("Email", emailText); + Log.d("Password", passwordText); + + if(TextUtils.isEmpty(forenameText) || TextUtils.isEmpty(surnameText) + || TextUtils.isEmpty(emailText) || TextUtils.isEmpty(passwordText) + || TextUtils.isEmpty(passwordText) || TextUtils.isEmpty(ageText)) { + Toast.makeText(this, "One of the fields is empty!",Toast.LENGTH_SHORT).show(); + + } + else { + firebaseAuth.createUserWithEmailAndPassword(emailText, passwordText) + .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { + @Override + public void onComplete(@NonNull Task<AuthResult> task) { + if(task.isSuccessful()) { + FirebaseUser user = firebaseAuth.getCurrentUser(); + String userId = user.getUid(); + Toast.makeText(Driver_Register.this, forenameText,Toast.LENGTH_SHORT).show(); + + // Code to add values into the database + // Only temporary for now, might change these a bit later + dbReference.child("drivers").child(userId).child("first_name").setValue(forenameText); + dbReference.child("drivers").child(userId).child("last_name").setValue(surnameText); + dbReference.child("drivers").child(userId).child("age").setValue(ageText); + dbReference.child("drivers").child(userId).child("email").setValue(emailText); + dbReference.child("drivers").child(userId).child("average_rating").setValue(0.0); + dbReference.child("drivers").child(userId).child("car_model").setValue(carModelText); + dbReference.child("drivers").child(userId).child("license_plate").setValue(licencePlateText); + dbReference.child("drivers").child(userId).child("time_driving").setValue(timeDrivingText); + + //finish(); + Toast.makeText(Driver_Register.this, "registration successful",Toast.LENGTH_SHORT).show(); + Intent home = new Intent(Driver_Register.this, Homepage.class); + startActivity(home); + + } + else { + Toast.makeText(Driver_Register.this, "registration not successful",Toast.LENGTH_SHORT).show(); + } + } + }); + } + + } + + //Override for the user_toolbar menu items + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.offline_toolbar_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + //checks the id of the item, if the item id matches a case id then the code in that case block will execute + switch(item.getItemId()){ + + case(R.id.item_settings): + + Intent settings_i = new Intent(Driver_Register.this, Settings.class); + settings_i.putExtra("userType", Login.userType.NONE); + startActivity(settings_i); + return true; + + } + + return super.onOptionsItemSelected(item); + } + +} diff --git a/src/main/java/com/example/liliyayankova/unirides/Homepage.java b/src/main/java/com/example/liliyayankova/unirides/Homepage.java index 187c0da793a7be0d61e3dcf449028c100046a2da..6f36676c9ef9dc03c85262b65c4220da6a58cac4 100644 --- a/src/main/java/com/example/liliyayankova/unirides/Homepage.java +++ b/src/main/java/com/example/liliyayankova/unirides/Homepage.java @@ -3,15 +3,23 @@ package com.example.liliyayankova.unirides; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.widget.Button; +import android.widget.ImageButton; import android.widget.TextView; +import android.widget.Toast; public class Homepage extends AppCompatActivity { private TextView welcome; private TextView subheading; private Button login; private Button register; + private ImageButton offline_map; @Override protected void onCreate(Bundle savedInstanceState) { @@ -22,6 +30,23 @@ public class Homepage extends AppCompatActivity { this.subheading = (TextView) findViewById(R.id.subh); this.login = (Button) findViewById(R.id.loginB); this.register = (Button) findViewById(R.id.registerB); + this.offline_map = findViewById(R.id.offline_map); + + //setting the user_toolbar layout as the action bar + Toolbar toolbar = findViewById(R.id.toolbar); + try { + setSupportActionBar(toolbar); + } catch (Exception e) { + Log.e("TOOLBAR", e.toString()); + } + + this.offline_map.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent map_i = new Intent(Homepage.this, Offline_Map.class); + startActivity(map_i); + } + }); this.login.setOnClickListener(new View.OnClickListener() { @Override @@ -41,4 +66,30 @@ public class Homepage extends AppCompatActivity { } }); } + + //Override for the user_toolbar menu items + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.offline_toolbar_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + //checks the id of the item, if the item id matches a case id then the code in that case block will execute + switch(item.getItemId()){ + + case(R.id.item_settings): + + Intent settings_i = new Intent(Homepage.this, Settings.class); + settings_i.putExtra("userType", Login.userType.NONE); + startActivity(settings_i); + return true; + + } + + return super.onOptionsItemSelected(item); + } } diff --git a/src/main/java/com/example/liliyayankova/unirides/ImageProperties.java b/src/main/java/com/example/liliyayankova/unirides/ImageProperties.java new file mode 100644 index 0000000000000000000000000000000000000000..42aeab403833f5f3f60f1e2920e12035fcdea221 --- /dev/null +++ b/src/main/java/com/example/liliyayankova/unirides/ImageProperties.java @@ -0,0 +1,134 @@ +package com.example.liliyayankova.unirides; + +import android.media.ExifInterface; +import android.net.Uri; +import android.util.Log; + +class ImageProperties { + /** Path to the image we want to display... */ + private Uri imagePath; + + public ImageProperties( Uri imageUri) + { + imagePath = imageUri; + } + + /** + * Method for getting the orientation of the image to be displayed on the main scree. + * We use the ExifInterface class that gives access to the EXIF metadata of an image. + * + * @return The orientation of the image + */ + public int getCameraPhotoOrientation() + { + int rotate = 0; + try { + ExifInterface exif = new ExifInterface(imagePath.getPath()); + int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED); + + float longitude = convertToDegree(exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE)); + + float latitude = convertToDegree(exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE)); + //this is in a degree minute seconds format a + Log.i("Image Address", longitude + " ," + latitude); + + switch (orientation) { + case ExifInterface.ORIENTATION_ROTATE_270: + rotate = 270; + break; + case ExifInterface.ORIENTATION_ROTATE_180: + rotate = 180; + break; + case ExifInterface.ORIENTATION_ROTATE_90: + rotate = 90; + break; + } + } catch (Exception e) { + e.printStackTrace(); + } + //tells you how much rotation you need + + Log.v("ROTATION:", "Rotate Value: " + rotate); + return rotate; + } + + /** + * Method for returning the longitude of the image to be displayed. + * @return + */ + public Float getCameraAddressLong() + { + String longitude = null; + try { +// context.getContentResolver().notifyChange(imageUri, null); + // File imageFile = new File(imagePath); + + //reading the tags from the JPEG file + ExifInterface exif = new ExifInterface(imagePath.getPath()); + longitude = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE); + + + //this is in a degree minute seconds format a + Log.i("Image Address", convertToDegree(longitude) +"as double"); + + + + } catch (Exception e) { + e.printStackTrace(); + } + //tells you how much rotation you need + return convertToDegree(longitude); + } + + /** + * Method for returning the latitude of the image to be displayed. + * @return + */ + public Float getCameraAddressLat() + { + String latitude = null; + try { +// context.getContentResolver().notifyChange(imageUri, null); + // File imageFile = new File(imagePath); + + //reading the tags from the JPEG file + ExifInterface exif = new ExifInterface(imagePath.getPath()); + latitude = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE); + + + //this is in a degree minute seconds format a + Log.i("Image Address", convertToDegree(latitude) +"as double"); + + + + } catch (Exception e) { + e.printStackTrace(); + } + //tells you how much rotation you need + return convertToDegree(latitude); + } + + private Float convertToDegree(String stringDMS){ + Float result = null; + String[] DMS = stringDMS.split(",", 3); + + String[] stringD = DMS[0].split("/", 2); + Double D0 = new Double(stringD[0]); + Double D1 = new Double(stringD[1]); + Double FloatD = D0/D1; + + String[] stringM = DMS[1].split("/", 2); + Double M0 = new Double(stringM[0]); + Double M1 = new Double(stringM[1]); + Double FloatM = M0/M1; + + String[] stringS = DMS[2].split("/", 2); + Double S0 = new Double(stringS[0]); + Double S1 = new Double(stringS[1]); + Double FloatS = S0/S1; + + result = new Float(FloatD + (FloatM/60) + (FloatS/3600)); + + return result; + } +} diff --git a/src/main/java/com/example/liliyayankova/unirides/Login.java b/src/main/java/com/example/liliyayankova/unirides/Login.java index 05916a0f4e3132f63a60904818a7c45ff6d24804..84d9df878adfb24f032d9c3d6b4742914936909a 100644 --- a/src/main/java/com/example/liliyayankova/unirides/Login.java +++ b/src/main/java/com/example/liliyayankova/unirides/Login.java @@ -3,6 +3,7 @@ package com.example.liliyayankova.unirides; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.annotation.TargetApi; +import android.content.Intent; import android.content.pm.PackageManager; import android.support.annotation.NonNull; import android.support.design.widget.Snackbar; @@ -18,16 +19,41 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.provider.ContactsContract; +import android.support.v7.widget.Toolbar; import android.text.TextUtils; +import android.util.Log; import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; +import android.view.WindowManager; import android.view.inputmethod.EditorInfo; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; +import android.widget.Toast; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.FirebaseApp; +import com.google.firebase.FirebaseNetworkException; +import com.google.firebase.auth.AuthResult; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException; +import com.google.firebase.auth.FirebaseAuthInvalidUserException; +import com.google.firebase.auth.FirebaseUser; +import com.google.firebase.auth.UserInfo; +import com.google.firebase.database.ChildEventListener; +import com.google.firebase.database.DataSnapshot; +import com.google.firebase.database.DatabaseError; +import com.google.firebase.database.DatabaseReference; +import com.google.firebase.database.FirebaseDatabase; +import com.google.firebase.database.ValueEventListener; + import java.util.ArrayList; import java.util.List; @@ -62,10 +88,52 @@ public class Login extends AppCompatActivity implements LoaderCallbacks<Cursor> private View mProgressView; private View mLoginFormView; + /* For Firebase Authorisation and logging in */ + private FirebaseAuth firebaseAuth; + + /* Connects to Firebase and checks if authorisation was successful */ + private FirebaseAuth.AuthStateListener authListener; + + /* Enum for user type - used in bundles when going back and forth between activities */ + public enum userType {DRIVER, PASSENGER, NONE}; + + /* + TODO: Look at this message from Ronan in Login.java + To be honest, I have no idea what any of this code does prior to my commit + but I really really really recommend authentication through Firebase! :) + I won't remove any of the code that you have here now, but I'm going to implement + login through using Firebase. I've done it before in my other project so I will just be + copyign that for now. Feel free to change it if you don't like it, but I think this is + the best way to do it + */ + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); + firebaseAuth = FirebaseAuth.getInstance(); + authListener = new FirebaseAuth.AuthStateListener() { + @Override + public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { + FirebaseUser user = firebaseAuth.getCurrentUser(); + if(user != null) { + // User is already logged in, so automatically let them into the app + changeActivity(); + } + } + }; + + //setting the user_toolbar layout as the action bar + Toolbar toolbar = findViewById(R.id.toolbar); + try { + setSupportActionBar(toolbar); + } catch (Exception e) { + Log.e("TOOLBAR", e.toString()); + } + + //makes it so the keyboard doesn't automatically popup! + this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); + // Set up the login form. mEmailView = (AutoCompleteTextView) findViewById(R.id.email); populateAutoComplete(); @@ -75,7 +143,7 @@ public class Login extends AppCompatActivity implements LoaderCallbacks<Cursor> @Override public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) { if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) { - attemptLogin(); + attemptLogin(); // RONAN COMMENT: what does this do? dunno if we need it ¯\_(ツ)_/¯ return true; } return false; @@ -86,7 +154,44 @@ public class Login extends AppCompatActivity implements LoaderCallbacks<Cursor> mEmailSignInButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { - attemptLogin(); + //attemptLogin(); // TODO: RONAN COMMENT: Dunno if we're gonna use this. Maybe uncomment it? or change this? dunno lol + // get user information + String email = mEmailView.getText().toString(); + String password = mPasswordView.getText().toString(); + + if (!password.equals("") && !email.equals("")) { + firebaseAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(Login.this, new OnCompleteListener<AuthResult>() { + @Override + public void onComplete(@NonNull Task<AuthResult> task) { + if (!task.isSuccessful()) { + try { + throw task.getException(); //TODO: This doesn't handle "incorrect format" exception (no @ symbol in email for example) + } catch (FirebaseAuthInvalidUserException e) { + Toast.makeText(Login.this, "Error: User doesn't exist, or was deleted/disabled.", + Toast.LENGTH_SHORT).show(); + } catch (FirebaseAuthInvalidCredentialsException e) { + Toast.makeText(Login.this, "Error: User credentials incorrect!", + Toast.LENGTH_SHORT).show(); + } catch (FirebaseNetworkException e) { + Toast.makeText(Login.this, "Error: Couldn't connect to Firebase Network", + Toast.LENGTH_SHORT).show(); + } catch (Exception e) { + Toast.makeText(Login.this, "Error: Something inexplicable went wrong.", + Toast.LENGTH_SHORT).show(); + } + + } else { + + // successful - closes login page and sends user to main menu + finish(); + changeActivity(); + } + } + }); + } else { + // field is empty error + Toast.makeText(Login.this, "At least one of the fields is empty", Toast.LENGTH_SHORT).show(); + } } }); @@ -94,6 +199,60 @@ public class Login extends AppCompatActivity implements LoaderCallbacks<Cursor> mProgressView = findViewById(R.id.login_progress); } + /** + * Method for changing the activity to either the driver or passenger activity after login + * This method is only called AFTER a user's credentials have already been confirmed by the + * server, it should never be called to confirm a users identity. + */ + public void changeActivity(){ + + /* + * TODO: make this more efficient as it currently goes through all the users (as far as i can tell) + * Therefore it takes more than a split second to switch activities. + * may need to disable user input or create a small loading screen if we can't fix this + * because you can still interact with the activity while the next one loads! - James + */ + + //checks if user is a driver or passenger + FirebaseUser user = firebaseAuth.getCurrentUser(); + final String user_id = user.getUid(); + + DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); + ref.child("drivers").child(user_id).addListenerForSingleValueEvent(new ValueEventListener() { + @Override + public void onDataChange(@NonNull DataSnapshot dataSnapshot) { + + if(dataSnapshot.exists()){ + + //TODO: remove this or change it - toast to confirm that the user is indeed a driver during testing + Toast.makeText(Login.this, "Welcome back Driver!", Toast.LENGTH_SHORT).show(); + startActivity(new Intent(Login.this, Driver_Main.class)); + + }else{ + + /* + * no other option as the user has already logged in before this method is called, hence they must be a passenger + * if they are not a driver + */ + //TODO: remove this or change it - toast to confirm that the user is NOT a driver during testing + Toast.makeText(Login.this, "Welcome back Passenger!", Toast.LENGTH_LONG).show(); + startActivity(new Intent(Login.this, User_Main.class)); + } + + } + + @Override + public void onCancelled(@NonNull DatabaseError databaseError) { + //TODO: throw exception? + //assume they're a user? + startActivity(new Intent(Login.this, User_Main.class)); + } + + }); + + + } + private void populateAutoComplete() { if (!mayRequestContacts()) { return; @@ -192,7 +351,7 @@ public class Login extends AppCompatActivity implements LoaderCallbacks<Cursor> private boolean isEmailValid(String email) { //TODO: Replace this with your own logic - return email.contains("@"); + return email.contains("@surrey.ac.uk"); } private boolean isPasswordValid(String password) { @@ -333,7 +492,8 @@ public class Login extends AppCompatActivity implements LoaderCallbacks<Cursor> showProgress(false); if (success) { - finish(); + //go to the main activity + changeActivity(); } else { mPasswordView.setError(getString(R.string.error_incorrect_password)); mPasswordView.requestFocus(); @@ -346,5 +506,31 @@ public class Login extends AppCompatActivity implements LoaderCallbacks<Cursor> showProgress(false); } } + + //Override for the user_toolbar menu items + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.offline_toolbar_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + //checks the id of the item, if the item id matches a case id then the code in that case block will execute + switch(item.getItemId()){ + + case(R.id.item_settings): + + Intent settings_i = new Intent(Login.this, Settings.class); + settings_i.putExtra("userType", Login.userType.NONE); + startActivity(settings_i); + return true; + + } + + return super.onOptionsItemSelected(item); + } } diff --git a/src/main/java/com/example/liliyayankova/unirides/Map.java b/src/main/java/com/example/liliyayankova/unirides/Map.java new file mode 100644 index 0000000000000000000000000000000000000000..bb4ec8bd0e6abc06c4307c0efd224f3eb7f0c598 --- /dev/null +++ b/src/main/java/com/example/liliyayankova/unirides/Map.java @@ -0,0 +1,247 @@ +package com.example.liliyayankova.unirides; + +import android.Manifest; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.location.Location; +import android.location.LocationManager; +import android.os.Build; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.ActivityCompat; +import android.support.v4.app.FragmentActivity; +import android.os.Bundle; +import android.support.v4.content.ContextCompat; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.widget.Toast; + +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.api.GoogleApiClient; +import com.google.android.gms.location.LocationRequest; +import com.google.android.gms.location.LocationListener; +import com.google.android.gms.location.LocationServices; +import com.google.android.gms.maps.CameraUpdate; +import com.google.android.gms.maps.CameraUpdateFactory; +import com.google.android.gms.maps.GoogleMap; +import com.google.android.gms.maps.OnMapReadyCallback; +import com.google.android.gms.maps.SupportMapFragment; +import com.google.android.gms.maps.model.BitmapDescriptorFactory; +import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.Marker; +import com.google.android.gms.maps.model.MarkerOptions; + +public class Map extends AppCompatActivity implements + OnMapReadyCallback, + GoogleApiClient.ConnectionCallbacks, + GoogleApiClient.OnConnectionFailedListener, + LocationListener { + + LocationManager locationManager; + private GoogleMap mMap; + private GoogleApiClient mGoogleApiClient; + private LocationRequest mLocationRequest; + private Location currentLocation; + private Marker myLocation; + private static final int REQUEST_USER_LOCATION_CODE = 99; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_map); + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ + checkUserLocationPermission(); + } + // Obtain the SupportMapFragment and get notified when the map is ready to be used. + SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() + .findFragmentById(R.id.map); + mapFragment.getMapAsync(this); + + locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); + + //setting the user_toolbar layout as the action bar + Toolbar toolbar = findViewById(R.id.toolbar); + try { + setSupportActionBar(toolbar); + } catch (Exception e) { + Log.e("TOOLBAR", e.toString()); + } + + } + + @Override + public void onMapReady(GoogleMap googleMap) { + mMap = googleMap; + if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) + == PackageManager.PERMISSION_GRANTED) { + + buildGoogleApiClient(); + + mMap.setMyLocationEnabled(true); + } + } + + public boolean checkUserLocationPermission(){ + if(ContextCompat.checkSelfPermission(this, + Manifest.permission.ACCESS_FINE_LOCATION) + != PackageManager.PERMISSION_GRANTED){ + if(ActivityCompat.shouldShowRequestPermissionRationale(this, + Manifest.permission.ACCESS_FINE_LOCATION)){ + ActivityCompat.requestPermissions(this, new String[] + {Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_USER_LOCATION_CODE); + }else{ + ActivityCompat.requestPermissions(this, new String[] + {Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_USER_LOCATION_CODE); + } + return false; + }else{ + return true; + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, + @NonNull int[] grantResults) { + switch (requestCode){ + case REQUEST_USER_LOCATION_CODE: + if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + if (ContextCompat.checkSelfPermission(this, + Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { + if (mGoogleApiClient == null) { + buildGoogleApiClient(); + } + mMap.setMyLocationEnabled(true); + } + }else{ + Toast.makeText(this, "Permission Denied.", Toast.LENGTH_SHORT).show(); + } + return; + } + } + + protected synchronized void buildGoogleApiClient(){ + mGoogleApiClient = new GoogleApiClient.Builder(this) + .addConnectionCallbacks(this) + .addOnConnectionFailedListener(this) + .addApi(LocationServices.API) + .build(); + + mGoogleApiClient.connect(); + } + + @Override + public void onLocationChanged(Location location) { + currentLocation = location; + if(myLocation != null){ + myLocation.remove(); + } + + LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); + MarkerOptions markerOptions = new MarkerOptions(); + markerOptions.position(latLng); + markerOptions.title("This be you."); + markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)); + myLocation = mMap.addMarker(markerOptions); + + /* Updated this part so that it zooms in on the location, as it was buggy with me, I've left + * the original code commented out as it may be useful for if your location is updated? + * Either way this works for me at the moment & doesn't default me to the ocean lmao - James + */ + float zoomLevel = 15.0f; + mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel)); + //mMap.animateCamera(CameraUpdateFactory.zoomBy(10)); + + if(mGoogleApiClient != null){ + LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); + + } + } + + @Override + public void onConnected(@Nullable Bundle bundle) { + mLocationRequest = new LocationRequest(); + mLocationRequest.setInterval(1000); + mLocationRequest.setFastestInterval(1000); + mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY); + + if(ContextCompat.checkSelfPermission(this, + Manifest.permission.ACCESS_FINE_LOCATION) + == PackageManager.PERMISSION_GRANTED) { + LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, + mLocationRequest, this); + } + } + + @Override + public void onConnectionSuspended(int i) { + + } + + @Override + public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { + + } + + //Override for the user_toolbar menu items + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.toolbar_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + //checks the id of the item, if the item id matches a case id then the code in that case block will execute + switch(item.getItemId()){ + + case(R.id.item_home): + + Intent home_i = new Intent(Map.this, Driver_Main.class); + startActivity(home_i); + return true; + + + case(R.id.item_logout): + + /* + TODO: + Possibly add a way to log out here? (not sure if we are even tracking the login instance + within each activity? as far as I understand the login just gets you to the next activity + however if you "logout" and just press the back button after it takes you back to the homepage + it will act as if you are still logged in when you reenter). + for now i have just set it so it goes back to the homepage (where you can register or login). + */ + + Toast.makeText(Map.this, "successfully logged out", Toast.LENGTH_SHORT).show(); + Intent logout_i = new Intent(Map.this, Homepage.class); + startActivity(logout_i); + + return true; + + case(R.id.item_profile): + + Intent profile_i = new Intent(Map.this, Profile.class); + profile_i.putExtra("userType", Login.userType.DRIVER); + startActivity(profile_i); + + return true; + + case(R.id.item_settings): + + Intent settings_i = new Intent(Map.this, Settings.class); + settings_i.putExtra("userType", Login.userType.DRIVER); + startActivity(settings_i); + return true; + + } + + return super.onOptionsItemSelected(item); + } +} diff --git a/src/main/java/com/example/liliyayankova/unirides/Offline_Map.java b/src/main/java/com/example/liliyayankova/unirides/Offline_Map.java new file mode 100644 index 0000000000000000000000000000000000000000..d494355737851e2e8f5913dade589e54ce16f234 --- /dev/null +++ b/src/main/java/com/example/liliyayankova/unirides/Offline_Map.java @@ -0,0 +1,231 @@ +package com.example.liliyayankova.unirides; + +import android.Manifest; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.location.Location; +import android.location.LocationManager; +import android.os.Build; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.ActivityCompat; +import android.support.v4.app.FragmentActivity; +import android.os.Bundle; +import android.support.v4.content.ContextCompat; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.Button; +import android.widget.Toast; + +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.api.GoogleApiClient; +import com.google.android.gms.location.LocationRequest; +import com.google.android.gms.location.LocationListener; +import com.google.android.gms.location.LocationServices; +import com.google.android.gms.maps.CameraUpdate; +import com.google.android.gms.maps.CameraUpdateFactory; +import com.google.android.gms.maps.GoogleMap; +import com.google.android.gms.maps.OnMapReadyCallback; +import com.google.android.gms.maps.SupportMapFragment; +import com.google.android.gms.maps.model.BitmapDescriptorFactory; +import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.Marker; +import com.google.android.gms.maps.model.MarkerOptions; + +public class Offline_Map extends AppCompatActivity implements + OnMapReadyCallback, + GoogleApiClient.ConnectionCallbacks, + GoogleApiClient.OnConnectionFailedListener, + LocationListener { + + LocationManager locationManager; + private GoogleMap mMap; + private GoogleApiClient mGoogleApiClient; + private LocationRequest mLocationRequest; + private Location currentLocation; + private Marker myLocation; + private static final int REQUEST_USER_LOCATION_CODE = 99; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_offline__map); + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ + checkUserLocationPermission(); + } + + //setting the user_toolbar layout as the action bar + Toolbar toolbar = findViewById(R.id.toolbar); + try { + setSupportActionBar(toolbar); + } catch (Exception e) { + Log.e("TOOLBAR", e.toString()); + } + + // Obtain the SupportMapFragment and get notified when the map is ready to be used. + SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() + .findFragmentById(R.id.map); + mapFragment.getMapAsync(this); + + locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); + + + Button back_button = findViewById(R.id.back_button); + back_button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent home_i = new Intent(Offline_Map.this, Homepage.class); + startActivity(home_i); + } + }); + + + } + + @Override + public void onMapReady(GoogleMap googleMap) { + mMap = googleMap; + if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) + == PackageManager.PERMISSION_GRANTED) { + + buildGoogleApiClient(); + + mMap.setMyLocationEnabled(true); + } + } + + public boolean checkUserLocationPermission(){ + if(ContextCompat.checkSelfPermission(this, + Manifest.permission.ACCESS_FINE_LOCATION) + != PackageManager.PERMISSION_GRANTED){ + if(ActivityCompat.shouldShowRequestPermissionRationale(this, + Manifest.permission.ACCESS_FINE_LOCATION)){ + ActivityCompat.requestPermissions(this, new String[] + {Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_USER_LOCATION_CODE); + }else{ + ActivityCompat.requestPermissions(this, new String[] + {Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_USER_LOCATION_CODE); + } + return false; + }else{ + return true; + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, + @NonNull int[] grantResults) { + switch (requestCode){ + case REQUEST_USER_LOCATION_CODE: + if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + if (ContextCompat.checkSelfPermission(this, + Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { + if (mGoogleApiClient == null) { + buildGoogleApiClient(); + } + mMap.setMyLocationEnabled(true); + } + }else{ + Toast.makeText(this, "Permission Denied.", Toast.LENGTH_SHORT).show(); + } + return; + } + } + + protected synchronized void buildGoogleApiClient(){ + mGoogleApiClient = new GoogleApiClient.Builder(this) + .addConnectionCallbacks(this) + .addOnConnectionFailedListener(this) + .addApi(LocationServices.API) + .build(); + + mGoogleApiClient.connect(); + } + + @Override + public void onLocationChanged(Location location) { + currentLocation = location; + if(myLocation != null){ + myLocation.remove(); + } + + LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); + MarkerOptions markerOptions = new MarkerOptions(); + markerOptions.position(latLng); + markerOptions.title("Your current location"); + markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)); + myLocation = mMap.addMarker(markerOptions); + + /* Updated this part so that it zooms in on the location, as it was buggy with me, I've left + * the original code commented out as it may be useful for if your location is updated? + * Either way this works for me at the moment & doesn't default me to the ocean lmao - James + */ + float zoomLevel = 15.0f; + mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel)); + //mMap.animateCamera(CameraUpdateFactory.zoomBy(10)); + + if(mGoogleApiClient != null){ + LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); + + } + } + + @Override + public void onConnected(@Nullable Bundle bundle) { + mLocationRequest = new LocationRequest(); + mLocationRequest.setInterval(1000); + mLocationRequest.setFastestInterval(1000); + mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY); + + if(ContextCompat.checkSelfPermission(this, + Manifest.permission.ACCESS_FINE_LOCATION) + == PackageManager.PERMISSION_GRANTED) { + LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, + mLocationRequest, this); + } + } + + @Override + public void onConnectionSuspended(int i) { + + } + + @Override + public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { + + } + + //Override for the user_toolbar menu items + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.offline_toolbar_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + //checks the id of the item, if the item id matches a case id then the code in that case block will execute + switch(item.getItemId()){ + + case(R.id.item_settings): + + Intent settings_i = new Intent(Offline_Map.this, Settings.class); + settings_i.putExtra("userType", Login.userType.NONE); + startActivity(settings_i); + return true; + + } + + return super.onOptionsItemSelected(item); + } + + +} diff --git a/src/main/java/com/example/liliyayankova/unirides/Profile.java b/src/main/java/com/example/liliyayankova/unirides/Profile.java new file mode 100644 index 0000000000000000000000000000000000000000..95b4ff885e79ec15afae5af1b3a29c298bc4905e --- /dev/null +++ b/src/main/java/com/example/liliyayankova/unirides/Profile.java @@ -0,0 +1,121 @@ +package com.example.liliyayankova.unirides; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.Button; +import android.widget.Toast; + +public class Profile extends AppCompatActivity { + + //TODO: layout and functionality of profile activity needs to be done! + + private boolean isDriver; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_profile); + + //assume the user is a passenger (isDriver = false) unless bundle extra userType value is DRIVER + isDriver = false; + + /* checking if there are any bundle extras (should be the userType) */ + if(getIntent().getExtras() != null) { + //setting userType to this result (DRIVER or PASSENGER) + if(getIntent().getExtras().get("userType") == Login.userType.DRIVER){ + isDriver = true; + } + } + + //setting the user_toolbar layout as the action bar + Toolbar toolbar = findViewById(R.id.toolbar); + try { + setSupportActionBar(toolbar); + } catch (Exception e) { + Log.e("TOOLBAR", e.toString()); + } + + Button camera_button = findViewById(R.id.profile_pic); + camera_button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //open camera? + } + }); + } + + //Override for the user_toolbar menu items + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.toolbar_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + //checks the id of the item, if the item id matches a case id then the code in that case block will execute + switch(item.getItemId()){ + + case(R.id.item_home): + + if (isDriver) { + Intent home_i = new Intent(Profile.this, Driver_Main.class); + startActivity(home_i); + return true; + }else{ + Intent home_i = new Intent(Profile.this, User_Main.class); + startActivity(home_i); + return true; + } + + + case(R.id.item_logout): + + /* + TODO: + Possibly add a way to log out here? (not sure if we are even tracking the login instance + within each activity? as far as I understand the login just gets you to the next activity + however if you "logout" and just press the back button after it takes you back to the homepage + it will act as if you are still logged in when you reenter). + for now i have just set it so it goes back to the homepage (where you can register or login). + */ + + Toast.makeText(Profile.this, "successfully logged out", Toast.LENGTH_SHORT).show(); + Intent logout_i = new Intent(Profile.this, Homepage.class); + startActivity(logout_i); + + return true; + + case(R.id.item_profile): + + //do nothing (we're already in settings) + return true; + + case(R.id.item_settings): + + Intent settings_i = new Intent(Profile.this, Settings.class); + + if(isDriver){ + settings_i.putExtra("userType", Login.userType.DRIVER); + }else{ + settings_i.putExtra("userType", Login.userType.PASSENGER); + } + + startActivity(settings_i); + + return true; + + } + + return super.onOptionsItemSelected(item); + } +} diff --git a/src/main/java/com/example/liliyayankova/unirides/Register.java b/src/main/java/com/example/liliyayankova/unirides/Register.java index b1b5fb5ae5fd99ac6745592a4fff37b6f6990e6d..394b2f71e38d842950afef572dd9776c02d1f4f4 100644 --- a/src/main/java/com/example/liliyayankova/unirides/Register.java +++ b/src/main/java/com/example/liliyayankova/unirides/Register.java @@ -1,28 +1,76 @@ package com.example.liliyayankova.unirides; +import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; import android.widget.Button; -import android.widget.EditText; public class Register extends AppCompatActivity { - private EditText forename; - private EditText surname; - private EditText email; - private EditText password; - private EditText age; - private Button register; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); - this.forename = (EditText) findViewById(R.id.forename); - this.surname = (EditText) findViewById(R.id.surname); - this.email = (EditText) findViewById(R.id.email); - this.password = (EditText) findViewById(R.id.password); - this.age = (EditText) findViewById(R.id.age); - this.register = (Button) findViewById(R.id.signup); + //setting the user_toolbar layout as the action bar + Toolbar toolbar = findViewById(R.id.toolbar); + try { + setSupportActionBar(toolbar); + } catch (Exception e) { + Log.e("TOOLBAR", e.toString()); + } + + Button user_register = findViewById(R.id.user_signup); + Button driver_register = findViewById(R.id.driver_signup); + + //user button listener + user_register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent i = new Intent(Register.this, User_Register.class); + startActivity(i); + } + }); + + //driver button listener + driver_register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent i = new Intent(Register.this, Driver_Register.class); + startActivity(i); + } + }); + } + + //Override for the user_toolbar menu items + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.offline_toolbar_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + //checks the id of the item, if the item id matches a case id then the code in that case block will execute + switch(item.getItemId()){ + + case(R.id.item_settings): + + Intent settings_i = new Intent(Register.this, Settings.class); + settings_i.putExtra("userType", Login.userType.NONE); + startActivity(settings_i); + return true; + + } + + return super.onOptionsItemSelected(item); } } diff --git a/src/main/java/com/example/liliyayankova/unirides/Route.java b/src/main/java/com/example/liliyayankova/unirides/Route.java new file mode 100644 index 0000000000000000000000000000000000000000..8ce8969b15fc4fa539fa3181df4ccfcf3448bf8b --- /dev/null +++ b/src/main/java/com/example/liliyayankova/unirides/Route.java @@ -0,0 +1,89 @@ +package com.example.liliyayankova.unirides; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.widget.Toast; + +public class Route extends AppCompatActivity { + + //TODO: This entire activity for creating and posting routes needs to be done. + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_route); + + //setting the user_toolbar layout as the action bar + Toolbar toolbar = findViewById(R.id.toolbar); + try { + setSupportActionBar(toolbar); + } catch (Exception e) { + Log.e("TOOLBAR", e.toString()); + } + + } + + //Override for the user_toolbar menu items + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.toolbar_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + //checks the id of the item, if the item id matches a case id then the code in that case block will execute + switch(item.getItemId()){ + + case(R.id.item_home): + + Intent home_i = new Intent(Route.this, Driver_Main.class); + startActivity(home_i); + return true; + + + case(R.id.item_logout): + + /* + TODO: + Possibly add a way to log out here? (not sure if we are even tracking the login instance + within each activity? as far as I understand the login just gets you to the next activity + however if you "logout" and just press the back button after it takes you back to the homepage + it will act as if you are still logged in when you reenter). + for now i have just set it so it goes back to the homepage (where you can register or login). + */ + + Toast.makeText(Route.this, "successfully logged out", Toast.LENGTH_SHORT).show(); + Intent logout_i = new Intent(Route.this, Homepage.class); + startActivity(logout_i); + + return true; + + case(R.id.item_profile): + + Intent profile_i = new Intent(Route.this, Profile.class); + profile_i.putExtra("userType", Login.userType.DRIVER); + startActivity(profile_i); + + return true; + + case(R.id.item_settings): + + Intent settings_i = new Intent(Route.this, Settings.class); + settings_i.putExtra("userType", Login.userType.DRIVER); + startActivity(settings_i); + return true; + + } + + return super.onOptionsItemSelected(item); + } +} diff --git a/src/main/java/com/example/liliyayankova/unirides/Settings.java b/src/main/java/com/example/liliyayankova/unirides/Settings.java new file mode 100644 index 0000000000000000000000000000000000000000..ff743fb627967900cb1cd33537e8c174fc0c1ed7 --- /dev/null +++ b/src/main/java/com/example/liliyayankova/unirides/Settings.java @@ -0,0 +1,225 @@ +package com.example.liliyayankova.unirides; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.CompoundButton; +import android.widget.Spinner; +import android.widget.Toast; +import android.widget.ToggleButton; + +public class Settings extends AppCompatActivity { + + private boolean isDriver; + private boolean isLoggedIn; + private boolean isSoundOn; + + private ToggleButton sound; + private Spinner language; + private Spinner save_location; + private Button save_button; + + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_settings); + + /* + * assume the user is a passenger (isDriver = false) unless bundle extra userType value is DRIVER + * also assume that the user is logged in until proven wrong + */ + isDriver = false; + isLoggedIn = true; + + /* checking if there are any bundle extras (should be the userType) */ + if(getIntent().getExtras() != null) { + //setting userType to this result (DRIVER or PASSENGER) + if(getIntent().getExtras().get("userType") == Login.userType.DRIVER){ + isDriver = true; + } + //if coming from the homepage (not signed in) set logged in to false + if(getIntent().getExtras().get("userType") == Login.userType.NONE){ + isLoggedIn = false; + } + } + + //setting the user_toolbar layout as the action bar + Toolbar toolbar = findViewById(R.id.toolbar); + try { + setSupportActionBar(toolbar); + } catch (Exception e) { + Log.e("TOOLBAR", e.toString()); + } + + this.language = findViewById(R.id.language_spinner); + ArrayAdapter<CharSequence> l_adapter = ArrayAdapter.createFromResource(this, + R.array.languages, android.R.layout.simple_spinner_item); + l_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + language.setAdapter(l_adapter); + + this.save_location = findViewById(R.id.save_location_spinner); + ArrayAdapter<CharSequence> s_adapter = ArrayAdapter.createFromResource(this, + R.array.save_locations, android.R.layout.simple_spinner_item); + s_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + save_location.setAdapter(s_adapter); + + this.sound = findViewById(R.id.sound_toggle); + this.sound.setChecked(isSoundOn); // set the current state of a toggle button + this.sound.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + //set isSoundOn to checked value (on or off) + isSoundOn = isChecked; + } + }); + + //if no settings file found, set to default values + if(!loadSettings()){ + sound.setChecked(true); + save_location.setSelection(0); + language.setSelection(0); + } + + + this.save_button = findViewById(R.id.save_button); + this.save_button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //call method saveSettings + if(saveSettings() == true) { + + if (isLoggedIn) { + if (isDriver) { + Intent D_home_i = new Intent(Settings.this, Driver_Main.class); + startActivity(D_home_i); + } else { + Intent U_home_i = new Intent(Settings.this, User_Main.class); + startActivity(U_home_i); + } + } else { + Intent home_i = new Intent(Settings.this, Homepage.class); + startActivity(home_i); + } + }else{ + Toast.makeText(Settings.this, "Failed to save settings", Toast.LENGTH_SHORT).show(); + } + } + }); + } + + //TODO: save settings to device or database + public boolean saveSettings(){ + + //if save is successful -> return true + return true; + + //if not successful -> return false + } + + //TODO: load settings from device or database + public boolean loadSettings(){ + + //if file found -> extract values -> return true + + //if no file found -> return false + return false; + } + + //Override for the user_toolbar menu items + @Override + public boolean onCreateOptionsMenu(Menu menu) { + + //setting toolbar options depending on user logged in (offline or online) + if(isLoggedIn){ + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.toolbar_menu, menu); + return true; + }else { + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.offline_toolbar_menu, menu); + return true; + } + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + /* checks if user is logged in, if not it shows a different toolbar */ + if(isLoggedIn) { + //checks the id of the item, if the item id matches a case id then the code in that case block will execute + switch (item.getItemId()) { + + case (R.id.item_home): + + if (isDriver) { + Intent home_i = new Intent(Settings.this, Driver_Main.class); + startActivity(home_i); + return true; + } else { + Intent home_i = new Intent(Settings.this, User_Main.class); + startActivity(home_i); + return true; + } + + case (R.id.item_logout): + + /* + TODO: + Possibly add a way to log out here? (not sure if we are even tracking the login instance + within each activity? as far as I understand the login just gets you to the next activity + however if you "logout" and just press the back button after it takes you back to the homepage + it will act as if you are still logged in when you reenter). + for now i have just set it so it goes back to the homepage (where you can register or login). + */ + + Toast.makeText(Settings.this, "successfully logged out", Toast.LENGTH_SHORT).show(); + Intent logout_i = new Intent(Settings.this, Homepage.class); + startActivity(logout_i); + + return true; + + case (R.id.item_profile): + + Intent profile_i = new Intent(Settings.this, Profile.class); + + if (isDriver) { + profile_i.putExtra("userType", Login.userType.DRIVER); + } else { + profile_i.putExtra("userType", Login.userType.PASSENGER); + } + + startActivity(profile_i); + + return true; + + case (R.id.item_settings): + + //do nothing (already on the settings page) + return true; + + } + + }else{ + + switch (item.getItemId()){ + + case(R.id.item_settings): + + //do nothing (already on the settings page) + return true; + } + } + + return super.onOptionsItemSelected(item); + } +} diff --git a/src/main/java/com/example/liliyayankova/unirides/User_Main.java b/src/main/java/com/example/liliyayankova/unirides/User_Main.java new file mode 100644 index 0000000000000000000000000000000000000000..b2bb785e00ea2eea4059eff1aeae4a68188178bf --- /dev/null +++ b/src/main/java/com/example/liliyayankova/unirides/User_Main.java @@ -0,0 +1,95 @@ +package com.example.liliyayankova.unirides; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.ImageButton; +import android.widget.Toast; + +public class User_Main extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_user_main); + + //setting the user_toolbar layout as the action bar + Toolbar toolbar = findViewById(R.id.toolbar); + try { + setSupportActionBar(toolbar); + } catch (Exception e) { + Log.e("TOOLBAR", e.toString()); + } + + ImageButton map_button = findViewById(R.id.view_route_button); + map_button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent map_i = new Intent(User_Main.this, Map.class); + startActivity(map_i); + } + }); + + } + + //Override for the user_toolbar menu items + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.toolbar_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + //checks the id of the item, if the item id matches a case id then the code in that case block will execute + switch(item.getItemId()){ + + case(R.id.item_home): + + //already home, so do nothing. + return true; + + case(R.id.item_logout): + + /* + TODO: + Possibly add a way to log out here? (not sure if we are even tracking the login instance + within each activity? as far as I understand the login just gets you to the next activity + however if you "logout" and just press the back button after it takes you back to the homepage + it will act as if you are still logged in when you reenter). + for now i have just set it so it goes back to the homepage (where you can register or login). + */ + + Toast.makeText(User_Main.this, "successfully logged out", Toast.LENGTH_SHORT).show(); + Intent logout_i = new Intent(User_Main.this, Homepage.class); + startActivity(logout_i); + + return true; + + case(R.id.item_profile): + + Intent profile_i = new Intent(User_Main.this, Profile.class); + profile_i.putExtra("userType", Login.userType.PASSENGER); + startActivity(profile_i); + return true; + + case(R.id.item_settings): + + Intent settings_i = new Intent(User_Main.this, Settings.class); + settings_i.putExtra("userType", Login.userType.PASSENGER); + startActivity(settings_i); + return true; + + } + + return super.onOptionsItemSelected(item); + } +} diff --git a/src/main/java/com/example/liliyayankova/unirides/User_Register.java b/src/main/java/com/example/liliyayankova/unirides/User_Register.java new file mode 100644 index 0000000000000000000000000000000000000000..a9b6a311a7ac35a4eb2cb9637561ad65f7c2e500 --- /dev/null +++ b/src/main/java/com/example/liliyayankova/unirides/User_Register.java @@ -0,0 +1,160 @@ +package com.example.liliyayankova.unirides; + +import android.content.Intent; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.text.TextUtils; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.auth.AuthResult; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; +import com.google.firebase.database.DatabaseReference; +import com.google.firebase.database.FirebaseDatabase; + +public class User_Register extends AppCompatActivity { + private EditText forename; + private EditText surname; + private EditText email; + private EditText password; + private EditText age; + private Button sign_up; + + /* Used for Firebase authorisation in creating a new account */ + private FirebaseAuth firebaseAuth; + + /* Allows access to the Firebase Database */ + private FirebaseDatabase firebaseDatabase; + + /* Used to add values to the database */ + private DatabaseReference dbReference; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_user_register); + + //setting the user_toolbar layout as the action bar + Toolbar toolbar = findViewById(R.id.toolbar); + try { + setSupportActionBar(toolbar); + } catch (Exception e) { + Log.e("TOOLBAR", e.toString()); + } + + //makes it so the keyboard doesn't automatically popup! + this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); + + this.forename = (EditText) findViewById(R.id.forename); + this.surname = (EditText) findViewById(R.id.surname); + this.email = (EditText) findViewById(R.id.email); + this.password = (EditText) findViewById(R.id.password); + this.age = (EditText) findViewById(R.id.age); + this.sign_up = (Button) findViewById(R.id.signup_button); + + this.firebaseAuth = FirebaseAuth.getInstance(); + this.firebaseDatabase = FirebaseDatabase.getInstance(); + this.dbReference = firebaseDatabase.getReference(); + + //sign_up button listener + sign_up.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //execute register method + registerClick(view); + } + }); + + + } + + public void registerClick(View v) { + final String forenameText = forename.getText().toString().trim(); + final String surnameText = surname.getText().toString().trim(); + final String emailText = email.getText().toString().trim(); + final String passwordText = password.getText().toString().trim(); + final String ageText = age.getText().toString().trim(); + + Log.d("Email", emailText); + Log.d("Password", passwordText); + + if(TextUtils.isEmpty(forenameText) || TextUtils.isEmpty(surnameText) + || TextUtils.isEmpty(emailText) || TextUtils.isEmpty(passwordText) + || TextUtils.isEmpty(passwordText) || TextUtils.isEmpty(ageText)) { + Toast.makeText(this, "One of the fields is empty!",Toast.LENGTH_SHORT).show(); + + } + + else { + firebaseAuth.createUserWithEmailAndPassword(emailText, passwordText) + .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { + @Override + public void onComplete(@NonNull Task<AuthResult> task) { + if(task.isSuccessful()) { + FirebaseUser user = firebaseAuth.getCurrentUser(); + String userId = user.getUid(); + Toast.makeText(User_Register.this, forenameText,Toast.LENGTH_SHORT).show(); + + // Code to add values into the database + // Only temporary for now, might change these a bit later + dbReference.child("passengers").child(userId).child("first_name").setValue(forenameText); + dbReference.child("passengers").child(userId).child("last_name").setValue(surnameText); + dbReference.child("passengers").child(userId).child("age").setValue(ageText); + dbReference.child("passengers").child(userId).child("email").setValue(emailText); + dbReference.child("passengers").child(userId).child("average_rating").setValue(0.0); + + + //finish(); + Toast.makeText(User_Register.this, "registration successful",Toast.LENGTH_SHORT).show(); + Intent home = new Intent(User_Register.this, Homepage.class); + startActivity(home); + + } + else { + Toast.makeText(User_Register.this, "registration not successful",Toast.LENGTH_SHORT).show(); + } + } + }); + } + + } + + //Override for the user_toolbar menu items + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.offline_toolbar_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + //checks the id of the item, if the item id matches a case id then the code in that case block will execute + switch(item.getItemId()){ + + case(R.id.item_settings): + + Intent settings_i = new Intent(User_Register.this, Settings.class); + settings_i.putExtra("userType", Login.userType.NONE); + startActivity(settings_i); + return true; + + } + + return super.onOptionsItemSelected(item); + } + +} diff --git a/src/main/res/drawable/ic_home_black_24dp.xml b/src/main/res/drawable/ic_home_black_24dp.xml new file mode 100644 index 0000000000000000000000000000000000000000..30296ba99b433cc58b06ad27b91c45f8d7dc011b --- /dev/null +++ b/src/main/res/drawable/ic_home_black_24dp.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#FFFFFF" + android:viewportHeight="24.0" android:viewportWidth="24.0" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FF000000" android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/> +</vector> diff --git a/src/main/res/drawable/icon_add_image.png b/src/main/res/drawable/icon_add_image.png new file mode 100644 index 0000000000000000000000000000000000000000..4420bb7af8c7f8c776eec5ffe567c47dc1b82bdb Binary files /dev/null and b/src/main/res/drawable/icon_add_image.png differ diff --git a/src/main/res/drawable/icon_camera.png b/src/main/res/drawable/icon_camera.png new file mode 100644 index 0000000000000000000000000000000000000000..1972a031b6ddf23ba5ef9cf9f277b603c9dc8e06 Binary files /dev/null and b/src/main/res/drawable/icon_camera.png differ diff --git a/src/main/res/drawable/icon_earth.png b/src/main/res/drawable/icon_earth.png new file mode 100644 index 0000000000000000000000000000000000000000..4350d7ccbad3dfa855108c89c48625bcbeeb555e Binary files /dev/null and b/src/main/res/drawable/icon_earth.png differ diff --git a/src/main/res/drawable/icon_map.png b/src/main/res/drawable/icon_map.png new file mode 100644 index 0000000000000000000000000000000000000000..06103e9a61288ad56266018b03fc3652922aafdf Binary files /dev/null and b/src/main/res/drawable/icon_map.png differ diff --git a/src/main/res/drawable/icon_plus.png b/src/main/res/drawable/icon_plus.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5cf37db95903626b318578e382569128dbe93d Binary files /dev/null and b/src/main/res/drawable/icon_plus.png differ diff --git a/src/main/res/drawable/icon_settings.png b/src/main/res/drawable/icon_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..46961d6d2745da8b580d93f1dfb3ea0073e1d351 Binary files /dev/null and b/src/main/res/drawable/icon_settings.png differ diff --git a/src/main/res/drawable/icon_users.png b/src/main/res/drawable/icon_users.png new file mode 100644 index 0000000000000000000000000000000000000000..385010ba5eb013b9abcb520b267cba13f0f522d3 Binary files /dev/null and b/src/main/res/drawable/icon_users.png differ diff --git a/src/main/res/drawable/logo_hd.png b/src/main/res/drawable/logo_hd.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3fed179f1a407ea84858fe016f9d39ca659bfd Binary files /dev/null and b/src/main/res/drawable/logo_hd.png differ diff --git a/src/main/res/layout/activity_driver_main.xml b/src/main/res/layout/activity_driver_main.xml new file mode 100644 index 0000000000000000000000000000000000000000..77d46787a05cdebfc12e7acf0a284babb1de2070 --- /dev/null +++ b/src/main/res/layout/activity_driver_main.xml @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/common_google_signin_btn_text_dark_pressed" + android:orientation="vertical" + tools:context=".User_Main"> + + <include + android:id="@+id/toolbar" + layout="@layout/user_toolbar" /> + + <ImageView + android:id="@+id/app_logo_image" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:contentDescription="@string/app_name" + app:srcCompat="@drawable/logo_hd" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="2" + android:orientation="horizontal"> + + <ImageButton + android:id="@+id/view_route_button" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="30dp" + android:layout_weight="1" + android:background="@color/common_google_signin_btn_text_dark_disabled" + android:contentDescription="@string/view_routes" + android:scaleType="fitCenter" + android:src="@drawable/icon_map" + android:text="@string/title_activity_map" /> + + <ImageButton + android:id="@+id/create_route_button" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="30dp" + android:layout_weight="1" + android:background="@color/common_google_signin_btn_text_dark_disabled" + android:contentDescription="@string/create_route" + android:scaleType="fitCenter" + android:src="@drawable/icon_plus" + android:text="@string/title_activity_map" /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="10dp" + android:layout_weight="0" + android:orientation="horizontal"> + + <TextView + android:id="@+id/view_route_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center" + android:text="@string/view_routes" + android:textAllCaps="false" + android:textSize="30sp" /> + + <TextView + android:id="@+id/create_route_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center" + android:text="@string/create_route" + android:textAllCaps="false" + android:textSize="30sp" /> + + </LinearLayout> + +</LinearLayout> \ No newline at end of file diff --git a/src/main/res/layout/activity_driver_register.xml b/src/main/res/layout/activity_driver_register.xml new file mode 100644 index 0000000000000000000000000000000000000000..e539470580a1f03919eaf27fce78fdb181b3c0a5 --- /dev/null +++ b/src/main/res/layout/activity_driver_register.xml @@ -0,0 +1,134 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <include + android:id="@+id/toolbar" + layout="@layout/user_toolbar" /> + + + <TextView + android:id="@+id/driver_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginTop="50dp" + android:text="@string/driver_register" + android:textSize="30sp" + android:textStyle="bold" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1" + android:gravity="center" + android:orientation="vertical" + android:padding="10dp"> + + <EditText + android:id="@+id/forename" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/name" + android:inputType="text" /> + + <EditText + android:id="@+id/surname" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/lastname" + android:inputType="text" /> + + <EditText + android:id="@+id/email" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/prompt_email" + android:inputType="textEmailAddress" /> + + <EditText + android:id="@+id/password" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/prompt_password" + android:inputType="textPassword" /> + + <EditText + android:id="@+id/age" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/prompt_age" + android:inputType="number" /> + + <EditText + android:id="@+id/car_model" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/car_model" + android:inputType="text" /> + + <EditText + android:id="@+id/license_plate" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/licence_plate" + android:inputType="text" /> + + <EditText + android:id="@+id/time_driving" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/time_driving" + android:inputType="text" /> + + <!-- Potentially temporary --> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1.7" + android:orientation="vertical" + android:padding="10dp"> + + <TextView + android:id="@+id/tickbox_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="5dp" + android:text="@string/tickbox_text" + android:textSize="14sp" + android:textStyle="bold" /> + + <CheckBox + android:id="@+id/checkBox_student" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/student_confirmation" /> + + <CheckBox + android:id="@+id/checkBox_TandC" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/terms_and_conditions" /> + + </LinearLayout> + + <Button + android:id="@+id/signup_button" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="20dp" + android:layout_marginEnd="20dp" + android:layout_marginBottom="10dp" + android:background="@color/colorPrimaryDark" + android:text="@string/sign" + android:textColor="#FFFFFF" /> + + +</LinearLayout> + + + diff --git a/src/main/res/layout/activity_homepage.xml b/src/main/res/layout/activity_homepage.xml index 8fe919fe6ffcd041561daa22c05737e4e831785f..3fb0467506eb9dbf614c929805409810133a8ea0 100644 --- a/src/main/res/layout/activity_homepage.xml +++ b/src/main/res/layout/activity_homepage.xml @@ -1,61 +1,112 @@ <?xml version="1.0" encoding="utf-8"?> -<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".Homepage"> + android:layout_weight="1" + android:background="@color/ic_launcher_background" + android:gravity="center_horizontal" + android:orientation="vertical" + tools:context=".Login"> + + <include + android:id="@+id/toolbar" + layout="@layout/user_toolbar" /> + + <ImageView + android:id="@+id/imageView4" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1.3" + android:contentDescription="@string/app_logo" + android:src="@drawable/logo_hd" + tools:layout_editor_absoluteX="24dp" + tools:layout_editor_absoluteY="23dp" /> <TextView android:id="@+id/welcome" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" + android:gravity="center" android:text="@string/welcome" + android:textAlignment="center" android:textAllCaps="true" - android:textStyle="bold|italic" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.093" /> + android:textColor="@color/colorPrimary" + android:textSize="24sp" + android:textStyle="bold|italic" /> <TextView android:id="@+id/subh" - android:layout_width="wrap_content" - android:layout_height="26dp" - android:text="@string/subheading" - android:textStyle="italic" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintHorizontal_bias="0.502" - app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.191" /> - - <Button - android:id="@+id/registerB" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/register" - android:textAllCaps="false" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintHorizontal_bias="0.78" - app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.501" /> - - <Button - android:id="@+id/loginB" - android:layout_width="wrap_content" + android:gravity="top" + android:text="@string/subheading" + android:textAlignment="center" + android:textColor="@color/colorPrimary" + android:textSize="18sp" + android:textStyle="italic" /> + + <ImageButton + android:id="@+id/offline_map" + android:layout_width="200dp" + android:layout_height="200dp" + android:layout_gravity="center" + android:layout_marginTop="30dp" + android:contentDescription="@string/offline_map" + android:scaleType="fitCenter" + android:src="@drawable/icon_map" /> + + <TextView + android:id="@+id/map_title" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/login" - android:textAllCaps="false" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintHorizontal_bias="0.182" - app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.501" /> - -</android.support.constraint.ConstraintLayout> \ No newline at end of file + android:fontFamily="sans-serif" + android:gravity="top" + android:text="@string/offline_map" + android:textAlignment="center" + android:textAppearance="@style/TextAppearance.AppCompat.Medium" + android:textColor="@color/colorPrimary" + android:textSize="18sp" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1.5" + android:gravity="center" + android:orientation="horizontal"> + + <Button + android:id="@+id/loginB" + style="@style/Widget.AppCompat.Button.Borderless.Colored" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginStart="50dp" + android:layout_marginTop="70dp" + android:layout_marginEnd="25dp" + android:layout_marginBottom="50dp" + android:layout_weight="1" + android:background="@color/colorPrimary" + android:text="@string/login" + android:textAllCaps="false" + android:textColor="@color/ic_launcher_background" + android:textColorLink="@color/ic_launcher_background" /> + + <Button + android:id="@+id/registerB" + style="@style/Widget.AppCompat.Button.Borderless.Colored" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginStart="25dp" + android:layout_marginTop="70dp" + android:layout_marginEnd="50dp" + android:layout_marginBottom="50dp" + android:layout_weight="1" + android:background="@color/colorPrimaryDark" + android:text="@string/register" + android:textAllCaps="false" + android:textColor="@color/ic_launcher_background" + android:textColorLink="@color/ic_launcher_background" /> + </LinearLayout> + +</LinearLayout> \ No newline at end of file diff --git a/src/main/res/layout/activity_login.xml b/src/main/res/layout/activity_login.xml index 7de6e9f85112c3621a8d32472c1b40e95d4fc33f..3c76f7e7b073693c6e9db9dd214d4a826763470c 100644 --- a/src/main/res/layout/activity_login.xml +++ b/src/main/res/layout/activity_login.xml @@ -3,14 +3,14 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:gravity="center_horizontal" + android:gravity="center" android:orientation="vertical" - android:paddingLeft="@dimen/activity_horizontal_margin" - android:paddingTop="@dimen/activity_vertical_margin" - android:paddingRight="@dimen/activity_horizontal_margin" - android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".Login"> + <include + android:id="@+id/toolbar" + layout="@layout/user_toolbar" /> + <!-- Login progress --> <ProgressBar android:id="@+id/login_progress" @@ -23,12 +23,16 @@ <ScrollView android:id="@+id/login_form" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:layout_weight="1" + android:foregroundGravity="center" + android:padding="10dp"> <LinearLayout android:id="@+id/email_login_form" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_gravity="center" android:orientation="vertical"> <android.support.design.widget.TextInputLayout @@ -42,7 +46,8 @@ android:hint="@string/prompt_email" android:inputType="textEmailAddress" android:maxLines="1" - android:singleLine="true" /> + android:singleLine="true" + android:text="driv3r@surrey.ac.uk" /> </android.support.design.widget.TextInputLayout> @@ -60,7 +65,8 @@ android:imeOptions="actionUnspecified" android:inputType="textPassword" android:maxLines="1" - android:singleLine="true" /> + android:singleLine="true" + android:text="qwerty" /> </android.support.design.widget.TextInputLayout> @@ -70,9 +76,33 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" + android:background="@color/colorPrimary" android:text="@string/action_sign_in" + android:textColor="@color/ic_launcher_background" android:textStyle="bold" /> </LinearLayout> </ScrollView> + + <TextView + android:id="@+id/hint_title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Easy Logins for Testing (will be removed later!)" + android:textSize="24sp" + android:textStyle="bold" /> + + <TextView + android:id="@+id/hint_for_tests" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Passenger: Username = passenger@surrey.ac.uk, password = password" + android:textSize="24sp" /> + + <TextView + android:id="@+id/hint_for_tests2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Driver: Username = driv3r@surrey.ac.uk, password = qwerty" + android:textSize="24sp" /> </LinearLayout> \ No newline at end of file diff --git a/src/main/res/layout/activity_map.xml b/src/main/res/layout/activity_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..1e48ff9697cd6f7a6bf89f454116942dde7900a4 --- /dev/null +++ b/src/main/res/layout/activity_map.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + android:orientation="vertical" + tools:context=".Map"> + + <include + android:id="@+id/toolbar" + layout="@layout/user_toolbar" /> + + <fragment + android:id="@+id/map" + android:name="com.google.android.gms.maps.SupportMapFragment" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".Map" /> + + + +</LinearLayout> \ No newline at end of file diff --git a/src/main/res/layout/activity_offline__map.xml b/src/main/res/layout/activity_offline__map.xml new file mode 100644 index 0000000000000000000000000000000000000000..6482bec24520f2f6ade80a10f140c57752175a67 --- /dev/null +++ b/src/main/res/layout/activity_offline__map.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/common_google_signin_btn_text_dark_default" + android:gravity="center" + android:orientation="vertical" + tools:context=".Offline_Map"> + + <include + android:id="@+id/toolbar" + layout="@layout/user_toolbar" /> + + <fragment + android:id="@+id/map" + android:name="com.google.android.gms.maps.SupportMapFragment" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1" + tools:context=".Offline_Map" /> + + <Button + android:id="@+id/back_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/common_google_signin_btn_icon_light_normal_background" + android:backgroundTint="@color/common_google_signin_btn_text_dark_default" + android:text="@string/back" /> + + +</LinearLayout> \ No newline at end of file diff --git a/src/main/res/layout/activity_profile.xml b/src/main/res/layout/activity_profile.xml new file mode 100644 index 0000000000000000000000000000000000000000..46fe79ca6ce7f884b36bc71bb092e39acbcc33fd --- /dev/null +++ b/src/main/res/layout/activity_profile.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + tools:context=".Profile"> + + <include + android:id="@+id/toolbar" + layout="@layout/user_toolbar" /> + + <TextView + android:id="@+id/profile_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_margin="20dp" + android:gravity="center" + android:text="@string/profile" + android:textSize="30sp" /> + + <Button + android:id="@+id/profile_pic" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="40dp" + android:text="@string/take_pic" + android:textAllCaps="false" /> + + <ImageView + android:id="@+id/profile_image" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="3" + android:contentDescription="@string/profile" + app:srcCompat="@drawable/icon_users" /> + + <ImageView + android:id="@+id/picture_taken" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginHorizontal="100dp" /> + +</LinearLayout> \ No newline at end of file diff --git a/src/main/res/layout/activity_register.xml b/src/main/res/layout/activity_register.xml index ef9fec6e35d22ef04421fe5275e6ad25304b4c1e..e35c92a6dceaa3ef7f821679fbfe16cf6346c563 100644 --- a/src/main/res/layout/activity_register.xml +++ b/src/main/res/layout/activity_register.xml @@ -1,58 +1,64 @@ <?xml version="1.0" encoding="utf-8"?> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_height="match_parent" +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:gravity="center" + android:layout_height="match_parent" android:orientation="vertical" - android:padding="10dp" > + tools:context=".Register"> - <EditText - android:id="@+id/forename" - android:layout_height="wrap_content" - android:layout_width="match_parent" - android:text="@string/name" - /> + <include + android:id="@+id/toolbar" + layout="@layout/user_toolbar" /> - <EditText - android:id="@+id/surname" - android:layout_height="wrap_content" + <TextView + android:id="@+id/title_text" android:layout_width="match_parent" - android:text="@string/lastname" - /> - - <EditText - android:id="@+id/email" android:layout_height="wrap_content" - android:layout_width="match_parent" - android:text="@string/prompt_email" - /> + android:layout_weight="1" + android:gravity="center" + android:text="@string/register" + android:textAllCaps="false" + android:textStyle="bold" + android:textSize="30sp" /> - <EditText - android:id="@+id/password" - android:layout_height="wrap_content" + <TextView + android:id="@+id/info_text" android:layout_width="match_parent" - android:text="@string/prompt_password" - /> - - <EditText - android:id="@+id/age" android:layout_height="wrap_content" + android:layout_margin="20dp" + android:layout_weight="0.5" + android:text="@string/register_info" + android:textAlignment="center" + android:textSize="18sp" /> + + <Button + android:id="@+id/user_signup" android:layout_width="match_parent" - android:text="@string/prompt_age" - /> + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:layout_margin="20dp" + android:layout_weight="1" + android:background="@color/colorPrimary" + android:gravity="center" + android:text="@string/user_register" + android:textAllCaps="true" + android:textColor="@color/ic_launcher_background" + android:textStyle="bold" /> <Button - android:id="@+id/signup" - android:layout_width="wrap_content" + android:id="@+id/driver_signup" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/sign" - android:textAllCaps="false" - android:layout_marginTop="16dp" - android:textStyle="bold"/> + android:layout_gravity="center_vertical" + android:layout_margin="20dp" + android:layout_weight="1" + android:background="@color/colorPrimaryDark" + android:gravity="center" + android:text="@string/driver_register" + android:textAllCaps="true" + android:textColor="@color/ic_launcher_background" + android:textStyle="bold" /> </LinearLayout> - - - diff --git a/src/main/res/layout/activity_route.xml b/src/main/res/layout/activity_route.xml new file mode 100644 index 0000000000000000000000000000000000000000..9bfa69c17399f4da93a03e33de6b9f3376b8f92e --- /dev/null +++ b/src/main/res/layout/activity_route.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + tools:context=".Settings"> + + <include + android:id="@+id/toolbar" + layout="@layout/user_toolbar" /> + + <TextView + android:id="@+id/create_route_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_margin="20dp" + android:gravity="center" + android:text="@string/create_route" + android:textSize="30sp" /> + + +</LinearLayout> \ No newline at end of file diff --git a/src/main/res/layout/activity_settings.xml b/src/main/res/layout/activity_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..d55a1a8821027516c667a41cbeb102fb31a8ac6a --- /dev/null +++ b/src/main/res/layout/activity_settings.xml @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + tools:context=".Settings"> + + <include + android:id="@+id/toolbar" + layout="@layout/user_toolbar" /> + + <TextView + android:id="@+id/settings_text" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="20dp" + android:layout_weight="1.5" + android:gravity="center" + android:text="@string/settings" + android:textSize="30sp" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1" + android:orientation="vertical" + android:padding="10dp"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="10dp" + android:layout_weight="1" + android:orientation="horizontal"> + + <TextView + android:id="@+id/sound_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/sound" /> + + <ToggleButton + android:id="@+id/sound_toggle" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/sound" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="10dp" + android:layout_weight="1" + android:orientation="horizontal"> + + <TextView + android:id="@+id/language_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/language" /> + + <Spinner + android:id="@+id/language_spinner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="10dp" + android:layout_weight="1" + android:orientation="horizontal"> + + <TextView + android:id="@+id/save_location_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/save_location" /> + + <Spinner + android:id="@+id/save_location_spinner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" /> + + </LinearLayout> + </LinearLayout> + + <Button + android:id="@+id/save_button" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_margin="20dp" + android:background="@color/colorPrimaryDark" + android:text="@string/save" + android:textColor="@color/common_google_signin_btn_text_dark_default" /> + +</LinearLayout> \ No newline at end of file diff --git a/src/main/res/layout/activity_user_main.xml b/src/main/res/layout/activity_user_main.xml new file mode 100644 index 0000000000000000000000000000000000000000..e70cdb326e124921d7ec1aaac8a1af5bf14a5cf7 --- /dev/null +++ b/src/main/res/layout/activity_user_main.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/common_google_signin_btn_text_dark_pressed" + android:orientation="vertical" + tools:context=".User_Main"> + + <include + android:id="@+id/toolbar" + layout="@layout/user_toolbar" /> + + <ImageView + android:id="@+id/app_logo_image" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:contentDescription="@string/app_name" + app:srcCompat="@drawable/logo_hd" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="2" + android:orientation="horizontal"> + + <ImageButton + android:id="@+id/view_route_button" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center" + android:layout_marginStart="20dp" + android:layout_marginEnd="20dp" + android:background="@color/common_google_signin_btn_text_dark_disabled" + android:contentDescription="@string/view_routes" + android:scaleType="fitCenter" + android:src="@drawable/icon_map" + android:text="@string/title_activity_map" /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="10dp" + android:layout_weight="0" + android:orientation="horizontal"> + + <TextView + android:id="@+id/view_route_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:text="@string/view_routes" + android:textAllCaps="false" + android:textSize="30sp" /> + + </LinearLayout> + +</LinearLayout> \ No newline at end of file diff --git a/src/main/res/layout/activity_user_register.xml b/src/main/res/layout/activity_user_register.xml new file mode 100644 index 0000000000000000000000000000000000000000..ecf00eadc38e8a873a215c42b022054fa4dda8aa --- /dev/null +++ b/src/main/res/layout/activity_user_register.xml @@ -0,0 +1,113 @@ + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <include + android:id="@+id/toolbar" + layout="@layout/user_toolbar" /> + + <TextView + android:id="@+id/user_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginTop="50dp" + android:text="@string/user_register" + android:textSize="30sp" + android:textStyle="bold" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1.2" + android:gravity="center" + android:padding="10dp" + android:orientation="vertical"> + + <EditText + android:id="@+id/forename" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/name" + android:inputType="text" /> + + <EditText + android:id="@+id/surname" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/lastname" + android:inputType="text" /> + + <EditText + android:id="@+id/email" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/prompt_email" + android:inputType="textEmailAddress" /> + + <EditText + android:id="@+id/password" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/prompt_password" + android:inputType="textPassword" /> + + <EditText + android:id="@+id/age" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/prompt_age" + android:inputType="number" /> + + <!-- Potentially temporary --> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="2" + android:padding="10dp" + android:orientation="vertical"> + + <TextView + android:id="@+id/tickbox_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="5dp" + android:text="@string/tickbox_text" + android:textSize="14sp" + android:textStyle="bold" /> + + <CheckBox + android:id="@+id/checkBox_student" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/student_confirmation" /> + + <CheckBox + android:id="@+id/checkBox_TandC" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/terms_and_conditions" /> + + </LinearLayout> + + <Button + android:id="@+id/signup_button" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="20dp" + android:layout_marginEnd="20dp" + android:layout_marginBottom="10dp" + android:background="@color/colorPrimary" + android:text="@string/sign" + android:textColor="#FFFFFF" /> + + +</LinearLayout> + + + diff --git a/src/main/res/layout/user_toolbar.xml b/src/main/res/layout/user_toolbar.xml new file mode 100644 index 0000000000000000000000000000000000000000..48fabe1c6b7abff7e81805c0ff56ce5f6f7a77d5 --- /dev/null +++ b/src/main/res/layout/user_toolbar.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/driver_toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:alpha="1" + android:background="@color/colorPrimary" + android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" + app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> + +</android.support.v7.widget.Toolbar> \ No newline at end of file diff --git a/src/main/res/menu/offline_toolbar_menu.xml b/src/main/res/menu/offline_toolbar_menu.xml new file mode 100644 index 0000000000000000000000000000000000000000..032097545ddaaec52b3e36030378a1c45a7aa10d --- /dev/null +++ b/src/main/res/menu/offline_toolbar_menu.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:android="http://schemas.android.com/apk/res/android"> + + + <item + android:id="@+id/item_settings" + android:contentDescription="@string/settings" + android:icon="@drawable/icon_settings" + android:orderInCategory="3" + android:title="@string/settings" + app:showAsAction="ifRoom" /> + + + +</menu> \ No newline at end of file diff --git a/src/main/res/menu/toolbar_menu.xml b/src/main/res/menu/toolbar_menu.xml new file mode 100644 index 0000000000000000000000000000000000000000..a19f7e97c812349c91bf95712dc2e2154bf65f84 --- /dev/null +++ b/src/main/res/menu/toolbar_menu.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:android="http://schemas.android.com/apk/res/android"> + + <item + android:id="@+id/item_home" + android:contentDescription="@string/home" + android:icon="@drawable/ic_home_black_24dp" + android:orderInCategory="1" + android:title="@string/home" + app:showAsAction="always" /> + + <item + android:id="@+id/item_profile" + android:contentDescription="@string/profile" + android:icon="@drawable/icon_users" + android:orderInCategory="2" + android:title="@string/profile" + app:showAsAction="always" /> + + <item + android:id="@+id/item_settings" + android:contentDescription="@string/settings" + android:icon="@drawable/icon_settings" + android:orderInCategory="3" + android:title="@string/settings" + app:showAsAction="always" /> + + <item + android:id="@+id/item_logout" + android:contentDescription="@string/logout" + android:orderInCategory="4" + android:title="@string/logout" + app:showAsAction="never" /> + + +</menu> \ No newline at end of file diff --git a/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index eca70cfe52eac1ba66ba280a68ca7be8fcf88a16..036d09bc5fd523323794379703c4a111d1e28a04 100644 --- a/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> - <background android:drawable="@drawable/ic_launcher_background" /> - <foreground android:drawable="@drawable/ic_launcher_foreground" /> + <background android:drawable="@color/ic_launcher_background"/> + <foreground android:drawable="@mipmap/ic_launcher_foreground"/> </adaptive-icon> \ No newline at end of file diff --git a/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index eca70cfe52eac1ba66ba280a68ca7be8fcf88a16..036d09bc5fd523323794379703c4a111d1e28a04 100644 --- a/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> - <background android:drawable="@drawable/ic_launcher_background" /> - <foreground android:drawable="@drawable/ic_launcher_foreground" /> + <background android:drawable="@color/ic_launcher_background"/> + <foreground android:drawable="@mipmap/ic_launcher_foreground"/> </adaptive-icon> \ No newline at end of file diff --git a/src/main/res/mipmap-hdpi/ic_launcher.png b/src/main/res/mipmap-hdpi/ic_launcher.png index 898f3ed59ac9f3248734a00e5902736c9367d455..dfcd48c3212b6b0fcb714d75f3d1265989987fff 100644 Binary files a/src/main/res/mipmap-hdpi/ic_launcher.png and b/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..82ce4998189813c6ddbe2bbff1051f8a9afe8d9d Binary files /dev/null and b/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/src/main/res/mipmap-hdpi/ic_launcher_round.png b/src/main/res/mipmap-hdpi/ic_launcher_round.png index dffca3601eba7bf5f409bdd520820e2eb5122c75..d62c33c81c608d675af99e15add78f4687b525b3 100644 Binary files a/src/main/res/mipmap-hdpi/ic_launcher_round.png and b/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/src/main/res/mipmap-mdpi/ic_launcher.png b/src/main/res/mipmap-mdpi/ic_launcher.png index 64ba76f75e9ce021aa3d95c213491f73bcacb597..98f507ad93bb1bc8e87e40d999b32f8e03dd4073 100644 Binary files a/src/main/res/mipmap-mdpi/ic_launcher.png and b/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/src/main/res/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..45512365551f9d766c4155291a5e4c34823a7b83 Binary files /dev/null and b/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/src/main/res/mipmap-mdpi/ic_launcher_round.png b/src/main/res/mipmap-mdpi/ic_launcher_round.png index dae5e082342fcdeee5db8a6e0b27028e2d2808f5..70fe209f63f7b1d23e716055cb0f950541a2c27e 100644 Binary files a/src/main/res/mipmap-mdpi/ic_launcher_round.png and b/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/src/main/res/mipmap-xhdpi/ic_launcher.png b/src/main/res/mipmap-xhdpi/ic_launcher.png index e5ed46597ea8447d91ab1786a34e30f1c26b18bd..24d20241696ffd8aed6d4da446aaba331ca3ea3a 100644 Binary files a/src/main/res/mipmap-xhdpi/ic_launcher.png and b/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..fd9acc45786bcbe3c22a9a89f69bc96eb3fc626a Binary files /dev/null and b/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/src/main/res/mipmap-xhdpi/ic_launcher_round.png index 14ed0af35023e4f1901cf03487b6c524257b8483..70776811385f70324f096f8848ab75166d969e06 100644 Binary files a/src/main/res/mipmap-xhdpi/ic_launcher_round.png and b/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/src/main/res/mipmap-xxhdpi/ic_launcher.png b/src/main/res/mipmap-xxhdpi/ic_launcher.png index b0907cac3bfd8fbfdc46e1108247f0a1055387ec..04d69249f18352d7ded61095d374138985ca1627 100644 Binary files a/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..33d3de89590338d7ad58d9744c180a42c9991da4 Binary files /dev/null and b/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/src/main/res/mipmap-xxhdpi/ic_launcher_round.png index d8ae03154975f397f8ed1b84f2d4bf9783ecfa26..3df52b2b267e3b604e3bebfe757a97f248b4850d 100644 Binary files a/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and b/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 2c18de9e66108411737e910f5c1972476f03ddbf..d361cc8ed2ccf54328c0729680b53f5b280a8731 100644 Binary files a/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..c976574abbb64e2e36d9b4ae30208310d31b6363 Binary files /dev/null and b/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png index beed3cdd2c32af5114a7dc70b9ef5b698eb8797e..89c4702d8ce787b1bb12da4d60de99b02f4eae40 100644 Binary files a/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and b/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/src/main/res/values/colors.xml b/src/main/res/values/colors.xml index 69b22338c6510250df3b43672635120dbce2fa49..940fbf655544ef2eb464e8e8ae3ac6a969fc2d7c 100644 --- a/src/main/res/values/colors.xml +++ b/src/main/res/values/colors.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <color name="colorPrimary">#008577</color> - <color name="colorPrimaryDark">#00574B</color> - <color name="colorAccent">#D81B60</color> + <color name="colorPrimary">#1D3B76</color> + <color name="colorPrimaryDark">#FF280C</color> + <color name="colorAccent">#FFAE98</color> </resources> diff --git a/src/main/res/values/ic_launcher_background.xml b/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000000000000000000000000000000000000..c5d5899fdf0a1b144bf341b29e0c66ba50bbcedd --- /dev/null +++ b/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <color name="ic_launcher_background">#FFFFFF</color> +</resources> \ No newline at end of file diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 0df3ddd8a05394362985c1436d2af96d9a02681a..8fe743463298370bf08a6fad3dfee31b17145ab5 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1,11 +1,27 @@ <resources> + <!-- homepage strings --> <string name="app_name">UniRides</string> <string name="welcome">Welcome to UniRides</string> <string name="subheading">The car sharing app that saves you</string> <string name="login">Log in</string> + <string name="logout">Log out</string> <string name="register">Register</string> + <!-- TODO: remove/refine the register information for choosing between passenger & driver account --> + <string name="register_info"> + "Choose whether you would like to sign up to UniRides as a Driver user or a Passenger user.\n + A driver user can do anything a passenger can do on the app (such as: viewing routes, getting lifts + from other drivers, and reviewing other users) but with the added privileges to setup your own + custom driver routes and post them for other passengers/drivers to see.\n + If you are going to become a driver for UniRides, first of all THANK YOU!\n + Secondly, be sure to have your car details (model, licence plate, etc.) as well as your drivers licence + and pictures of you and the car at the ready!" + </string> + <!-- TODO: add the terms and conditions in as a string! --> + <string name="user_register">User</string> + <string name="driver_register">Driver</string> <string name="title_activity_login">Sign in</string> - <!-- Strings related to login --> + + <!-- Strings related to register/login --> <string name="prompt_email">Email</string> <string name="prompt_password">Password</string> <string name="action_sign_in">Log in</string> @@ -21,4 +37,44 @@ <string name="lastname">Surname</string> <string name="prompt_age">Age</string> <string name="sign">Sign up</string> + <string name="app_logo">App Logo</string> + <string name="tickbox_text">Tick the appropriate boxes:</string> + <string name="student_confirmation">I am a university student or professor</string> + <string name="terms_and_conditions">I agree with UniRides Terms and Conditions</string> + <string name="licence_plate">Licence Plate</string> + <string name="car_model">Car Model</string> + <string name="time_driving">Time Driving</string> + + <!-- main/map activity strings --> + <string name="home">Home</string> + <string name="title_activity_map">Map</string> + <string name="view_routes">View Routes</string> + <string name="create_route">Create New Route</string> + <string name="settings">Settings</string> + <string name="profile">Profile</string> + <string name="offline_map">Offline Map</string> + <string name="back">Back</string> + + <!-- settings activity strings --> + <string name="language">Language</string> + <string name="sound">Sound</string> + <string name="save_location">Save Location</string> + <string name="save">Save</string> + + <!-- spinner values for LANGUAGE --> + <string-array name="languages"> + <item>English</item> + </string-array> + + <!-- spinner values for SAVE_LOCATION --> + <string-array name="save_locations"> + <item>Device</item> + <item>SD Card</item> + </string-array> + <!-- Free for commercial use icon credit for any file in drawable with the "icon_" keyword--> + <string name="icon_credit">Icons made by Smashicons and Roundicons</string> + + <!-- Profile activity --> + <string name="take_pic">Take a picture</string> + </resources> diff --git a/src/main/res/values/styles.xml b/src/main/res/values/styles.xml index 5885930df6d10edf3d6df40d6556297d11f953da..0eb88fe3350eaa944c0c6fe7e949e1cab494e8e8 100644 --- a/src/main/res/values/styles.xml +++ b/src/main/res/values/styles.xml @@ -1,7 +1,7 @@ <resources> <!-- Base application theme. --> - <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> + <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> diff --git a/src/release/res/values/google_maps_api.xml b/src/release/res/values/google_maps_api.xml new file mode 100644 index 0000000000000000000000000000000000000000..1ef79e9f2e292599818e1e59663e66cb62fe2ab5 --- /dev/null +++ b/src/release/res/values/google_maps_api.xml @@ -0,0 +1,20 @@ +<resources> + <!-- + TODO: Before you release your application, you need a Google Maps API key. + + To do this, you can either add your release key credentials to your existing + key, or create a new key. + + Note that this file specifies the API key for the release build target. + If you have previously set up a key for the debug target with the debug signing certificate, + you will also need to set up a key for your release certificate. + + Follow the directions here: + + https://developers.google.com/maps/documentation/android/signup + + Once you have your key (it starts with "AIza"), replace the "google_maps_key" + string in this file. + --> + <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">YOUR_KEY_HERE</string> +</resources> diff --git a/unirides.iml b/unirides.iml new file mode 100644 index 0000000000000000000000000000000000000000..609bd6f3ae67e9d7735ffa5526219985622e64d4 --- /dev/null +++ b/unirides.iml @@ -0,0 +1,200 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module external.linked.project.id="unirides" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4"> + <component name="FacetManager"> + <facet type="android-gradle" name="Android-Gradle"> + <configuration> + <option name="GRADLE_PROJECT_PATH" value=":" /> + </configuration> + </facet> + <facet type="android" name="Android"> + <configuration> + <option name="SELECTED_BUILD_VARIANT" value="debug" /> + <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> + <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> + <afterSyncTasks> + <task>generateDebugSources</task> + </afterSyncTasks> + <option name="ALLOW_USER_CONFIGURATION" value="false" /> + <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> + <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> + <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/src/debug/res;file://$MODULE_DIR$/build/generated/res/google-services/debug;file://$MODULE_DIR$/build/generated/res/resValues/debug" /> + <option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" /> + <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> + </configuration> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> + <output url="file://$MODULE_DIR$/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" /> + <output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" /> + <exclude-output /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/google-services/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> + <excludeFolder url="file://$MODULE_DIR$/build/generated/not_namespaced_r_class_sources" /> + <excludeFolder url="file://$MODULE_DIR$/build/generated/source/r" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundle_manifest" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/duplicate_classes_check" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/external_libs_dex" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_app_manifest" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint-cache" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint_jar" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_jni_libs" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_shaders" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/metadata_feature_manifest" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/processed_res" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/signing_config" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/validate_signing_config" /> + <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> + <excludeFolder url="file://$MODULE_DIR$/build/reports" /> + <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> + </content> + <orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="library" name="Gradle: com.android.support:design:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-ads-identifier:16.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:support-fragment:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:localbroadcastmanager:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-measurement-sdk:16.4.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: android.arch.lifecycle:viewmodel:1.1.1@aar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource:3.0.2@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:loader:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: android.arch.core:runtime:1.1.1@aar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner:1.0.2@aar" level="project" /> + <orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata-core:1.1.1@aar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:cursoradapter:28.0.0@aar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core:3.0.2@aar" level="project" /> + <orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime:1.1.1@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:support-compat:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-measurement-sdk-api:16.4.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.firebase:firebase-auth:16.2.1@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:cardview-v7:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.firebase:firebase-iid:17.0.3@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-measurement-api:16.4.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-location:16.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.firebase:firebase-database-collection:16.0.1@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-measurement-base:16.4.0@aar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-maps:16.1.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-flags:16.0.1@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-basement:16.2.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.firebase:firebase-core:16.0.8@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:support-core-utils:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:recyclerview-v7:28.0.0@aar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:monitor:1.0.2@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-places-placereport:16.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:support-annotations:28.0.0@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:interpolator:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:transition:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata:1.1.1@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.firebase:firebase-analytics:16.4.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:drawerlayout:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:support-v4:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout-solver:1.1.3@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.firebase:firebase-database:16.1.0@aar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: net.sf.kxml:kxml2:2.3.0@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.firebase:firebase-auth-interop:16.0.1@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:documentfile:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-measurement:16.4.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:slidingpanelayout:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:appcompat-v7:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.firebase:firebase-iid-interop:16.0.1@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:collections:28.0.0@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:support-core-ui:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-measurement-impl:16.4.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:asynclayoutinflater:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout:1.1.3@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:print:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-stats:16.0.1@aar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" /> + <orderEntry type="library" name="Gradle: android.arch.core:common:1.1.1@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:versionedparcelable:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-base:16.0.1@aar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:viewpager:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.firebase:firebase-common:16.1.0@aar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" /> + <orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.1.1@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:coordinatorlayout:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:customview:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:swiperefreshlayout:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.firebase:firebase-measurement-connector:17.0.1@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.auto.value:auto-value-annotations:1.6@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:support-media-compat:28.0.0@aar" level="project" /> + <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-tasks:16.0.1@aar" level="project" /> + </component> +</module> \ No newline at end of file