├── .gitignore ├── .gradle ├── 7.0 │ ├── dependencies-accessors │ │ ├── dependencies-accessors.lock │ │ └── gc.properties │ ├── executionHistory │ │ ├── executionHistory.bin │ │ └── executionHistory.lock │ ├── fileChanges │ │ └── last-build.bin │ ├── fileHashes │ │ ├── fileHashes.bin │ │ ├── fileHashes.lock │ │ └── resourceHashesCache.bin │ ├── gc.properties │ └── javaCompile │ │ ├── classAnalysis.bin │ │ ├── jarAnalysis.bin │ │ ├── javaCompile.lock │ │ └── taskHistory.bin ├── buildOutputCleanup │ ├── buildOutputCleanup.lock │ ├── cache.properties │ └── outputFiles.bin ├── checksums │ ├── checksums.lock │ ├── md5-checksums.bin │ └── sha1-checksums.bin ├── configuration-cache │ └── gc.properties └── vcs-1 │ └── gc.properties ├── .idea ├── .gitignore ├── assetWizardSettings.xml ├── compiler.xml ├── deploymentTargetDropDown.xml ├── gradle.xml ├── libraries │ ├── Gradle__androidx_activity_activity_1_3_0_rc01_aar.xml │ ├── Gradle__androidx_activity_activity_compose_1_3_0_rc01_aar.xml │ ├── Gradle__androidx_activity_activity_ktx_1_3_0_rc01_aar.xml │ ├── Gradle__androidx_annotation_annotation_1_2_0.xml │ ├── Gradle__androidx_annotation_annotation_experimental_1_1_0_aar.xml │ ├── Gradle__androidx_appcompat_appcompat_1_3_0_aar.xml │ ├── Gradle__androidx_appcompat_appcompat_resources_1_3_0_aar.xml │ ├── Gradle__androidx_arch_core_core_common_2_1_0.xml │ ├── Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml │ ├── Gradle__androidx_cardview_cardview_1_0_0_aar.xml │ ├── Gradle__androidx_collection_collection_1_1_0.xml │ ├── Gradle__androidx_compose_animation_animation_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_animation_animation_core_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_foundation_foundation_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_foundation_foundation_layout_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_material_material_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_material_material_icons_core_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_material_material_ripple_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_runtime_runtime_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_runtime_runtime_saveable_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_ui_ui_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_ui_ui_geometry_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_ui_ui_graphics_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_ui_ui_test_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_ui_ui_test_junit4_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_ui_ui_text_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_ui_ui_tooling_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_ui_ui_tooling_data_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_ui_ui_tooling_preview_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_ui_ui_unit_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_compose_ui_ui_util_1_0_0_rc01_aar.xml │ ├── Gradle__androidx_constraintlayout_constraintlayout_2_0_1_aar.xml │ ├── Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_1.xml │ ├── Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml │ ├── Gradle__androidx_core_core_1_6_0_aar.xml │ ├── Gradle__androidx_core_core_ktx_1_6_0_aar.xml │ ├── Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml │ ├── Gradle__androidx_customview_customview_1_0_0_aar.xml │ ├── Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml │ ├── Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml │ ├── Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml │ ├── Gradle__androidx_fragment_fragment_1_3_4_aar.xml │ ├── Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml │ ├── Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml │ ├── Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml │ ├── Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml │ ├── Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml │ ├── Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml │ ├── Gradle__androidx_lifecycle_lifecycle_runtime_ktx_2_3_1_aar.xml │ ├── Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml │ ├── Gradle__androidx_lifecycle_lifecycle_viewmodel_compose_1_0_0_alpha06_aar.xml │ ├── Gradle__androidx_lifecycle_lifecycle_viewmodel_ktx_2_3_1_aar.xml │ ├── Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml │ ├── Gradle__androidx_loader_loader_1_0_0_aar.xml │ ├── Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml │ ├── Gradle__androidx_navigation_navigation_common_2_4_0_alpha02_aar.xml │ ├── Gradle__androidx_navigation_navigation_compose_2_4_0_alpha02_aar.xml │ ├── Gradle__androidx_navigation_navigation_runtime_2_4_0_alpha02_aar.xml │ ├── Gradle__androidx_navigation_navigation_runtime_ktx_2_4_0_alpha02_aar.xml │ ├── Gradle__androidx_print_print_1_0_0_aar.xml │ ├── Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml │ ├── Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml │ ├── Gradle__androidx_savedstate_savedstate_ktx_1_1_0_aar.xml │ ├── Gradle__androidx_test_core_1_4_0_aar.xml │ ├── Gradle__androidx_test_espresso_espresso_core_3_4_0_aar.xml │ ├── Gradle__androidx_test_espresso_espresso_idling_resource_3_4_0_aar.xml │ ├── Gradle__androidx_test_ext_junit_1_1_3_aar.xml │ ├── Gradle__androidx_test_monitor_1_4_0_aar.xml │ ├── Gradle__androidx_test_runner_1_4_0_aar.xml │ ├── Gradle__androidx_test_services_storage_1_4_0_aar.xml │ ├── Gradle__androidx_transition_transition_1_2_0_aar.xml │ ├── Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml │ ├── Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml │ ├── Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml │ ├── Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml │ ├── Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml │ ├── Gradle__com_google_android_material_material_1_4_0_aar.xml │ ├── Gradle__com_google_code_findbugs_jsr305_2_0_1.xml │ ├── Gradle__com_squareup_javawriter_2_1_1.xml │ ├── Gradle__javax_inject_javax_inject_1.xml │ ├── Gradle__junit_junit_4_12.xml │ ├── Gradle__junit_junit_4_13_2.xml │ ├── Gradle__org_hamcrest_hamcrest_core_1_3.xml │ ├── Gradle__org_hamcrest_hamcrest_integration_1_3.xml │ ├── Gradle__org_hamcrest_hamcrest_library_1_3.xml │ ├── Gradle__org_jetbrains_annotations_13_0.xml │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_5_10.xml │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_5_10.xml │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_5_10.xml │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_5_10.xml │ ├── Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_5_0.xml │ ├── Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_5_0.xml │ └── Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_test_1_5_0.xml ├── misc.xml ├── modules.xml └── modules │ ├── Lull.iml │ └── app │ └── Lull.app.iml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── example │ │ └── lull │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── ic_launcher-playstore.png │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── lull │ │ │ ├── DetailsScreen.kt │ │ │ ├── FileUtils.kt │ │ │ ├── MainActivity.kt │ │ │ ├── Wallpaper.kt │ │ │ └── ui │ │ │ └── theme │ │ │ ├── Color.kt │ │ │ ├── Shape.kt │ │ │ ├── Theme.kt │ │ │ └── Type.kt │ └── res │ │ ├── drawable │ │ ├── ic_down.xml │ │ ├── ic_info.xml │ │ ├── ic_launcher_foreground.xml │ │ ├── ic_logo.xml │ │ ├── w_bird_over_the_trees.jpg │ │ ├── w_bokeh_full_moon.jpg │ │ ├── w_deers.jpg │ │ ├── w_lonely_sunset.jpg │ │ ├── w_mountain_and_river.jpg │ │ ├── w_mountain_morning.jpg │ │ ├── w_pixel_sky.png │ │ └── w_train_at_midnight.jpg │ │ ├── font │ │ ├── poppins_extrabold.ttf │ │ ├── poppins_light.ttf │ │ └── poppins_regular.ttf │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── values-night │ │ └── themes.xml │ │ ├── values-tr-rTR │ │ └── strings.xml │ │ └── values │ │ ├── colors.xml │ │ ├── ic_launcher_background.xml │ │ ├── strings.xml │ │ └── themes.xml │ └── test │ └── java │ └── com │ └── example │ └── lull │ └── ExampleUnitTest.kt ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── screenshots ├── dark_details.png ├── dark_homepage.png ├── dark_search.png ├── header.png ├── light_details.png ├── light_homepage.png └── light_search.png └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | local.properties 16 | -------------------------------------------------------------------------------- /.gradle/7.0/dependencies-accessors/dependencies-accessors.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/7.0/dependencies-accessors/dependencies-accessors.lock -------------------------------------------------------------------------------- /.gradle/7.0/dependencies-accessors/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/7.0/dependencies-accessors/gc.properties -------------------------------------------------------------------------------- /.gradle/7.0/executionHistory/executionHistory.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/7.0/executionHistory/executionHistory.bin -------------------------------------------------------------------------------- /.gradle/7.0/executionHistory/executionHistory.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/7.0/executionHistory/executionHistory.lock -------------------------------------------------------------------------------- /.gradle/7.0/fileChanges/last-build.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gradle/7.0/fileHashes/fileHashes.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/7.0/fileHashes/fileHashes.bin -------------------------------------------------------------------------------- /.gradle/7.0/fileHashes/fileHashes.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/7.0/fileHashes/fileHashes.lock -------------------------------------------------------------------------------- /.gradle/7.0/fileHashes/resourceHashesCache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/7.0/fileHashes/resourceHashesCache.bin -------------------------------------------------------------------------------- /.gradle/7.0/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/7.0/gc.properties -------------------------------------------------------------------------------- /.gradle/7.0/javaCompile/classAnalysis.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/7.0/javaCompile/classAnalysis.bin -------------------------------------------------------------------------------- /.gradle/7.0/javaCompile/jarAnalysis.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/7.0/javaCompile/jarAnalysis.bin -------------------------------------------------------------------------------- /.gradle/7.0/javaCompile/javaCompile.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/7.0/javaCompile/javaCompile.lock -------------------------------------------------------------------------------- /.gradle/7.0/javaCompile/taskHistory.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/7.0/javaCompile/taskHistory.bin -------------------------------------------------------------------------------- /.gradle/buildOutputCleanup/buildOutputCleanup.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/buildOutputCleanup/buildOutputCleanup.lock -------------------------------------------------------------------------------- /.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Tue Jul 06 01:23:12 EET 2021 2 | gradle.version=7.0 3 | -------------------------------------------------------------------------------- /.gradle/buildOutputCleanup/outputFiles.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/buildOutputCleanup/outputFiles.bin -------------------------------------------------------------------------------- /.gradle/checksums/checksums.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/checksums/checksums.lock -------------------------------------------------------------------------------- /.gradle/checksums/md5-checksums.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/checksums/md5-checksums.bin -------------------------------------------------------------------------------- /.gradle/checksums/sha1-checksums.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/checksums/sha1-checksums.bin -------------------------------------------------------------------------------- /.gradle/configuration-cache/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/configuration-cache/gc.properties -------------------------------------------------------------------------------- /.gradle/vcs-1/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/.gradle/vcs-1/gc.properties -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/assetWizardSettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 320 | 321 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/deploymentTargetDropDown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_activity_activity_1_3_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_activity_activity_compose_1_3_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_activity_activity_ktx_1_3_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_annotation_annotation_1_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_appcompat_appcompat_1_3_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_3_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_animation_animation_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_animation_animation_core_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_foundation_foundation_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_foundation_foundation_layout_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_material_material_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_material_material_icons_core_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_material_material_ripple_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_runtime_runtime_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_runtime_runtime_saveable_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_ui_ui_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_ui_ui_geometry_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_ui_ui_graphics_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_ui_ui_test_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_ui_ui_test_junit4_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_ui_ui_text_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_ui_ui_tooling_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_ui_ui_tooling_data_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_ui_ui_tooling_preview_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_ui_ui_unit_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_compose_ui_ui_util_1_0_0_rc01_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_0_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_core_core_1_6_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_core_core_ktx_1_6_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_fragment_fragment_1_3_4_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_ktx_2_3_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_compose_1_0_0_alpha06_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_ktx_2_3_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_navigation_navigation_common_2_4_0_alpha02_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_navigation_navigation_compose_2_4_0_alpha02_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_navigation_navigation_runtime_2_4_0_alpha02_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_navigation_navigation_runtime_ktx_2_4_0_alpha02_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_savedstate_savedstate_ktx_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_test_core_1_4_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_4_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_4_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_test_ext_junit_1_1_3_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_test_monitor_1_4_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_test_runner_1_4_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_test_services_storage_1_4_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__com_google_android_material_material_1_4_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__javax_inject_javax_inject_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__junit_junit_4_12.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__junit_junit_4_13_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_5_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_5_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_5_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_5_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_5_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_5_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_test_1_5_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/modules/Lull.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/modules/app/Lull.app.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 14 | 16 | 17 | 27 | 30 | 33 | 34 | 35 | 36 | 37 | 38 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Lull 2 | Lull is an Android mobile application made with Jetpack Compose, where you can download wallpapers. 3 | 4 | ## Table of Contents 5 | - [Features](#features) 6 | - [Screenshots](#screenshots) 7 | - [Light Mode](#light-mode) 8 | - [Dark Mode](#dark-mode) 9 | 10 | 11 | ## Features 12 | 13 | - Works with API 21+ 14 | - Used Coroutines in order to achive smooth downloading experience without interfering with the UI. 15 | - Creates seperate folder in the gallery where you can access all the wallpapers that you have downloaded. 16 | - You can search tags or click on a tag in order to see all the wallpapers with it. 17 | - Worked with string resources so it is easy to translate to other languages. 18 | 19 | ## Screenshots 20 | 21 | ### Light Mode 22 | 23 | 24 | ### Dark Mode 25 | 26 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'com.android.application' 3 | id 'kotlin-android' 4 | } 5 | 6 | android { 7 | compileSdk 30 8 | buildToolsVersion "30.0.3" 9 | 10 | defaultConfig { 11 | applicationId "com.example.lull" 12 | minSdk 21 13 | targetSdk 30 14 | versionCode 1 15 | versionName "1.0" 16 | 17 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 18 | vectorDrawables { 19 | useSupportLibrary true 20 | } 21 | } 22 | 23 | buildTypes { 24 | release { 25 | minifyEnabled false 26 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 27 | } 28 | } 29 | compileOptions { 30 | sourceCompatibility JavaVersion.VERSION_1_8 31 | targetCompatibility JavaVersion.VERSION_1_8 32 | } 33 | kotlinOptions { 34 | jvmTarget = '1.8' 35 | useIR = true 36 | } 37 | buildFeatures { 38 | compose true 39 | } 40 | composeOptions { 41 | kotlinCompilerExtensionVersion compose_version 42 | kotlinCompilerVersion kotlin_version 43 | } 44 | } 45 | 46 | dependencies { 47 | implementation "androidx.navigation:navigation-compose:2.4.0-alpha02" 48 | implementation 'androidx.core:core-ktx:1.6.0' 49 | implementation 'androidx.appcompat:appcompat:1.3.0' 50 | implementation 'com.google.android.material:material:1.4.0' 51 | implementation "androidx.compose.ui:ui:$compose_version" 52 | implementation "androidx.compose.material:material:$compose_version" 53 | implementation "androidx.compose.ui:ui-tooling:$compose_version" 54 | implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' 55 | implementation 'androidx.activity:activity-compose:1.3.0-rc01' 56 | testImplementation 'junit:junit:4.+' 57 | androidTestImplementation 'androidx.test.ext:junit:1.1.3' 58 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' 59 | androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version" 60 | implementation "androidx.compose.ui:ui-util:$compose_version" 61 | 62 | 63 | } -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /app/src/androidTest/java/com/example/lull/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.example.lull 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("com.example.lull", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 9 | 16 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/java/com/example/lull/DetailsScreen.kt: -------------------------------------------------------------------------------- 1 | package com.example.lull 2 | 3 | import android.Manifest 4 | import android.content.ContentValues 5 | import android.content.Context 6 | import android.content.pm.PackageManager 7 | import android.graphics.Bitmap 8 | import android.graphics.BitmapFactory 9 | import android.os.Build 10 | import android.os.Environment 11 | import android.provider.MediaStore 12 | import android.widget.Toast 13 | import androidx.activity.compose.ManagedActivityResultLauncher 14 | import androidx.activity.compose.rememberLauncherForActivityResult 15 | import androidx.activity.result.contract.ActivityResultContracts 16 | import androidx.compose.foundation.clickable 17 | import androidx.compose.foundation.layout.* 18 | import androidx.compose.foundation.lazy.LazyRow 19 | import androidx.compose.foundation.lazy.itemsIndexed 20 | import androidx.compose.foundation.shape.RoundedCornerShape 21 | import androidx.compose.material.* 22 | import androidx.compose.material.Icon 23 | import androidx.compose.runtime.Composable 24 | import androidx.compose.ui.Alignment 25 | import androidx.compose.ui.Modifier 26 | import androidx.compose.ui.platform.LocalContext 27 | import androidx.compose.ui.res.painterResource 28 | import androidx.compose.ui.res.stringResource 29 | import androidx.compose.ui.unit.dp 30 | import androidx.core.content.ContextCompat 31 | import androidx.navigation.NavController 32 | import com.example.lull.ui.theme.Gray 33 | import com.example.lull.ui.theme.SemiTransparent50 34 | import com.example.lull.ui.theme.SemiTransparent20 35 | import kotlinx.coroutines.* 36 | import java.io.File 37 | 38 | @ExperimentalMaterialApi 39 | @Composable 40 | fun DetailsScreen(navController: NavController, wallpaper : Wallpaper){ 41 | val context = LocalContext.current 42 | val modifierPadding = Modifier.padding(20.dp,0.dp) 43 | 44 | val launcher : ManagedActivityResultLauncher = rememberLauncherForActivityResult( 45 | ActivityResultContracts.RequestPermission() 46 | ) { isGranted: Boolean -> 47 | if (isGranted) { 48 | val bitmap : Bitmap = BitmapFactory.decodeResource(context.resources,wallpaper.drawableId) 49 | FileUtils(context).saveImage(bitmap, wallpaper.name) 50 | } 51 | } 52 | 53 | Column(modifier = Modifier 54 | .fillMaxSize() 55 | .padding(0.dp, 20.dp), 56 | verticalArrangement = Arrangement.SpaceBetween){ 57 | Box(modifier = Modifier 58 | .weight(1f) 59 | .aspectRatio(0.5625f) 60 | .align(Alignment.CenterHorizontally), 61 | contentAlignment = Alignment.Center) { 62 | WallpaperCard(wallpaper = wallpaper, modifier = Modifier.fillMaxSize()) { 63 | 64 | } 65 | Icon(painter = painterResource(id = R.drawable.ic_down), 66 | contentDescription = stringResource(id = R.string.download), 67 | modifier = Modifier.fillMaxSize(0.2f).clickable { 68 | MainScope().launch { 69 | saveImage(context, wallpaper, launcher) 70 | } 71 | }, 72 | tint = SemiTransparent50) 73 | } 74 | Spacer(modifier = Modifier.height(10.dp)) 75 | Column{ 76 | Text(text = wallpaper.name, style = MaterialTheme.typography.h1, modifier = modifierPadding) 77 | RowArtist(artist = wallpaper.artist, modifier = modifierPadding){ 78 | Toast.makeText(context, context.getString(R.string.artist_unknown_info),Toast.LENGTH_SHORT).show() 79 | } 80 | Spacer(modifier = Modifier.height(10.dp)) 81 | RowTags(tagList = wallpaper.tags){ tag -> 82 | navController.navigate("homepage/${tag}") 83 | } 84 | } 85 | } 86 | 87 | 88 | 89 | } 90 | 91 | @Composable 92 | fun RowArtist(artist : String?, modifier : Modifier, infoOnClick : () -> Unit){ 93 | when(artist){ 94 | null -> { 95 | Row(horizontalArrangement = Arrangement.spacedBy(5.dp), 96 | verticalAlignment = Alignment.CenterVertically, modifier = modifier){ 97 | Text(text = stringResource(id = R.string.artist_unknown), 98 | style = MaterialTheme.typography.subtitle1) 99 | Icon( 100 | painter = painterResource(id = R.drawable.ic_info), 101 | contentDescription = stringResource(id = R.string.info), 102 | tint = Gray, 103 | modifier = Modifier 104 | .size(28.dp) 105 | .clickable(onClick = infoOnClick)) 106 | } 107 | } 108 | else -> { 109 | Text(text = stringResource(id = R.string.artist,artist), 110 | style = MaterialTheme.typography.subtitle1, 111 | modifier = modifier) 112 | } 113 | } 114 | } 115 | 116 | @ExperimentalMaterialApi 117 | @Composable 118 | fun RowTags(tagList : List, onItemSelected: (String) -> Unit){ 119 | LazyRow(horizontalArrangement = Arrangement.spacedBy(5.dp)) { 120 | itemsIndexed(items = tagList){ position, tag -> 121 | val padding : PaddingValues = when(position){ 122 | 0 -> PaddingValues(16.dp,0.dp,0.dp,0.dp) 123 | tagList.size - 1 -> PaddingValues(0.dp,0.dp,16.dp,0.dp) 124 | else -> PaddingValues(0.dp,0.dp,0.dp,0.dp) 125 | } 126 | Card(shape = RoundedCornerShape(5.dp), 127 | backgroundColor = SemiTransparent20, 128 | elevation = 0.dp, 129 | modifier = Modifier.padding(padding), 130 | onClick = { 131 | onItemSelected.invoke(tag) 132 | 133 | }){ 134 | Text(text = tag, style = MaterialTheme.typography.subtitle1, 135 | modifier = Modifier.padding(10.dp,5.dp)) 136 | } 137 | } 138 | } 139 | } 140 | 141 | private suspend fun saveImage(context : Context, wallpaper : Wallpaper, launcher : ManagedActivityResultLauncher) { 142 | val bitmap : Bitmap = BitmapFactory.decodeResource(context.resources,wallpaper.drawableId) 143 | 144 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { 145 | withContext(Dispatchers.IO) { 146 | val collection = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY) 147 | val dirDest = File(Environment.DIRECTORY_PICTURES, context.getString(R.string.app_name)) 148 | val date = System.currentTimeMillis() 149 | val extension = ".jpeg" 150 | val newImage = ContentValues().apply { 151 | put(MediaStore.Images.Media.DISPLAY_NAME, "${wallpaper.name}.$extension") 152 | put(MediaStore.MediaColumns.MIME_TYPE, "image/$extension") 153 | put(MediaStore.MediaColumns.DATE_ADDED, date) 154 | put(MediaStore.MediaColumns.DATE_MODIFIED, date) 155 | put(MediaStore.MediaColumns.SIZE, bitmap.byteCount) 156 | put(MediaStore.MediaColumns.WIDTH, bitmap.width) 157 | put(MediaStore.MediaColumns.HEIGHT, bitmap.height) 158 | put(MediaStore.MediaColumns.RELATIVE_PATH, "$dirDest${File.separator}") 159 | put(MediaStore.Images.Media.IS_PENDING, 1) 160 | } 161 | val newImageUri = context.contentResolver.insert(collection, newImage) 162 | context.contentResolver.openOutputStream(newImageUri!!, "w").use { 163 | bitmap.compress(Bitmap.CompressFormat.JPEG, 100, it) 164 | } 165 | newImage.clear() 166 | newImage.put(MediaStore.Images.Media.IS_PENDING, 0) 167 | context.contentResolver.update(newImageUri, newImage, null, null) 168 | } 169 | 170 | } else { 171 | when( ContextCompat.checkSelfPermission( 172 | context, 173 | Manifest.permission.WRITE_EXTERNAL_STORAGE 174 | )) { 175 | PackageManager.PERMISSION_GRANTED -> { 176 | FileUtils(context).saveImage(bitmap, wallpaper.name) 177 | 178 | } else -> { 179 | launcher.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE) 180 | } 181 | } 182 | } 183 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/lull/FileUtils.kt: -------------------------------------------------------------------------------- 1 | package com.example.lull 2 | 3 | import android.content.Context 4 | import android.content.Intent 5 | import android.graphics.Bitmap 6 | import android.net.Uri 7 | import android.os.Environment 8 | import java.io.File 9 | import java.io.FileOutputStream 10 | 11 | class FileUtils 12 | constructor(private val appContext: Context) { 13 | 14 | 15 | fun saveImage(image: Bitmap, id: String): String? { 16 | var savedImagePath: String? = null 17 | val imageFileName = "$id.jpeg" 18 | val storageDir = 19 | File("${Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)}/Lull") 20 | var success = true 21 | if (!storageDir.exists()) { 22 | success = storageDir.mkdirs() 23 | } 24 | if (success) { 25 | val imageFile = File(storageDir, imageFileName) 26 | savedImagePath = imageFile.absolutePath 27 | 28 | try { 29 | val fOut = FileOutputStream(imageFile) 30 | image.compress(Bitmap.CompressFormat.JPEG, 80, fOut) 31 | fOut.close() 32 | } catch (e: Exception) { 33 | e.printStackTrace() 34 | } 35 | galleryAddPic(savedImagePath) 36 | } 37 | return savedImagePath 38 | } 39 | 40 | private fun galleryAddPic(imagePath: String) { 41 | val mediaScanIntent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE) 42 | val f = File(imagePath) 43 | val contentUri = Uri.fromFile(f) 44 | mediaScanIntent.data = contentUri 45 | appContext.sendBroadcast(mediaScanIntent) 46 | 47 | } 48 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/lull/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.lull 2 | 3 | import android.os.Bundle 4 | import androidx.activity.ComponentActivity 5 | import androidx.activity.compose.setContent 6 | import androidx.compose.foundation.Image 7 | import androidx.compose.foundation.background 8 | import androidx.compose.foundation.layout.* 9 | import androidx.compose.ui.Modifier 10 | import androidx.compose.ui.graphics.Color 11 | import androidx.compose.ui.unit.dp 12 | import com.example.lull.ui.theme.LullTheme 13 | import androidx.compose.foundation.layout.Box 14 | import androidx.compose.foundation.layout.aspectRatio 15 | import androidx.compose.foundation.layout.fillMaxWidth 16 | import androidx.compose.foundation.lazy.LazyRow 17 | import androidx.compose.foundation.lazy.itemsIndexed 18 | import androidx.compose.foundation.shape.RoundedCornerShape 19 | import androidx.compose.material.* 20 | import androidx.compose.material.icons.Icons 21 | import androidx.compose.material.icons.filled.Close 22 | import androidx.compose.material.icons.filled.Search 23 | import androidx.compose.runtime.* 24 | import androidx.compose.ui.Alignment 25 | import androidx.compose.ui.layout.ContentScale 26 | import androidx.compose.ui.res.painterResource 27 | import androidx.compose.ui.res.stringResource 28 | import androidx.compose.ui.text.input.TextFieldValue 29 | import androidx.navigation.NavController 30 | import androidx.navigation.NavType 31 | import androidx.navigation.compose.NavHost 32 | import androidx.navigation.compose.composable 33 | import androidx.navigation.compose.navArgument 34 | import androidx.navigation.compose.rememberNavController 35 | import kotlin.collections.ArrayList 36 | 37 | class MainActivity : ComponentActivity() { 38 | @ExperimentalMaterialApi 39 | override fun onCreate(savedInstanceState: Bundle?) { 40 | super.onCreate(savedInstanceState) 41 | setContent { 42 | LullTheme { 43 | Surface(color = MaterialTheme.colors.background) { 44 | Navigation() 45 | } 46 | } 47 | } 48 | } 49 | } 50 | 51 | 52 | @ExperimentalMaterialApi 53 | @Composable 54 | fun Navigation(){ 55 | val navController = rememberNavController() 56 | val wallpaperList = remember { 57 | arrayListOf( 58 | Wallpaper(1,"Mountain and River", R.drawable.w_mountain_and_river, listOf("mountain","river","nature","trees"),"Mikael Gustafsson"), 59 | Wallpaper(2,"Bokeh Full Moon", R.drawable.w_bokeh_full_moon, listOf("bokeh", "moon","nature")), 60 | Wallpaper(3,"Mountain Morning", R.drawable.w_mountain_morning, listOf("mountain", "morning","nature"),"Stijn de Vries"), 61 | Wallpaper(4,"Pixel Sky", R.drawable.w_pixel_sky, listOf("pixel","mountain","sky","starts","night","nature")), 62 | Wallpaper(5,"Birds over the Trees", R.drawable.w_bird_over_the_trees, listOf("sky","birds","trees","nature","morning")), 63 | Wallpaper(6,"Deers", R.drawable.w_deers, listOf("animals","deer","nature","sky")), 64 | Wallpaper(7,"Train at Midnight", R.drawable.w_train_at_midnight, listOf("train","midnight","sky","stars")), 65 | Wallpaper(8,"Lonely Sunset", R.drawable.w_lonely_sunset, listOf("sunset","sky","girl","bridge")), 66 | ) 67 | } 68 | NavHost(navController = navController 69 | , startDestination = "homepage") { 70 | composable("homepage"){ 71 | Homepage(navController, wallpaperList) 72 | } 73 | composable("homepage/{tag}", 74 | arguments = listOf( 75 | navArgument("tag"){type = NavType.StringType} 76 | )){ 77 | val tag = it.arguments?.getString("tag")!! 78 | Homepage(navController, wallpaperList, tag) 79 | } 80 | composable("details_screen/{wallpaper_id}" 81 | , arguments = listOf( 82 | navArgument("wallpaper_id"){ type = NavType.IntType} 83 | )){ 84 | val itemId = it.arguments?.getInt("wallpaper_id")!! 85 | val wallpaper : Wallpaper? = searchList(wallpaperList,itemId) 86 | if(wallpaper != null){ 87 | DetailsScreen(navController, wallpaper) 88 | } 89 | } 90 | } 91 | } 92 | 93 | 94 | @ExperimentalMaterialApi 95 | @Composable 96 | fun Homepage(navController: NavController, wallpaperList : ArrayList, tag : String? = null){ 97 | val textState = remember { mutableStateOf(TextFieldValue("")) } 98 | val filteredList = getFilteredList(wallpaperList,textState) 99 | val padding = PaddingValues(20.dp,0.dp) 100 | 101 | Column(modifier = Modifier 102 | .fillMaxSize() 103 | .padding(0.dp, 20.dp)) { 104 | SearchView(padding, textState) 105 | Title(textState, filteredList.size) 106 | if(filteredList.isEmpty()){ 107 | Box(modifier = Modifier.weight(1f)) 108 | }else{ 109 | Pager(list = filteredList){ wallpaper -> 110 | navController.navigate("details_screen/${wallpaper.id}") 111 | } 112 | } 113 | BottomText(padding) 114 | 115 | } 116 | SideEffect { 117 | if (tag!=null){ 118 | textState.value = TextFieldValue(tag) 119 | } 120 | } 121 | 122 | } 123 | 124 | 125 | @Composable 126 | fun BottomText(padding: PaddingValues){ 127 | Column(modifier = Modifier.padding(paddingValues = padding)){ 128 | Text(text = stringResource(id = R.string.app_name).uppercase() 129 | , style = MaterialTheme.typography.h1) 130 | Spacer(modifier = Modifier.height(5.dp)) 131 | Text(text = stringResource(id = R.string.subtitle), 132 | style = MaterialTheme.typography.subtitle1) 133 | } 134 | } 135 | 136 | @Composable 137 | fun Title(state: MutableState, 138 | filteredListSize : Int){ 139 | val searchedText = state.value.text 140 | 141 | val title : String = if (searchedText.isEmpty()) { 142 | stringResource(id = R.string.all_wallpapers) 143 | }else{ 144 | when(filteredListSize){ 145 | 0 -> stringResource(id = R.string.search_none) 146 | 1 -> stringResource(id = R.string.search_one) 147 | else -> stringResource(id = R.string.search_many,filteredListSize) 148 | } 149 | 150 | } 151 | Text(modifier = Modifier.padding(20.dp,5.dp), 152 | text = title.uppercase(), 153 | style = MaterialTheme.typography.h2, 154 | maxLines = 1) 155 | } 156 | 157 | @ExperimentalMaterialApi 158 | @Composable 159 | fun ColumnScope.Pager(list : ArrayList, onItemSelected: (Wallpaper) -> Unit){ 160 | LazyRow(modifier = Modifier 161 | .weight(1f) 162 | .fillMaxWidth() 163 | .padding(0.dp, 20.dp), 164 | horizontalArrangement = Arrangement.spacedBy(16.dp)) { 165 | itemsIndexed(items = list){ position, wallpaper -> 166 | val padding : PaddingValues = when(position){ 167 | 0 -> PaddingValues(16.dp,0.dp,0.dp,0.dp) 168 | list.size - 1 -> PaddingValues(0.dp,0.dp,16.dp,0.dp) 169 | else -> PaddingValues(0.dp,0.dp,0.dp,0.dp) 170 | } 171 | val modifier = Modifier 172 | .padding(padding) 173 | .aspectRatio(0.5625f) 174 | WallpaperCard(wallpaper, modifier, onItemSelected) 175 | } 176 | } 177 | } 178 | 179 | 180 | 181 | @ExperimentalMaterialApi 182 | @Composable 183 | fun WallpaperCard(wallpaper : Wallpaper, 184 | modifier : Modifier, 185 | onItemSelected: (Wallpaper) -> Unit){ 186 | Card( shape = RoundedCornerShape(15.dp), 187 | elevation = 5.dp, 188 | modifier = modifier, 189 | onClick = { onItemSelected.invoke(wallpaper)} 190 | ){ 191 | Image(painter = painterResource(id = wallpaper.drawableId), 192 | contentDescription = wallpaper.name, 193 | contentScale = ContentScale.Crop ) 194 | } 195 | } 196 | 197 | @Composable 198 | fun SearchView(padding : PaddingValues, state: MutableState) { 199 | Row(modifier = Modifier 200 | .fillMaxWidth() 201 | .padding(padding), 202 | horizontalArrangement = Arrangement.spacedBy(10.dp)){ 203 | Image( 204 | painter = painterResource(id = R.drawable.ic_logo), 205 | contentDescription = stringResource(id = R.string.logo), 206 | modifier = Modifier 207 | .align(Alignment.CenterVertically) 208 | .size(32.dp)) 209 | TextField( 210 | value = state.value, 211 | onValueChange = { value -> 212 | state.value = value 213 | }, 214 | modifier = Modifier 215 | .fillMaxWidth(), 216 | textStyle = MaterialTheme.typography.body1, 217 | trailingIcon = { 218 | if (state.value == TextFieldValue("")) { 219 | Icon( 220 | Icons.Default.Search, 221 | contentDescription = stringResource(id = R.string.search), 222 | modifier = Modifier 223 | .padding(15.dp) 224 | .size(24.dp) 225 | ) 226 | }else{ 227 | IconButton( 228 | onClick = { 229 | state.value = 230 | TextFieldValue("") 231 | } 232 | ) { 233 | Icon( 234 | Icons.Default.Close, 235 | contentDescription = stringResource(id = R.string.close), 236 | modifier = Modifier 237 | .padding(15.dp) 238 | .size(24.dp) 239 | ) 240 | } 241 | } 242 | }, 243 | singleLine = true, 244 | shape = RoundedCornerShape(5.dp), 245 | colors = TextFieldDefaults.textFieldColors( 246 | 247 | focusedIndicatorColor = Color.Transparent, 248 | unfocusedIndicatorColor = Color.Transparent, 249 | disabledIndicatorColor = Color.Transparent 250 | ) 251 | ) 252 | } 253 | 254 | } 255 | 256 | fun searchList(list : ArrayList, id : Int) : Wallpaper?{ 257 | for(wallpaper in list){ 258 | if(wallpaper.id == id){ 259 | return wallpaper 260 | } 261 | } 262 | return null 263 | } 264 | 265 | fun getFilteredList(list : ArrayList, state : MutableState) : ArrayList { 266 | val filteredWallpapers: ArrayList 267 | val searchedText = state.value.text 268 | 269 | if (searchedText.isEmpty()) { 270 | filteredWallpapers = list 271 | }else{ 272 | val resultList = ArrayList() 273 | for(wallpaper in list){ 274 | for(tag in wallpaper.tags){ 275 | if(searchedText.lowercase().contains(tag)){ 276 | resultList.add(wallpaper) 277 | break 278 | } 279 | } 280 | } 281 | filteredWallpapers = resultList 282 | } 283 | 284 | return filteredWallpapers 285 | } 286 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/lull/Wallpaper.kt: -------------------------------------------------------------------------------- 1 | package com.example.lull 2 | 3 | data class Wallpaper(var id : Int, var name : String, var drawableId : Int, var tags : List, var artist : String? = null) { 4 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/lull/ui/theme/Color.kt: -------------------------------------------------------------------------------- 1 | package com.example.lull.ui.theme 2 | 3 | import androidx.compose.ui.graphics.Color 4 | 5 | val Teal200 = Color(0xFF03DAC5) 6 | val Berry = Color(0xFFD854A6) 7 | val BerryLight = Color(0xFFFF8CD4) 8 | val BerryDark = Color(0xFF70215F) 9 | val Gray = Color(0xFF686868) 10 | val DarkGray = Color(0xFF555555) 11 | val SemiTransparent20 = Color(0x33000000) 12 | val SemiTransparent50 = Color(0x99000000) -------------------------------------------------------------------------------- /app/src/main/java/com/example/lull/ui/theme/Shape.kt: -------------------------------------------------------------------------------- 1 | package com.example.lull.ui.theme 2 | 3 | import androidx.compose.foundation.shape.RoundedCornerShape 4 | import androidx.compose.material.Shapes 5 | import androidx.compose.ui.unit.dp 6 | 7 | val Shapes = Shapes( 8 | small = RoundedCornerShape(4.dp), 9 | medium = RoundedCornerShape(4.dp), 10 | large = RoundedCornerShape(0.dp) 11 | ) -------------------------------------------------------------------------------- /app/src/main/java/com/example/lull/ui/theme/Theme.kt: -------------------------------------------------------------------------------- 1 | package com.example.lull.ui.theme 2 | 3 | import androidx.compose.foundation.isSystemInDarkTheme 4 | import androidx.compose.material.MaterialTheme 5 | import androidx.compose.material.Typography 6 | import androidx.compose.material.darkColors 7 | import androidx.compose.material.lightColors 8 | import androidx.compose.runtime.Composable 9 | import androidx.compose.ui.graphics.Color 10 | 11 | private val DarkColorPalette = darkColors( 12 | primary = BerryLight, 13 | primaryVariant = BerryDark, 14 | secondary = Teal200 15 | ) 16 | 17 | private val LightColorPalette = lightColors( 18 | primary = Berry, 19 | primaryVariant = BerryDark, 20 | secondary = Teal200, 21 | onBackground = DarkGray 22 | 23 | /* Other default colors to override 24 | background = Color.White, 25 | surface = Color.White, 26 | onPrimary = Color.White, 27 | onSecondary = Color.Black, 28 | onBackground = Color.Black, 29 | onSurface = Color.Black, 30 | */ 31 | ) 32 | 33 | @Composable 34 | fun LullTheme(darkTheme: Boolean = isSystemInDarkTheme(), content: @Composable() () -> Unit) { 35 | val typography = if (darkTheme) { 36 | Typography 37 | } else { 38 | Typography(h1 = Typography.h1.copy(color = DarkGray), 39 | h2 = Typography.h2.copy(color = Gray)) 40 | } 41 | 42 | val colors = if (darkTheme) { 43 | DarkColorPalette 44 | } else { 45 | LightColorPalette 46 | } 47 | MaterialTheme( 48 | colors = colors, 49 | typography = typography, 50 | shapes = Shapes, 51 | content = content 52 | ) 53 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/lull/ui/theme/Type.kt: -------------------------------------------------------------------------------- 1 | package com.example.lull.ui.theme 2 | 3 | import androidx.compose.material.MaterialTheme 4 | import androidx.compose.material.Typography 5 | import androidx.compose.ui.text.TextStyle 6 | import androidx.compose.ui.text.font.Font 7 | import androidx.compose.ui.text.font.FontFamily 8 | import androidx.compose.ui.text.font.FontWeight 9 | import androidx.compose.ui.unit.sp 10 | import com.example.lull.R 11 | 12 | 13 | val Poppins = FontFamily( 14 | Font(R.font.poppins_regular), 15 | Font(R.font.poppins_extrabold, weight = FontWeight.ExtraBold), 16 | Font(R.font.poppins_light, weight = FontWeight.Light) 17 | ) 18 | // Set of Material typography styles to start with 19 | val Typography = Typography( 20 | body1 = TextStyle( 21 | fontFamily = Poppins, 22 | fontWeight = FontWeight.Light, 23 | fontSize = 16.sp 24 | ), 25 | h1 = TextStyle( 26 | fontFamily = Poppins, 27 | fontWeight = FontWeight.ExtraBold, 28 | fontSize = 23.sp, 29 | letterSpacing = 2.sp, 30 | color = DarkGray 31 | ), 32 | h2 = TextStyle( 33 | fontFamily = Poppins, 34 | fontWeight = FontWeight.ExtraBold, 35 | fontSize = 19.sp, 36 | letterSpacing = 1.2.sp, 37 | color = Gray 38 | ) 39 | /* Other default text styles to override 40 | button = TextStyle( 41 | fontFamily = FontFamily.Default, 42 | fontWeight = FontWeight.W500, 43 | fontSize = 14.sp 44 | ), 45 | caption = TextStyle( 46 | fontFamily = FontFamily.Default, 47 | fontWeight = FontWeight.Normal, 48 | fontSize = 12.sp 49 | ) 50 | */ 51 | ) -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_info.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 13 | 16 | 19 | 22 | 25 | 28 | 31 | 34 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_logo.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/w_bird_over_the_trees.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/app/src/main/res/drawable/w_bird_over_the_trees.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/w_bokeh_full_moon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/app/src/main/res/drawable/w_bokeh_full_moon.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/w_deers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/app/src/main/res/drawable/w_deers.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/w_lonely_sunset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/app/src/main/res/drawable/w_lonely_sunset.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/w_mountain_and_river.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/app/src/main/res/drawable/w_mountain_and_river.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/w_mountain_morning.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/app/src/main/res/drawable/w_mountain_morning.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/w_pixel_sky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/app/src/main/res/drawable/w_pixel_sky.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/w_train_at_midnight.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/app/src/main/res/drawable/w_train_at_midnight.jpg -------------------------------------------------------------------------------- /app/src/main/res/font/poppins_extrabold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/app/src/main/res/font/poppins_extrabold.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/poppins_light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/app/src/main/res/font/poppins_light.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/poppins_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simgesengun/JetpackCompose-Lull/17b4163ab30db5ba9db35c085ea7a66240b863f8/app/src/main/res/font/poppins_regular.ttf -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/values-tr-rTR/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Arama 4 | Kapat 5 | Logo 6 | Tüm Duvar Kağıtları 7 | Sonuç bulunamadı 8 | 1 sonuç bulundu 9 | %1$d sonuç bulundu 10 | En rahatlatıcı duvar kağıtlarını bulun… 11 | Indir 12 | Kaydedildi 13 | %1$s 14 | Bilinmiyor 15 | Eğer sanatçıyı biliyorsanız lütfen bana ulaşın. 16 | Info 17 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | 11 | 12 | #FFD854A6 13 | #FFFF8CD4 14 | #FF70215F 15 | -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #A361E5 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Lull 3 | Search 4 | Close 5 | Logo 6 | All Wallpapers 7 | No results have found 8 | 1 result has found 9 | %1$d results have found 10 | Find the best soothing wallpapers… 11 | Download 12 | Saved 13 | by %1$s 14 | Unknown 15 | If you know the artist, please contact me. 16 | Info 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 24 | 25 |