From b26255a6100ee28a0ba7e101b86c32e4273f5d62 Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 14:38:24 +0200 Subject: [PATCH 01/15] Initial commit --- .gitignore | 15 ++ .idea/.gitignore | 3 + .idea/compiler.xml | 6 + .idea/gradle.xml | 21 +++ .idea/jarRepositories.xml | 25 +++ .idea/misc.xml | 14 ++ .idea/vcs.xml | 6 + README.md | 44 ----- app/.gitignore | 1 + app/build.gradle | 45 +++++ app/proguard-rules.pro | 21 +++ .../movies/tmdb/ExampleInstrumentedTest.kt | 24 +++ app/src/main/AndroidManifest.xml | 21 +++ .../main/java/com/movies/tmdb/MainActivity.kt | 11 ++ .../drawable-v24/ic_launcher_foreground.xml | 30 +++ .../res/drawable/ic_launcher_background.xml | 170 +++++++++++++++++ app/src/main/res/layout/activity_main.xml | 18 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3593 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5339 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2636 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3388 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4926 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7472 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7909 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11873 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10652 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16570 bytes app/src/main/res/values-night/themes.xml | 16 ++ app/src/main/res/values/colors.xml | 10 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/themes.xml | 16 ++ .../java/com/movies/tmdb/ExampleUnitTest.kt | 17 ++ build.gradle | 26 +++ gradle.properties | 21 +++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 ++++++++++++++++++ gradlew.bat | 84 +++++++++ settings.gradle | 2 + 41 files changed, 814 insertions(+), 44 deletions(-) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml delete mode 100644 README.md create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/com/movies/tmdb/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/com/movies/tmdb/MainActivity.kt create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/values-night/themes.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/test/java/com/movies/tmdb/ExampleUnitTest.kt create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..aa724b77 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..61a9130c --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 00000000..18de3ac5 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 00000000..a5f05cd8 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..33782299 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 8bb0c38d..00000000 --- a/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# Work sample - Application developer - -## Assignment - -- Build an awesome movie app that shows popular and high rated movies. -- Code it for the platform (Android, iOS, web) you applied for or the one you prefer. - -## Requirements - -- Use an open https://developers.themoviedb.org/open source API. Please read the API [Authentication section](https://developers.themoviedb.org/3/getting-started/authentication) to get started. -- Discover most popular and highly rated movies. -- Display the movies with creative look and feel of an app to meet design guidelines for your platform (Material Design etc.). -- Launch a detail screen whenever a particular movie is selected. - -## Examples of bonus features - -- Allow user to save a favorite movie for offline access. -- Allow user to read movie reviews. - -## We expect you to - -- Write clean code. -- Create a responsive design. -- Handle error cases. -- Use the latest libraries and technologies. -- Tested code is a big plus. - -### User experience - -The features of the app might be few, but we expect you to deliver a solution with a high user experience. Imagine this application to be used by real users, with real needs. Make it interesting, fun and intuitive to use. And of course you are allowed to extend your applications functionality. - -### Code - -We expect that the code is of high quality and under source control. Expect the solution to be continuously worked on by other developers and should therefore be easy to understand, adjust and extend. True beauty starts on the inside! - -## Delivery - -Fork the repository, code in your fork and make a pull request when done. A nice commit history describing your work is preferred over squashing it into one commit. -Also send us an e-mail to let us know! - -### Good luck! - ---- - diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 00000000..654f6d87 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,45 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' +} + +android { + compileSdkVersion 31 + buildToolsVersion "30.0.3" + + defaultConfig { + applicationId "com.movies.tmdb" + minSdkVersion 23 + targetSdkVersion 31 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } +} + +dependencies { + + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'com.google.android.material:material:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/androidTest/java/com/movies/tmdb/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/movies/tmdb/ExampleInstrumentedTest.kt new file mode 100644 index 00000000..c33ddb26 --- /dev/null +++ b/app/src/androidTest/java/com/movies/tmdb/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.movies.tmdb + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.movies.tmdb", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..8c312f12 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/MainActivity.kt b/app/src/main/java/com/movies/tmdb/MainActivity.kt new file mode 100644 index 00000000..30534af2 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/MainActivity.kt @@ -0,0 +1,11 @@ +package com.movies.tmdb + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle + +class MainActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..4fc24441 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..eca70cfe --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..eca70cfe --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a571e60098c92c2baca8a5df62f2929cbff01b52 GIT binary patch literal 3593 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 P00000NkvXXu0mjfP=x?Y literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..61da551c5594a1f9d26193983d2cd69189014603 GIT binary patch literal 5339 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..b216f2d313cc673d8b8c4da591c174ebed52795c GIT binary patch literal 11873 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 00000000..6319378c --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..f8c6127d --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..b7c55336 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + MovieApp + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..097b75af --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/app/src/test/java/com/movies/tmdb/ExampleUnitTest.kt b/app/src/test/java/com/movies/tmdb/ExampleUnitTest.kt new file mode 100644 index 00000000..1a7c3c55 --- /dev/null +++ b/app/src/test/java/com/movies/tmdb/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.movies.tmdb + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..e47bb55b --- /dev/null +++ b/build.gradle @@ -0,0 +1,26 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + ext.kotlin_version = "1.4.32" + repositories { + google() + jcenter() + } + dependencies { + classpath "com.android.tools.build:gradle:4.1.2" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..98bed167 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official \ 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 GIT binary patch literal 54329 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

<5G2M1WZP5 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 F{|7XC?P&l2 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..17c24773 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue Dec 28 14:32:15 EET 2021 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip diff --git a/gradlew b/gradlew new file mode 100644 index 00000000..cccdd3d5 --- /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 00000000..f9553162 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..262e27eb --- /dev/null +++ b/settings.gradle @@ -0,0 +1,2 @@ +include ':app' +rootProject.name = "MovieApp" \ No newline at end of file From 661aaafe1be47b8d6ae3676223cea3e1e1e59aa4 Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 14:52:31 +0200 Subject: [PATCH 02/15] Set up the dependencies --- app/build.gradle | 93 +++++++++++++++++++++++++++++++++++++++---- app/gradle.properties | 24 +++++++++++ build.gradle | 5 ++- 3 files changed, 112 insertions(+), 10 deletions(-) create mode 100644 app/gradle.properties diff --git a/app/build.gradle b/app/build.gradle index 654f6d87..0d054471 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,11 @@ plugins { id 'com.android.application' id 'kotlin-android' + + id 'kotlin-android-extensions' + id 'kotlin-kapt' + id "androidx.navigation.safeargs.kotlin" + id 'dagger.hilt.android.plugin' } android { @@ -33,13 +38,85 @@ android { } dependencies { - + implementation fileTree(dir: "libs", include: ["*.jar"]) implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation 'androidx.core:core-ktx:1.7.0' - implementation 'androidx.appcompat:appcompat:1.4.0' - implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' - testImplementation 'junit:junit:4.+' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + implementation 'androidx.core:core-ktx:1.3.1' + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + + // Material Design + implementation 'com.google.android.material:material:1.3.0-alpha02' + + // Architectural Components + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + + // Lifecycle + implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-runtime:2.2.0" + implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0" + + // Room + implementation "androidx.room:room-runtime:2.2.5" + implementation 'com.android.support:support-annotations:28.0.0' + kapt "androidx.room:room-compiler:2.2.5" + + // Kotlin Extensions and Coroutines support for Room + implementation "androidx.room:room-ktx:2.2.5" + + // Retrofit + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + implementation 'com.squareup.retrofit2:converter-gson:2.9.0' + implementation "com.squareup.okhttp3:logging-interceptor:3.12.0" + implementation "com.google.code.gson:gson:2.8.6" + + // Coroutines + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.5' + + // Coroutine Lifecycle Scopes + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0" + + // Navigation Components + implementation "androidx.navigation:navigation-fragment-ktx:2.3.0" + implementation "androidx.navigation:navigation-ui-ktx:2.3.0" + + // Glide + implementation 'com.github.bumptech.glide:glide:4.11.0' + kapt 'com.github.bumptech.glide:compiler:4.11.0' + + // Activity KTX for viewModels() + implementation "androidx.activity:activity-ktx:1.1.0" + + //Dagger - Hilt + implementation "com.google.dagger:hilt-android:2.28-alpha" + kapt "com.google.dagger:hilt-android-compiler:2.28-alpha" + + implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha02" + kapt "androidx.hilt:hilt-compiler:1.0.0-alpha02" + + + // Timber + implementation 'com.jakewharton.timber:timber:4.7.1' + + implementation 'com.github.eralpyucel:CircleProgressView:v1.1' + + + + + // Local Unit Tests + implementation "androidx.test:core:1.2.0" + testImplementation "junit:junit:4.13" + testImplementation "androidx.arch.core:core-testing:2.1.0" + testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.2.1" + testImplementation "com.google.truth:truth:1.0.1" + + // Instrumented Unit Tests + androidTestImplementation "junit:junit:4.13" + androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.2.1" + androidTestImplementation "androidx.arch.core:core-testing:2.1.0" + androidTestImplementation "com.google.truth:truth:1.0.1" + androidTestImplementation 'androidx.test.ext:junit:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' } \ No newline at end of file diff --git a/app/gradle.properties b/app/gradle.properties new file mode 100644 index 00000000..9349907f --- /dev/null +++ b/app/gradle.properties @@ -0,0 +1,24 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official + + +API_KEY = "d9e7589213d1b047222f2774b376c82a" \ No newline at end of file diff --git a/build.gradle b/build.gradle index e47bb55b..eb48176d 100644 --- a/build.gradle +++ b/build.gradle @@ -6,9 +6,10 @@ buildscript { jcenter() } dependencies { - classpath "com.android.tools.build:gradle:4.1.2" + classpath "com.android.tools.build:gradle:4.0.1" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - + classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0" + classpath "com.google.dagger:hilt-android-gradle-plugin:2.28.3-alpha" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } From cd2095e25eda386c4c0937fbe62102578b8e132e Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 14:54:19 +0200 Subject: [PATCH 03/15] Prepare the assets and the Uis --- .../main/res/drawable-anydpi/ic_duration.xml | 14 ++ .../res/drawable-anydpi/ic_fav_active.xml | 11 ++ .../res/drawable-anydpi/ic_fav_in_active.xml | 11 ++ .../ic_fav_in_active_white.xml | 11 ++ .../main/res/drawable-anydpi/ic_filter.xml | 11 ++ .../main/res/drawable-hdpi/ic_duration.png | Bin 0 -> 572 bytes .../main/res/drawable-hdpi/ic_fav_active.png | Bin 0 -> 371 bytes .../res/drawable-hdpi/ic_fav_in_active.png | Bin 0 -> 488 bytes .../drawable-hdpi/ic_fav_in_active_white.png | Bin 0 -> 309 bytes app/src/main/res/drawable-hdpi/ic_filter.png | Bin 0 -> 124 bytes .../main/res/drawable-mdpi/ic_duration.png | Bin 0 -> 366 bytes .../main/res/drawable-mdpi/ic_fav_active.png | Bin 0 -> 262 bytes .../res/drawable-mdpi/ic_fav_in_active.png | Bin 0 -> 351 bytes .../drawable-mdpi/ic_fav_in_active_white.png | Bin 0 -> 225 bytes app/src/main/res/drawable-mdpi/ic_filter.png | Bin 0 -> 101 bytes app/src/main/res/drawable-v24/ic_add.xml | 10 ++ app/src/main/res/drawable-v24/ic_image.xml | 10 ++ .../main/res/drawable-v24/like_selector.xml | 10 ++ .../main/res/drawable-xhdpi/ic_duration.png | Bin 0 -> 712 bytes .../main/res/drawable-xhdpi/ic_fav_active.png | Bin 0 -> 476 bytes .../res/drawable-xhdpi/ic_fav_in_active.png | Bin 0 -> 626 bytes .../drawable-xhdpi/ic_fav_in_active_white.png | Bin 0 -> 387 bytes app/src/main/res/drawable-xhdpi/ic_filter.png | Bin 0 -> 119 bytes .../main/res/drawable-xxhdpi/ic_duration.png | Bin 0 -> 1008 bytes .../res/drawable-xxhdpi/ic_fav_active.png | Bin 0 -> 614 bytes .../res/drawable-xxhdpi/ic_fav_in_active.png | Bin 0 -> 913 bytes .../ic_fav_in_active_white.png | Bin 0 -> 526 bytes .../main/res/drawable-xxhdpi/ic_filter.png | Bin 0 -> 137 bytes app/src/main/res/font/poppins_regular.ttf | Bin 0 -> 144776 bytes app/src/main/res/layout/activity_main.xml | 22 +-- .../res/layout/fragment_movie_details.xml | 130 ++++++++++++++++++ .../res/layout/fragment_movies_listing.xml | 33 +++++ .../res/layout/fragment_offline_movies.xml | 33 +++++ .../res/layout/fragment_review_details.xml | 38 +++++ .../res/layout/fragment_reviews_listing.xml | 33 +++++ app/src/main/res/layout/item_image.xml | 18 +++ app/src/main/res/layout/item_review.xml | 56 ++++++++ app/src/main/res/layout/item_shopping.xml | 41 ++++++ app/src/main/res/menu/app_bar_menu.xml | 30 ++++ .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 7909 -> 21186 bytes app/src/main/res/navigation/nav_graph.xml | 65 +++++++++ app/src/main/res/values-night/themes.xml | 16 --- app/src/main/res/values/colors.xml | 21 ++- app/src/main/res/values/strings.xml | 21 ++- app/src/main/res/values/styles.xml | 12 ++ app/src/main/res/values/themes.xml | 16 --- 46 files changed, 622 insertions(+), 51 deletions(-) create mode 100644 app/src/main/res/drawable-anydpi/ic_duration.xml create mode 100644 app/src/main/res/drawable-anydpi/ic_fav_active.xml create mode 100644 app/src/main/res/drawable-anydpi/ic_fav_in_active.xml create mode 100644 app/src/main/res/drawable-anydpi/ic_fav_in_active_white.xml create mode 100644 app/src/main/res/drawable-anydpi/ic_filter.xml create mode 100644 app/src/main/res/drawable-hdpi/ic_duration.png create mode 100644 app/src/main/res/drawable-hdpi/ic_fav_active.png create mode 100644 app/src/main/res/drawable-hdpi/ic_fav_in_active.png create mode 100644 app/src/main/res/drawable-hdpi/ic_fav_in_active_white.png create mode 100644 app/src/main/res/drawable-hdpi/ic_filter.png create mode 100644 app/src/main/res/drawable-mdpi/ic_duration.png create mode 100644 app/src/main/res/drawable-mdpi/ic_fav_active.png create mode 100644 app/src/main/res/drawable-mdpi/ic_fav_in_active.png create mode 100644 app/src/main/res/drawable-mdpi/ic_fav_in_active_white.png create mode 100644 app/src/main/res/drawable-mdpi/ic_filter.png create mode 100644 app/src/main/res/drawable-v24/ic_add.xml create mode 100644 app/src/main/res/drawable-v24/ic_image.xml create mode 100644 app/src/main/res/drawable-v24/like_selector.xml create mode 100644 app/src/main/res/drawable-xhdpi/ic_duration.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_fav_active.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_fav_in_active.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_fav_in_active_white.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_filter.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_duration.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_fav_active.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_fav_in_active.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_fav_in_active_white.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_filter.png create mode 100644 app/src/main/res/font/poppins_regular.ttf create mode 100644 app/src/main/res/layout/fragment_movie_details.xml create mode 100644 app/src/main/res/layout/fragment_movies_listing.xml create mode 100644 app/src/main/res/layout/fragment_offline_movies.xml create mode 100644 app/src/main/res/layout/fragment_review_details.xml create mode 100644 app/src/main/res/layout/fragment_reviews_listing.xml create mode 100644 app/src/main/res/layout/item_image.xml create mode 100644 app/src/main/res/layout/item_review.xml create mode 100644 app/src/main/res/layout/item_shopping.xml create mode 100644 app/src/main/res/menu/app_bar_menu.xml create mode 100644 app/src/main/res/navigation/nav_graph.xml delete mode 100644 app/src/main/res/values-night/themes.xml create mode 100644 app/src/main/res/values/styles.xml delete mode 100644 app/src/main/res/values/themes.xml diff --git a/app/src/main/res/drawable-anydpi/ic_duration.xml b/app/src/main/res/drawable-anydpi/ic_duration.xml new file mode 100644 index 00000000..e8fe14cb --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_duration.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/drawable-anydpi/ic_fav_active.xml b/app/src/main/res/drawable-anydpi/ic_fav_active.xml new file mode 100644 index 00000000..8a3a2423 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_fav_active.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable-anydpi/ic_fav_in_active.xml b/app/src/main/res/drawable-anydpi/ic_fav_in_active.xml new file mode 100644 index 00000000..3d80842f --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_fav_in_active.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable-anydpi/ic_fav_in_active_white.xml b/app/src/main/res/drawable-anydpi/ic_fav_in_active_white.xml new file mode 100644 index 00000000..cacba1f7 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_fav_in_active_white.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable-anydpi/ic_filter.xml b/app/src/main/res/drawable-anydpi/ic_filter.xml new file mode 100644 index 00000000..a2a0eb88 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_filter.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable-hdpi/ic_duration.png b/app/src/main/res/drawable-hdpi/ic_duration.png new file mode 100644 index 0000000000000000000000000000000000000000..5267f42babbe3155828b9d3d63d89afdbb7a98ee GIT binary patch literal 572 zcmV-C0>k}@P)1=0ZqvUo-kFnOt-97+n@*FZ^V@E!MBnWF2lNN<5AEEUO0qB8h(BDFy={y)(q4TtNE5P%rry-MCrs zJ{lmdp0+j(x&ijLFT`+Tp10hn$Uvmi|v6Y*oOxIV(W?mqzfp&~ z*bDV?7YP~aOq$f1@YcIaLl*euN~-(lqz<|E4j!Y`eSv%7*WPsHG7DU~vm}gfgJKh7 zNa^r~5sImuBSz@}U4x1%dMTs_vJ2|TPJ&Zh?TVa#)Gx_;bF)z^vJh&IYCBUjXeXO{ z@Kk6Ei?T_Y{f<=-e;>cNdLMgyif)HpV^E_+&8Fq{)*gd!PfxCnIWF1I*ydCbIw+!S zvO%#kN)w*ypIFsqlu_Er=s3AT9Wn|syz82#r`nPKY&fsKvVH-R7L9{ye}swv0000< KMNUMnLSTaND+Qwf literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_fav_active.png b/app/src/main/res/drawable-hdpi/ic_fav_active.png new file mode 100644 index 0000000000000000000000000000000000000000..11b3944efe65cf1d8a8eda6fef66d85af83708e8 GIT binary patch literal 371 zcmV-(0gV2MP)-Il=y@XJ~BpI9$dm6(J0ZD)_#%5C6|!U z_I~`Yy&h3C*<_AwdA-dRXBH#OGVlbqD^$_>&^#E^jeX36HH<+}Nw;xH8-eGjYST}U zHidVhd9Ws|tpx*LhcKxnFs}fZ93VjV0sL8UPOYM{Hq5(PGF6PAxTJ+9jEUz`m;}?c zN0`nbrbHdK_YK4|vJ(RF0jB^!M;TBP!bb&!N^%kJA;mgk6^O?aD}>3$yGlH!v?zL4 zXs9^)Oq(=aAyiVo&v?7wULBU{-S`eur<5u|KU6rV%!PJ8)N4g};j&o-mG_NnC@V0w zpsd1}LOFr?70M}$?&&i+O}3%D!t|iN6wl{xQLsN-=!up3W8YAtftl>@?G8CI3rrK) RIp6>Q002ovPDHLkV1mNHowoo0 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_fav_in_active.png b/app/src/main/res/drawable-hdpi/ic_fav_in_active.png new file mode 100644 index 0000000000000000000000000000000000000000..2a62480fc3c388e21c17a15882da17d0b490ec29 GIT binary patch literal 488 zcmVP)_GZogUbj3?ho^F)OMs z$FmjtdOZZG*YKZ94{U<%C>Zcg$nxNUId34#XV{=|K)(}p4wNW6VYF8}6MEQG6y=8< zEjub8)5sbEB`L+IZs47!bB?ag$i^wC1zwHd>iu}l)=IQ(1oYwqI)$FQzmfLBLeae;MPB!kK4J~p2ImO25(Ckx$0aFCIn@!MZb2l#iIo0$Px|p eXJF>_@7FiqHWYr!R9lh&0000TmS-KfV%)1z)l=)xH)&gJOk5h}xvx{j+XGOfuYnzi)Y6%5iZPF5OZdnJ5I~b_ zQY;OkuDOU;@wkvi3A~=M0vP7I;&aqTW!MkpSZEjT{m|`w+EPw};P<8gDjt&%l@5~t zl^zp;%7+Q~`oh1a45)IL8;YBLi!lFeXVCr_0aXX4wZCs)8716^KJ^Hy00000NkvXX Hu0mjfQJ;V6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_filter.png b/app/src/main/res/drawable-hdpi/ic_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..e355fa507372be8de1e4f572ec11e824f4873d90 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBoIPC}Ln>~)y>gI~L4k+aVR>m( z`6|B!{A)YzIR0y#G>z#%jLVgYWtyQ2-#ShB!L_Y;(}jtlwXrYOPIi1$e=2se6T_O) YjNT^3c}03}fW|R+y85}Sb4q9e05J|Mh5!Hn literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_duration.png b/app/src/main/res/drawable-mdpi/ic_duration.png new file mode 100644 index 0000000000000000000000000000000000000000..cf529f23d6ed7c642cc2f50468c96b8d985677f6 GIT binary patch literal 366 zcmV-!0g?WRP)eg|vuC zE+!qhn803hru_JJ0C*8Q{TrgjU*2`f(x$FO?3NQUQui!!bt&VK*8r^8*fN2d7`sJj zZVA9hpa+O%A(<1G?rwrMiv%M$y0mu@XthYu%V747u@hKvdhsV%M@II&QPCfE zGX3>Ohn<1s1VsIDUGM4tg)cbXl2*%J{&0|=Em7}8^?AMb4)D*c2Q=%beofxXS^xk5 M07*qoM6N<$f-3KvI{*Lx literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_fav_active.png b/app/src/main/res/drawable-mdpi/ic_fav_active.png new file mode 100644 index 0000000000000000000000000000000000000000..bf935f60128f685ba4d74e8f6d1b807006dd677c GIT binary patch literal 262 zcmV+h0r~!kP)s_yHL03xeb!64>!0=F&c#Pw^HLZWn?Yva&CMp;pQ@8%2}ln}FHz+Ysg{sr zIH{J9WjL{xP-HkEOQ>QvvL&DtLKDMLlkn4JAWSeRQep|s3?H-r00DErun&PbmjD0& M07*qoM6N<$f{0IPBme*a literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_fav_in_active.png b/app/src/main/res/drawable-mdpi/ic_fav_in_active.png new file mode 100644 index 0000000000000000000000000000000000000000..b17e30804b9593bc236a1e33b3c1c6cc55254f68 GIT binary patch literal 351 zcmV-l0igbgP)T5@+wDjbspb?Z0H{WE41eT+T%valUZ8j|OK+ xNL__b18yKuYMBhYE@2VCTctRL}1CrGd^Y5M>Fzc*u{ zt-yQsN5&3&I8RMKv?xtDBq!XXe}Hv&=&5$3nIokO&WYyR_-y-XBI%`mKcP9aEbDxj;aMRm^7+!LZI74EeAq0; Zz+i98eKo}^<|5F|44$rjF6*2Ung9-sTde>9 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_filter.png b/app/src/main/res/drawable-mdpi/ic_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..5abe76a040c4ad364a715191e7bd5e788a942b8f GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjI-V|$Ar-fh6C_v{H>`T_|NsB= y6^-oYngSgzbI8|-^)PikPI(b&z~#p1$H35ao3VsBU=pUXO@geCx4Y91N@ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-v24/ic_add.xml b/app/src/main/res/drawable-v24/ic_add.xml new file mode 100644 index 00000000..eb232541 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_add.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable-v24/ic_image.xml b/app/src/main/res/drawable-v24/ic_image.xml new file mode 100644 index 00000000..8232c4de --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_image.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable-v24/like_selector.xml b/app/src/main/res/drawable-v24/like_selector.xml new file mode 100644 index 00000000..562092d5 --- /dev/null +++ b/app/src/main/res/drawable-v24/like_selector.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/ic_duration.png b/app/src/main/res/drawable-xhdpi/ic_duration.png new file mode 100644 index 0000000000000000000000000000000000000000..a90a4c294bebddeef9cadefb8c000d7b8bfe4d7a GIT binary patch literal 712 zcmV;(0yq7MP)^sF2bMz1Vdvj(0%($Tak1@o|*$eo~yu45HVyy?h*%32mviiM^ z3jUDSldO7yfpt7=@f@G=U2VMi&!OFjLz%pI^(>kK7>5G*uQjIlBIh*0u1YB%c&JXu zLe?=xxjaThqYXT#DTSDe+>N|=3JzF8{+2NmqfxeHYdvXTH@siFo{uSa)`;Dm00z;T z#vAhx+HAkerBg7K>49K!ZY!j?cJqETWK`5lX#>ED|Spt8C25i8P3T ztv4CnE?9_Mf6>J;A{o^>$lT55Z{CIC|{8u@m4hgL+U zNmPTWIGq+(MIC5GRe4l3$V#U*3K~wJs~0p>Nf~k`^j=b`7ud&YBv5S?Xn3r)3e}bm z?w68OsvEJ&jV-ES9NO6OA1Lu#i*THB!^vkvvA)WRJ8p9q@A%sE03RjRC_1?fSpf63 z*OACIS5W>rv}m(0u)S^ZkPD8w^B4Jo!)e6M)eJCR@9m1Ibz2TJ1Yd$!^vE;4r3VqVEh5gnKn)0UPSl+0000G(H)A zSj2VZmJsZ%6>N{$>sALH(% z3P5gy0)#EzUyGR{U@h7Hz5s3N2eE4aYA3=O&?&H{CqNmukefnoF?^6g-62%~xh9gB zMx^xl#`%j=(gYwUUO6r3M24NQ;CEt>Z`#;Zdh&MV(bRlgBo_c2yxK}t*_&hnAa;<( zKEbm3;5U;&GDXJ9kC_XJSR+9Ss0JS6qj_0n*5qANzA_ z@Rm;h$7NaH!EjjvFc_0)!;S9zE-Bcm+g+V-@H(@;H|oa(P*mAm%k(dp53JG$5Gqhp-(U8pnXA-jmFFs8}_LZVVi#7xM1LdnX%v3io0RR91 M07*qoM6N<$f-1}$r2qf` literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_fav_in_active_white.png b/app/src/main/res/drawable-xhdpi/ic_fav_in_active_white.png new file mode 100644 index 0000000000000000000000000000000000000000..5a4b77c07c9f07fc22a8263f89060bcc190d7ddf GIT binary patch literal 387 zcmV-}0et?6P)Nkl_kfG zi@dt*1J{4yAYlIRS!#L$0KM;8x!h=e3ANZW(r+E$l9O`8*n=LeB!&oYJ|RRr^A^M_ zOY_#5(VnIG2Kd_ai%%m;wD-@FB}Vumv^<}Hvl%4C@sVu?Q6B!C#4js*!rhy^YFkUanZ002ovPDHLkV1lbUqbmRa literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_filter.png b/app/src/main/res/drawable-xhdpi/ic_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..5ee4268d62fe0cc4062fbe6ec70bfcaebe776084 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCJ5LwKkcwMxuR8KFDDbcx{B^x; zxidq)N8`*TOy4fAW@1Q~m{MZJ$mGY)@Mq@*CYFephPnA+4Gq_s85s187!8Y9&oY-; Rh5=1t@O1TaS?83{1OP(-A}jy^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_duration.png b/app/src/main/res/drawable-xxhdpi/ic_duration.png new file mode 100644 index 0000000000000000000000000000000000000000..cadbe9ac12833060ce3cb976c925a91e77e771cd GIT binary patch literal 1008 zcmVN<5LE+dAPu+x(vyP^aRVv9Dj)?U1(*dm1*8DG05PH`zQ~6hT?R!R+(fVd^cp0Oc-&a;%>TsR^Mrk)(JRo zj2n%pYHQcPcjCb6zhwcA+RS|@C{@>guOIgpQ`dv<>SqLk1-fZAk&6JQt+vCOa-(ML zVQrr6UH@Jjq)>1`JUBO}#apeB6-XiAD4p?;B1%(457zXFo6KfB3K5q%@V>02wC|3vd%I8dc839w|3KF0-GctT`>0I6w}IHt~Un zYfQYzolpUQ3>S@y*(7U*DK-wTSq`9ai#%yP+*PNuUg7{zUOJ|rIm#MS0AYR|oR!Riaco=)AkuRcfHDS%Gc|f10NKU_34NCWP&=2B{-=yg8QJ5( zcbm1Dw_bbe$XaeF)}=P{Vvgcl#O*5rCW;-gqbL_@ycYv!ir0$WlynPesNrD8-AaH$ z#4fhRg_W%)i?39=BSq|V2SaDvg1 zO4<{MowLHimb7At;U5Ysj2Jp{WY1>=S*$g zf6MXiS@cZx?4uoJ^Jt%Zv0%#_3^`hJvP;_olljB%_NuEL`mDAs1+C=0 zcW+$gonAsMBDHKOU&&`TQB#OF6K5ORN7HbiYjn@1E%KcW428LEhwITqbIS?NW?~vO zZ7-zH@a`-wIA@>~nA@dz;R z@&(bu5k-eQq)ee{ZA&QhQURnj%xKe>Oa!UE0uTeBRYHJPI$Mh}rKYjOSL=iTEieaR zk~T>eRlLK39n{a%X>;uWUcy| z6=E9ULD|$^P3&iT9n;o>`a*rOTKb8px?!c7(LB`TEXi#}&+>D~$>V~h>>SIg=Il2^ zA}SZKLIRwYgff~0kOLCnKoA5$5Cr+5KM+(@^b4AYpa1{>07*qoM6N<$g5@F| AlK=n! literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_fav_in_active.png b/app/src/main/res/drawable-xxhdpi/ic_fav_in_active.png new file mode 100644 index 0000000000000000000000000000000000000000..2c48c5daaf4aeef8425d66e7d3ddc049374dc50e GIT binary patch literal 913 zcmV;C18)3@P)`kJBFkjvP1|;b>&zD zK@y-v8~;5WBI^<0CjbH+^jxZ^wc$&Dc9RM&?dF=)xc?o)}Pcpd{t#2y2#K{=B@S%7Jf#Wf`)P6Z5I8 zzWOSApnSXH&62bT1B(ojWpo9d(^ySeuVR!Pd2Yts0p7uHoU%Z7F=D{XxfLE-6U3JP zu=I>U@pns%6zk#m(6#ugy9Oo-|!xG7g}6$TTVAt zCu?ZoJ6WwRiQLV#qM+5wuuw2P+iu00Uzwn5Q=A%*W34F2&Fs5PgwGxs)9vrYAyQE{!IrA*ID=T*$q5#WpWnj=~){lUk5{Lnt%`3B;iD*~QA{CtH~jG}u&n z=SKH&3vzchy~=yQczunRWPGWreDMj*QT|fP>6W~Hz zKgX_iG?FNH2a<&W=lS_vbDez0GBU+aQ8`)%Nv@h4rXj0IkweOl5|GpfYwNzR+jWI_2Kkh3F)TAILbIp2vCB}vISBx!we n37|yQt>h>a3WY+UP)q}_SG)^1iZF-F00000NkvXXu0mjfZn>L` literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_fav_in_active_white.png b/app/src/main/res/drawable-xxhdpi/ic_fav_in_active_white.png new file mode 100644 index 0000000000000000000000000000000000000000..fc06011cbb32095ea9540d0311c38ba923858798 GIT binary patch literal 526 zcmV+p0`dKcP)8HS68chWwClz9@S@!{2oE9tGZUNuKgEBY~oiGu_(YayCjcz zRKF{}h*O-1RrvsOH%NAG`NW%p4?&!aC3C&Ig43Q%cJJZcbWqcFAdc1A1XEZ@csrV| zn^-r3QKNexg$+Qq;A}0ya0hXQ(5IDdBnd~cS}Hi)QNljVDFBTL0~#snoH=pV7(F&d zk*Y)HOkA1(sxtyqn*i!F0@MSL1wbMrK*9vjoRduey)ptcVGY6}eab)BX6W6R0J@=) z{tRit0<8!1$N)%GLy@jWoViqFT@SZ#BCC%&=2L+~@(U+$NMXPU6jE4l z0)rGLoIoIj4aYO2IN*4K6c-%Fkm7{n2vXc|EbrZFmXe4eah9TpAf*Xscb@bzJV!2B z4l;n051bvO=fPvryx{E4xOI@8*3Xb5h6Fg8g0cgV{~-Ym1VIo4K~Mnt1;F7JRZ&S< Ql>h($07*qoM6N<$f=J@wC;$Ke literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_filter.png b/app/src/main/res/drawable-xxhdpi/ic_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..78e0bda2528e7851e1e02dcf328e924600ea03df GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!0iG_7Ar-gYUUTGSFyLX{`003< zpJc~d!>!vyn7(_70#z^^2==Uc#3JOO(8zL2fP;bI*q+=*2$zYW;r#sV4osXX6C9Wr aL26?x45N8@q_diDfOwv+elF{r5}E*XEF^>g literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/poppins_regular.ttf b/app/src/main/res/font/poppins_regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..441d3baab4f3bfc1ce251942e420988fac12a8f4 GIT binary patch literal 144776 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 BKN - + tools:context=".ui.MainActivity"> - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_movie_details.xml b/app/src/main/res/layout/fragment_movie_details.xml new file mode 100644 index 00000000..7e8bb302 --- /dev/null +++ b/app/src/main/res/layout/fragment_movie_details.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_movies_listing.xml b/app/src/main/res/layout/fragment_movies_listing.xml new file mode 100644 index 00000000..52d997cf --- /dev/null +++ b/app/src/main/res/layout/fragment_movies_listing.xml @@ -0,0 +1,33 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_offline_movies.xml b/app/src/main/res/layout/fragment_offline_movies.xml new file mode 100644 index 00000000..52d997cf --- /dev/null +++ b/app/src/main/res/layout/fragment_offline_movies.xml @@ -0,0 +1,33 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_review_details.xml b/app/src/main/res/layout/fragment_review_details.xml new file mode 100644 index 00000000..f621056d --- /dev/null +++ b/app/src/main/res/layout/fragment_review_details.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_reviews_listing.xml b/app/src/main/res/layout/fragment_reviews_listing.xml new file mode 100644 index 00000000..52d997cf --- /dev/null +++ b/app/src/main/res/layout/fragment_reviews_listing.xml @@ -0,0 +1,33 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_image.xml b/app/src/main/res/layout/item_image.xml new file mode 100644 index 00000000..58ca61d1 --- /dev/null +++ b/app/src/main/res/layout/item_image.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_review.xml b/app/src/main/res/layout/item_review.xml new file mode 100644 index 00000000..4d24249d --- /dev/null +++ b/app/src/main/res/layout/item_review.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_shopping.xml b/app/src/main/res/layout/item_shopping.xml new file mode 100644 index 00000000..90731271 --- /dev/null +++ b/app/src/main/res/layout/item_shopping.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/app_bar_menu.xml b/app/src/main/res/menu/app_bar_menu.xml new file mode 100644 index 00000000..6c15b554 --- /dev/null +++ b/app/src/main/res/menu/app_bar_menu.xml @@ -0,0 +1,30 @@ + +

+ + + + + + + + + + + + + diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 15ac681720f3df43c647bf0c081f0314ee34eae1..a00a376261beb4bed17ff593086865fe4f0e34fd 100644 GIT binary patch literal 21186 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 literal 7909 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 diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml new file mode 100644 index 00000000..8246779b --- /dev/null +++ b/app/src/main/res/navigation/nav_graph.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml deleted file mode 100644 index 6319378c..00000000 --- a/app/src/main/res/values-night/themes.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f8c6127d..fa4ca9b8 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,10 +1,17 @@ - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 - #FF000000 - #FFFFFFFF + + + + + #448AFF + #448AFF + #D1C4E9 + #448AFF + #212121 + #757575 + #FFFFFF + #BDBDBD + #8D000000 + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b7c55336..a2ef7101 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,22 @@ - MovieApp + Movies + Filter + Language + Trending + Most Popular Movies + No Internet connection + No Reviews for this film + No saved movies + + + High Rated Movies + View reviews + User Score + Reviews + A review by %1$s. + Written by %1$s on %2$s + Review Details + Movie Details + Likes + Overview \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..49026db2 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml deleted file mode 100644 index 097b75af..00000000 --- a/app/src/main/res/values/themes.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file From e85db91db9ed0286d75a638f173ec8fe2370f1fb Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 16:32:41 +0200 Subject: [PATCH 04/15] Update gradle files --- .idea/gradle.xml | 1 + .idea/jarRepositories.xml | 5 +++++ app/build.gradle | 28 +++++++++++++--------------- app/gradle.properties | 2 -- build.gradle | 5 +++-- 5 files changed, 22 insertions(+), 19 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 18de3ac5..23a89bbb 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,5 +1,6 @@ + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 0d054471..a2c6402c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,21 +1,20 @@ -plugins { - id 'com.android.application' - id 'kotlin-android' - - id 'kotlin-android-extensions' - id 'kotlin-kapt' - id "androidx.navigation.safeargs.kotlin" - id 'dagger.hilt.android.plugin' -} +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' +apply plugin: "androidx.navigation.safeargs.kotlin" +apply plugin: 'dagger.hilt.android.plugin' android { - compileSdkVersion 31 - buildToolsVersion "30.0.3" - + compileSdkVersion 29 + buildToolsVersion "29.0.3" + buildFeatures { + buildConfig = true + } defaultConfig { applicationId "com.movies.tmdb" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 29 versionCode 1 versionName "1.0" @@ -33,7 +32,7 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { - jvmTarget = '1.8' + jvmTarget = JavaVersion.VERSION_1_8.toString() } } @@ -104,7 +103,6 @@ dependencies { - // Local Unit Tests implementation "androidx.test:core:1.2.0" testImplementation "junit:junit:4.13" diff --git a/app/gradle.properties b/app/gradle.properties index 9349907f..2f744e37 100644 --- a/app/gradle.properties +++ b/app/gradle.properties @@ -20,5 +20,3 @@ android.enableJetifier=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official - -API_KEY = "d9e7589213d1b047222f2774b376c82a" \ No newline at end of file diff --git a/build.gradle b/build.gradle index eb48176d..5e879e3d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,12 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = "1.4.32" + ext.kotlin_version = "1.3.72" repositories { google() jcenter() } dependencies { - classpath "com.android.tools.build:gradle:4.0.1" + classpath "com.android.tools.build:gradle:4.0.1" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0" classpath "com.google.dagger:hilt-android-gradle-plugin:2.28.3-alpha" @@ -19,6 +19,7 @@ allprojects { repositories { google() jcenter() + maven { url 'https://jitpack.io' } } } From 49aadc66425fe34a23f147ae2e98a6c4cd482658 Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 16:36:30 +0200 Subject: [PATCH 05/15] Adding the helper classes --- .../java/com/movies/tmdb/other/Constants.kt | 25 ++++++++ .../main/java/com/movies/tmdb/other/Event.kt | 27 ++++++++ .../java/com/movies/tmdb/other/Extensions.kt | 61 +++++++++++++++++++ .../java/com/movies/tmdb/other/Resource.kt | 23 +++++++ 4 files changed, 136 insertions(+) create mode 100644 app/src/main/java/com/movies/tmdb/other/Constants.kt create mode 100644 app/src/main/java/com/movies/tmdb/other/Event.kt create mode 100644 app/src/main/java/com/movies/tmdb/other/Extensions.kt create mode 100644 app/src/main/java/com/movies/tmdb/other/Resource.kt diff --git a/app/src/main/java/com/movies/tmdb/other/Constants.kt b/app/src/main/java/com/movies/tmdb/other/Constants.kt new file mode 100644 index 00000000..ab851ce1 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/other/Constants.kt @@ -0,0 +1,25 @@ +package com.movies.tmdb.other + +object Constants { + + const val DATABASE_NAME = "movies_db" + + const val API_KEY = "d9e7589213d1b047222f2774b376c82a" + const val BASE_URL = "https://api.themoviedb.org/3/" + const val BASE_FOR_FULL_IMAGE = "https://image.tmdb.org/t/p/original" + const val BASE_FOR_THUMB_IMAGE = "https://image.tmdb.org/t/p/w500" + + + const val GRID_SPAN_COUNT = 2 + + + enum class FilterId(val filterId: Int) { + MOST_POPULAR(1), + TOP_RATED(2) + } + + enum class LanguageCode(val languageCode: String) { + SWEDEN("sv"), + ENGLISH("en") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/other/Event.kt b/app/src/main/java/com/movies/tmdb/other/Event.kt new file mode 100644 index 00000000..18acfbaa --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/other/Event.kt @@ -0,0 +1,27 @@ +package com.movies.tmdb.other + +/** + * Used as a wrapper for data that is exposed via a LiveData that represents an event. + */ +open class Event(private val content: T) { + + var hasBeenHandled = false + private set // Allow external read but not write + + /** + * Returns the content and prevents its use again. + */ + fun getContentIfNotHandled(): T? { + return if (hasBeenHandled) { + null + } else { + hasBeenHandled = true + content + } + } + + /** + * Returns the content, even if it's already been handled. + */ + fun peekContent(): T = content +} diff --git a/app/src/main/java/com/movies/tmdb/other/Extensions.kt b/app/src/main/java/com/movies/tmdb/other/Extensions.kt new file mode 100644 index 00000000..8c47cfe2 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/other/Extensions.kt @@ -0,0 +1,61 @@ +package com.movies.tmdb.other + +import android.content.Context +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.net.ConnectivityManager +import android.net.NetworkCapabilities +import android.util.Base64 +import android.util.Log +import android.widget.Toast +import java.io.ByteArrayOutputStream +import java.util.* + + +object Extensions { + + fun Bitmap.toBase64String(): String { + ByteArrayOutputStream().apply { + compress(Bitmap.CompressFormat.JPEG, 10, this) + return Base64.encodeToString(toByteArray(), Base64.DEFAULT) + } + } + + fun String.base64ToBitmap(): Bitmap? { + val imageAsBytes = Base64.decode(this.toByteArray(), Base64.DEFAULT) + return BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.size) + } + + fun Context.setAppLocale(language: String): Context { + val locale = Locale(language) + Locale.setDefault(locale) + val config = resources.configuration + config.setLocale(locale) + config.setLayoutDirection(locale) + return createConfigurationContext(config) + } + + fun Context.toast(message: String) { + Toast.makeText(this, message, Toast.LENGTH_LONG).show() + } + + fun Context.isOnline(): Boolean { + val connectivityManager = + getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + val capabilities = + connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork) + if (capabilities != null) { + if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { + Log.i("Internet", "NetworkCapabilities.TRANSPORT_CELLULAR") + return true + } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { + Log.i("Internet", "NetworkCapabilities.TRANSPORT_WIFI") + return true + } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) { + Log.i("Internet", "NetworkCapabilities.TRANSPORT_ETHERNET") + return true + } + } + return false + } +} \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/other/Resource.kt b/app/src/main/java/com/movies/tmdb/other/Resource.kt new file mode 100644 index 00000000..a305abea --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/other/Resource.kt @@ -0,0 +1,23 @@ +package com.movies.tmdb.other + +data class Resource(val status: Status, val data: T?, val message: String?) { + companion object { + fun success(data: T?): Resource { + return Resource(Status.SUCCESS, data, null) + } + + fun error(msg: String, data: T?): Resource { + return Resource(Status.ERROR, data, msg) + } + + fun loading(data: T?): Resource { + return Resource(Status.LOADING, data, null) + } + } +} + +enum class Status { + SUCCESS, + ERROR, + LOADING +} \ No newline at end of file From 46c5575b6f7280071134e2c011b63756a5fe0342 Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 16:44:28 +0200 Subject: [PATCH 06/15] Prepare the api calls and responses --- .../com/movies/tmdb/data/remote/TmdbApi.kt | 50 +++++++++++++++++++ .../data/remote/responses/IdAndNameObject.kt | 7 +++ .../remote/responses/MovieDetailsResponse.kt | 27 ++++++++++ .../tmdb/data/remote/responses/MovieObject.kt | 34 +++++++++++++ .../data/remote/responses/MoviesResponse.kt | 7 +++ .../data/remote/responses/ReviewObject.kt | 15 ++++++ .../data/remote/responses/ReviewResponse.kt | 7 +++ 7 files changed, 147 insertions(+) create mode 100644 app/src/main/java/com/movies/tmdb/data/remote/TmdbApi.kt create mode 100644 app/src/main/java/com/movies/tmdb/data/remote/responses/IdAndNameObject.kt create mode 100644 app/src/main/java/com/movies/tmdb/data/remote/responses/MovieDetailsResponse.kt create mode 100644 app/src/main/java/com/movies/tmdb/data/remote/responses/MovieObject.kt create mode 100644 app/src/main/java/com/movies/tmdb/data/remote/responses/MoviesResponse.kt create mode 100644 app/src/main/java/com/movies/tmdb/data/remote/responses/ReviewObject.kt create mode 100644 app/src/main/java/com/movies/tmdb/data/remote/responses/ReviewResponse.kt diff --git a/app/src/main/java/com/movies/tmdb/data/remote/TmdbApi.kt b/app/src/main/java/com/movies/tmdb/data/remote/TmdbApi.kt new file mode 100644 index 00000000..270473b2 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/data/remote/TmdbApi.kt @@ -0,0 +1,50 @@ +package com.movies.tmdb.data.remote + +import com.movies.tmdb.data.remote.responses.MovieDetailsResponse +import com.movies.tmdb.data.remote.responses.MoviesResponse +import com.movies.tmdb.data.remote.responses.ReviewResponse +import com.movies.tmdb.other.Constants.API_KEY +import retrofit2.Response +import retrofit2.http.GET +import retrofit2.http.Path +import retrofit2.http.Query + +interface TmdbApi { + + + + @GET("movie/top_rated") + suspend fun getTopRatedMovies( + @Query("page") page: Int, + @Query("api_key") apiKey: String = API_KEY + + ): Response + + + + @GET("movie/popular") + suspend fun getMostPopularMovies( + @Query("page") page: Int, + @Query("api_key") apiKey: String = API_KEY + + ): Response + + + @GET("movie/popular") + suspend fun getMovieDetails( + @Query("page") page: Int, + @Query("api_key") apiKey: String = API_KEY + + ): Response + + + + + @GET("movie/{movie_id}/reviews") + suspend fun getMovieReview( + @Path("movie_id") movieId:Int, + @Query("page") page: Int, + @Query("api_key") apiKey: String = API_KEY + + ): Response +} \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/data/remote/responses/IdAndNameObject.kt b/app/src/main/java/com/movies/tmdb/data/remote/responses/IdAndNameObject.kt new file mode 100644 index 00000000..c7bd4443 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/data/remote/responses/IdAndNameObject.kt @@ -0,0 +1,7 @@ +package com.movies.tmdb.data.remote.responses + + +data class IdAndNameObject( + var id: Int, + var name: String +) \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/data/remote/responses/MovieDetailsResponse.kt b/app/src/main/java/com/movies/tmdb/data/remote/responses/MovieDetailsResponse.kt new file mode 100644 index 00000000..e9b60f97 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/data/remote/responses/MovieDetailsResponse.kt @@ -0,0 +1,27 @@ +package com.movies.tmdb.data.remote.responses + +import com.google.gson.annotations.SerializedName +import com.movies.tmdb.other.Constants + + +class MovieDetailsResponse( + var adult: Boolean = false, + var id: Int, + var genres: List, + @SerializedName("original_title") + var originalTitle: String, + var overview: String, + @SerializedName("poster_path") + var posterPath: String, + @SerializedName("release_date") + var releaseDate: String, + var title: String, + var runtime: Float, + var status: String, + @SerializedName("vote_average") + var voteAverage: Float +) { + + fun getPosterFullImage(): String = Constants.BASE_FOR_FULL_IMAGE.plus(posterPath) + +} diff --git a/app/src/main/java/com/movies/tmdb/data/remote/responses/MovieObject.kt b/app/src/main/java/com/movies/tmdb/data/remote/responses/MovieObject.kt new file mode 100644 index 00000000..5377a08a --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/data/remote/responses/MovieObject.kt @@ -0,0 +1,34 @@ +package com.movies.tmdb.data.remote.responses + + +import android.os.Parcelable +import androidx.room.Entity +import androidx.room.PrimaryKey +import com.google.gson.annotations.SerializedName +import com.movies.tmdb.other.Constants +import kotlinx.android.parcel.Parcelize + +@Parcelize +@Entity(tableName = "shopping_items") +data class MovieObject( + var adult: Boolean = false, + @PrimaryKey + var id: Int, + @SerializedName("original_title") + var originalTitle: String, + var overview: String, + @SerializedName("poster_path") + var posterPath: String, + @SerializedName("release_date") + var releaseDate: String, + var title: String, + @SerializedName("vote_average") + var voteAverage: Float, + + var imageBase64: String? + +) : Parcelable { + fun getPosterThumb(): String = Constants.BASE_FOR_THUMB_IMAGE.plus(posterPath) + fun getPosterFullImage(): String = Constants.BASE_FOR_FULL_IMAGE.plus(posterPath) + +} \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/data/remote/responses/MoviesResponse.kt b/app/src/main/java/com/movies/tmdb/data/remote/responses/MoviesResponse.kt new file mode 100644 index 00000000..4d3409b5 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/data/remote/responses/MoviesResponse.kt @@ -0,0 +1,7 @@ +package com.movies.tmdb.data.remote.responses + + +data class MoviesResponse( + val results: List + +) \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/data/remote/responses/ReviewObject.kt b/app/src/main/java/com/movies/tmdb/data/remote/responses/ReviewObject.kt new file mode 100644 index 00000000..78c5542c --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/data/remote/responses/ReviewObject.kt @@ -0,0 +1,15 @@ +package com.movies.tmdb.data.remote.responses + + +import android.os.Parcelable +import com.google.gson.annotations.SerializedName +import kotlinx.android.parcel.Parcelize + +@Parcelize +data class ReviewObject( + var id: String, + var author: String, + var content: String, + @SerializedName("created_at") + var createdAt: String +): Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/data/remote/responses/ReviewResponse.kt b/app/src/main/java/com/movies/tmdb/data/remote/responses/ReviewResponse.kt new file mode 100644 index 00000000..9152f0a8 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/data/remote/responses/ReviewResponse.kt @@ -0,0 +1,7 @@ +package com.movies.tmdb.data.remote.responses + + +data class ReviewResponse( + val results: List + +) \ No newline at end of file From ec13ad8029bd4d76e95c6f0ef5d0129e5f755ca0 Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 16:45:09 +0200 Subject: [PATCH 07/15] Prepare the local db and the repos --- .../com/movies/tmdb/data/local/MoviesDao.kt | 24 ++++ .../movies/tmdb/data/local/MoviesDatabase.kt | 14 +++ .../repositories/DefaultMoviesRepository.kt | 106 ++++++++++++++++++ .../tmdb/repositories/MoviesRepository.kt | 21 ++++ 4 files changed, 165 insertions(+) create mode 100644 app/src/main/java/com/movies/tmdb/data/local/MoviesDao.kt create mode 100644 app/src/main/java/com/movies/tmdb/data/local/MoviesDatabase.kt create mode 100644 app/src/main/java/com/movies/tmdb/repositories/DefaultMoviesRepository.kt create mode 100644 app/src/main/java/com/movies/tmdb/repositories/MoviesRepository.kt diff --git a/app/src/main/java/com/movies/tmdb/data/local/MoviesDao.kt b/app/src/main/java/com/movies/tmdb/data/local/MoviesDao.kt new file mode 100644 index 00000000..457dea81 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/data/local/MoviesDao.kt @@ -0,0 +1,24 @@ +package com.movies.tmdb.data.local + +import androidx.lifecycle.LiveData +import androidx.room.* +import com.movies.tmdb.data.remote.responses.MovieObject + +@Dao +interface MoviesDao { + + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insertMovie(movieItem: MovieObject) + + @Query("DELETE FROM shopping_items WHERE id = :id") + suspend fun deleteMovie(id: Int) + + + @Query("SELECT * FROM shopping_items") + fun observeAllMovies(): LiveData> + + @Query("SELECT EXISTS (SELECT 1 FROM shopping_items WHERE id = :id)") + suspend fun isMovieExistsOffline(id: Int): Boolean + + +} \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/data/local/MoviesDatabase.kt b/app/src/main/java/com/movies/tmdb/data/local/MoviesDatabase.kt new file mode 100644 index 00000000..8ed007a5 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/data/local/MoviesDatabase.kt @@ -0,0 +1,14 @@ +package com.movies.tmdb.data.local + +import androidx.room.Database +import androidx.room.RoomDatabase +import com.movies.tmdb.data.remote.responses.MovieObject + +@Database( + entities = [MovieObject::class], + version = 1 +) +abstract class MoviesDatabase : RoomDatabase() { + + abstract fun moviesDao(): MoviesDao +} \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/repositories/DefaultMoviesRepository.kt b/app/src/main/java/com/movies/tmdb/repositories/DefaultMoviesRepository.kt new file mode 100644 index 00000000..af44a767 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/repositories/DefaultMoviesRepository.kt @@ -0,0 +1,106 @@ +package com.movies.tmdb.repositories + +import android.util.Log +import androidx.lifecycle.LiveData +import com.movies.tmdb.data.local.MoviesDao +import com.movies.tmdb.data.remote.TmdbApi +import com.movies.tmdb.data.remote.responses.MovieDetailsResponse +import com.movies.tmdb.data.remote.responses.MovieObject +import com.movies.tmdb.data.remote.responses.MoviesResponse +import com.movies.tmdb.data.remote.responses.ReviewResponse +import com.movies.tmdb.other.Constants +import com.movies.tmdb.other.Resource +import retrofit2.Response +import javax.inject.Inject + +class DefaultMoviesRepository @Inject constructor( + private val moviesDao: MoviesDao, + private val tmdbApi: TmdbApi +) : MoviesRepository { + + override suspend fun insertShoppingItem(shoppingItem: MovieObject) { + moviesDao.insertMovie(shoppingItem) + } + + override suspend fun deleteShoppingItem(id: Int) { + moviesDao.deleteMovie(id) + } + + override fun observeAllShoppingItems(): LiveData> { + return moviesDao.observeAllMovies() + } + + override suspend fun isMovieExistsOffline(id: Int): Boolean { + return moviesDao.isMovieExistsOffline(id) + } + + override suspend fun getListOfMovies(filterId: Int, page: Int): Resource { + return try { + var response: Response? = null + when (filterId) { + Constants.FilterId.TOP_RATED.filterId -> response = + tmdbApi.getTopRatedMovies(page) + Constants.FilterId.MOST_POPULAR.filterId -> response = + tmdbApi.getMostPopularMovies(page) + } + if (response!!.isSuccessful) { + response.body()?.let { + return@let Resource.success(it) + } ?: Resource.error("An unknown error occured", null) + } else { + Resource.error("An unknown error occured", null) + } + } catch (e: Exception) { + Log.e("EXCEPTION", "EXCEPTION:", e) + Resource.error("Couldn't reach the server. Check your internet connection", null) + } + } + + override suspend fun getMovieDetails(movieId: Int): Resource { + return try { + var response = tmdbApi.getMovieDetails(movieId) + + if (response.isSuccessful) { + response.body().let { + return@let Resource.success(it) + } ?: Resource.error("An unknown error occured", null) + } else { + Resource.error("An unknown error occured", null) + } + } catch (e: Exception) { + Log.e("EXCEPTION", "EXCEPTION:", e) + Resource.error("Couldn't reach the server. Check your internet connection", null) + } + } + + override suspend fun getMovieReviews(movieId: Int, page: Int): Resource { + return try { + var response = tmdbApi.getMovieReview(movieId, page) + + if (response.isSuccessful) { + response.body()?.let { + return@let Resource.success(it) + } ?: Resource.error("An unknown error occured", null) + } else { + Resource.error("An unknown error occured", null) + } + } catch (e: Exception) { + Log.e("EXCEPTION", "EXCEPTION:", e) + Resource.error("Couldn't reach the server. Check your internet connection", null) + } + } +} + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/movies/tmdb/repositories/MoviesRepository.kt b/app/src/main/java/com/movies/tmdb/repositories/MoviesRepository.kt new file mode 100644 index 00000000..bf151d5c --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/repositories/MoviesRepository.kt @@ -0,0 +1,21 @@ +package com.movies.tmdb.repositories + +import androidx.lifecycle.LiveData +import com.movies.tmdb.data.remote.responses.MovieDetailsResponse +import com.movies.tmdb.data.remote.responses.MovieObject +import com.movies.tmdb.data.remote.responses.MoviesResponse +import com.movies.tmdb.data.remote.responses.ReviewResponse +import com.movies.tmdb.other.Resource + +interface MoviesRepository { + + suspend fun insertShoppingItem(shoppingItem: MovieObject) + suspend fun deleteShoppingItem(id: Int) + fun observeAllShoppingItems(): LiveData> + suspend fun isMovieExistsOffline(id: Int): Boolean + + suspend fun getListOfMovies(filterId: Int, page: Int): Resource + suspend fun getMovieDetails(movieId: Int): Resource + suspend fun getMovieReviews(movieId: Int, page: Int): Resource + +} \ No newline at end of file From 6aa521b10b85779948733db61ebf1d0b88507479 Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 16:45:54 +0200 Subject: [PATCH 08/15] Prepare the DI --- .../java/com/movies/tmdb/MoviesApplication.kt | 7 ++ .../main/java/com/movies/tmdb/di/AppModule.kt | 103 ++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 app/src/main/java/com/movies/tmdb/MoviesApplication.kt create mode 100644 app/src/main/java/com/movies/tmdb/di/AppModule.kt diff --git a/app/src/main/java/com/movies/tmdb/MoviesApplication.kt b/app/src/main/java/com/movies/tmdb/MoviesApplication.kt new file mode 100644 index 00000000..3d352317 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/MoviesApplication.kt @@ -0,0 +1,7 @@ +package com.movies.tmdb + +import android.app.Application +import dagger.hilt.android.HiltAndroidApp + +@HiltAndroidApp +class MoviesApplication : Application() \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/di/AppModule.kt b/app/src/main/java/com/movies/tmdb/di/AppModule.kt new file mode 100644 index 00000000..73f9757a --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/di/AppModule.kt @@ -0,0 +1,103 @@ +package com.movies.tmdb.di + +import android.content.Context +import androidx.room.Room +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.movies.tmdb.R +import com.movies.tmdb.data.local.MoviesDao +import com.movies.tmdb.data.local.MoviesDatabase +import com.movies.tmdb.data.remote.TmdbApi +import com.movies.tmdb.other.Constants.BASE_URL +import com.movies.tmdb.other.Constants.DATABASE_NAME +import com.movies.tmdb.repositories.DefaultMoviesRepository +import com.movies.tmdb.repositories.MoviesRepository +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.components.ApplicationComponent +import dagger.hilt.android.qualifiers.ApplicationContext +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory +import javax.inject.Singleton + +@Module +@InstallIn(ApplicationComponent::class) +object AppModule { + + @Singleton + @Provides + fun provideMoviesDatabase( + @ApplicationContext context: Context + ) = Room.databaseBuilder(context, MoviesDatabase::class.java, DATABASE_NAME).build() + + @Singleton + @Provides + fun provideDefaultMoviesRepository( + + dao: MoviesDao, + api: TmdbApi + ) = DefaultMoviesRepository(dao, api) as MoviesRepository + + + @Singleton + @Provides + fun providesHttpLoggingInterceptor() = HttpLoggingInterceptor() + .apply { + level = HttpLoggingInterceptor.Level.BODY + } + + @Singleton + @Provides + fun providesOkHttpClient(httpLoggingInterceptor: HttpLoggingInterceptor): OkHttpClient = + OkHttpClient + .Builder() + .addInterceptor(httpLoggingInterceptor) + .build() + + @Singleton + @Provides + fun provideGlideInstance( + @ApplicationContext context: Context + ) = Glide.with(context).setDefaultRequestOptions( + RequestOptions() + .placeholder(R.drawable.ic_image) + .error(R.drawable.ic_image) + ) + + @Singleton + @Provides + fun provideMoviesDao( + database: MoviesDatabase + ) = database.moviesDao() + + @Singleton + @Provides + fun provideTmdbApi(okHttpClient: OkHttpClient): TmdbApi { + return Retrofit.Builder() + .addConverterFactory(GsonConverterFactory.create()) + .client(okHttpClient) + .baseUrl(BASE_URL) + .build() + .create(TmdbApi::class.java) + } +} + + + + + + + + + + + + + + + + + From 0989b97214bc489f3f0465276c06131ef40afd5a Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 16:46:42 +0200 Subject: [PATCH 09/15] Prepare the Adapters --- .../com/movies/tmdb/adapters/MoviesAdapter.kt | 88 +++++++++++++++++++ .../movies/tmdb/adapters/ReviewsAdapter.kt | 81 +++++++++++++++++ .../layout/{item_image.xml => item_movie.xml} | 0 3 files changed, 169 insertions(+) create mode 100644 app/src/main/java/com/movies/tmdb/adapters/MoviesAdapter.kt create mode 100644 app/src/main/java/com/movies/tmdb/adapters/ReviewsAdapter.kt rename app/src/main/res/layout/{item_image.xml => item_movie.xml} (100%) diff --git a/app/src/main/java/com/movies/tmdb/adapters/MoviesAdapter.kt b/app/src/main/java/com/movies/tmdb/adapters/MoviesAdapter.kt new file mode 100644 index 00000000..8e43e02a --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/adapters/MoviesAdapter.kt @@ -0,0 +1,88 @@ +package com.movies.tmdb.adapters + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.AsyncListDiffer +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.RequestManager +import com.movies.tmdb.R +import com.movies.tmdb.data.remote.responses.MovieObject +import com.movies.tmdb.other.Extensions.base64ToBitmap +import kotlinx.android.synthetic.main.item_movie.view.* +import javax.inject.Inject + +class MoviesAdapter @Inject constructor( + private val glide: RequestManager +) : RecyclerView.Adapter() { + class MoviesViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) + + private val diffCallback = object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: MovieObject, newItem: MovieObject): Boolean { + return oldItem.id == newItem.id + } + + override fun areContentsTheSame(oldItem: MovieObject, newItem: MovieObject): Boolean { + return oldItem == newItem + } + } + + private val differ = AsyncListDiffer(this, diffCallback) + + var movies: List + get() = differ.currentList + set(value) = differ.submitList(value) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MoviesViewHolder { + return MoviesViewHolder( + LayoutInflater.from(parent.context).inflate( + R.layout.item_movie, + parent, + false + ) + ) + } + + private var onItemClickListener: ((MovieObject) -> Unit)? = null + + fun setOnItemClickListener(listener: (MovieObject) -> Unit) { + onItemClickListener = listener + } + + override fun onBindViewHolder(holder: MoviesViewHolder, position: Int) { + val movie = movies[position] + holder.itemView.apply { + if (movie.imageBase64.isNullOrEmpty()) { + glide.load(movie.getPosterFullImage()).into(movieImage) + } else { + movieImage.setImageBitmap(movie.imageBase64!!.base64ToBitmap()) + } + + setOnClickListener { + onItemClickListener?.let { click -> + click(movie) + } + } + } + } + + override fun getItemCount(): Int { + return movies.size + } +} + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/movies/tmdb/adapters/ReviewsAdapter.kt b/app/src/main/java/com/movies/tmdb/adapters/ReviewsAdapter.kt new file mode 100644 index 00000000..a580f325 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/adapters/ReviewsAdapter.kt @@ -0,0 +1,81 @@ +package com.movies.tmdb.adapters + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.AsyncListDiffer +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView +import com.movies.tmdb.R +import com.movies.tmdb.data.remote.responses.ReviewObject +import kotlinx.android.synthetic.main.item_review.view.* +import javax.inject.Inject + + +class ReviewsAdapter@Inject constructor() : RecyclerView.Adapter() { + class ReviewsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) + + private val diffCallback = object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: ReviewObject, newItem: ReviewObject): Boolean { + return oldItem.id == newItem.id + } + + override fun areContentsTheSame(oldItem: ReviewObject, newItem: ReviewObject): Boolean { + return oldItem.hashCode() == newItem.hashCode() + } + } + + private val differ = AsyncListDiffer(this, diffCallback) + + var reviews: List + get() = differ.currentList + set(value) = differ.submitList(value) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ReviewsViewHolder { + return ReviewsViewHolder( + LayoutInflater.from(parent.context).inflate( + R.layout.item_review, + parent, + false + ) + ) + } + + private var onItemClickListener: ((ReviewObject) -> Unit)? = null + + fun setOnItemClickListener(listener: (ReviewObject) -> Unit) { + onItemClickListener = listener + } + + override fun onBindViewHolder(holder: ReviewsViewHolder, position: Int) { + val review = reviews[position] + holder.itemView.apply { + author.text = resources.getString(R.string.author, review.author) + reviewContent.text = review.content + setOnClickListener { + onItemClickListener?.let { click -> + click(review) + } + } + } + } + + override fun getItemCount(): Int { + return reviews.size + } +} + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_image.xml b/app/src/main/res/layout/item_movie.xml similarity index 100% rename from app/src/main/res/layout/item_image.xml rename to app/src/main/res/layout/item_movie.xml From 6d4547591de3bc4fb3f0bf06c1cfba023daad6d6 Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 16:48:39 +0200 Subject: [PATCH 10/15] Prepare the fragments skeleton --- .../java/com/movies/tmdb/ui/MainActivity.kt | 54 ++++++++++++ .../java/com/movies/tmdb/ui/ParentFragment.kt | 86 +++++++++++++++++++ 2 files changed, 140 insertions(+) create mode 100644 app/src/main/java/com/movies/tmdb/ui/MainActivity.kt create mode 100644 app/src/main/java/com/movies/tmdb/ui/ParentFragment.kt diff --git a/app/src/main/java/com/movies/tmdb/ui/MainActivity.kt b/app/src/main/java/com/movies/tmdb/ui/MainActivity.kt new file mode 100644 index 00000000..1291f62a --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/ui/MainActivity.kt @@ -0,0 +1,54 @@ +package com.movies.tmdb.ui + +import android.graphics.drawable.ColorDrawable +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.view.Menu +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import androidx.navigation.NavController +import androidx.navigation.fragment.NavHostFragment +import androidx.navigation.ui.setupActionBarWithNavController +import com.movies.tmdb.R +import dagger.hilt.android.AndroidEntryPoint +import javax.inject.Inject + +@AndroidEntryPoint +class MainActivity : AppCompatActivity() { + + @Inject + lateinit var fragmentFactory: MoviesFragmentFactory + + private lateinit var navController: NavController + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + supportFragmentManager.fragmentFactory = fragmentFactory + setContentView(R.layout.activity_main) + + val navHostFragment = supportFragmentManager + .findFragmentById(R.id.navHostFragment) as NavHostFragment + navController = navHostFragment.navController + + setupActionBarWithNavController(navController) + + supportActionBar!!.setBackgroundDrawable(ColorDrawable(resources.getColor(R.color.accent))) + + ViewModelProvider(this).get(MoviesViewModel::class.java).appBarTitle.observe( + this, + Observer { + supportActionBar?.title = it + }) + } + + override fun onSupportNavigateUp(): Boolean { + return navController.navigateUp() || super.onSupportNavigateUp() + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.app_bar_menu, menu) + return super.onCreateOptionsMenu(menu) + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/ui/ParentFragment.kt b/app/src/main/java/com/movies/tmdb/ui/ParentFragment.kt new file mode 100644 index 00000000..a6ff91e9 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/ui/ParentFragment.kt @@ -0,0 +1,86 @@ +package com.movies.tmdb.ui + +import android.os.Bundle +import android.view.* +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.movies.tmdb.R + + +abstract class ParentFragment(val layout: Int) : Fragment(layout) { + + + lateinit var viewModel: MoviesViewModel + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setHasOptionsMenu(true) + + } + + abstract fun startViewActions() + + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + + super.onViewCreated(view, savedInstanceState) + viewModel = ViewModelProvider(this).get(MoviesViewModel::class.java) + setAppBaeTittle() + startViewActions() + + } + + + private fun setAppBaeTittle() { + when (layout) { + R.layout.fragment_movies_listing -> viewModel.appBarTitle.postValue(getString(R.string.most_popular)) + R.layout.fragment_movie_details -> viewModel.appBarTitle.postValue(getString(R.string.movie_details)) + R.layout.fragment_reviews_listing -> viewModel.appBarTitle.postValue(getString(R.string.reviews)) + R.layout.fragment_review_details -> viewModel.appBarTitle.postValue(getString(R.string.review_details)) + R.layout.fragment_offline_movies -> viewModel.appBarTitle.postValue(getString(R.string.likes)) + } + } + + override fun onPrepareOptionsMenu(menu: Menu) { + when (layout) { + R.layout.fragment_movies_listing -> hideShowBarIcons(true, menu) + else -> { + hideShowBarIcons(false, menu) + } + } + + super.onPrepareOptionsMenu(menu) + } + + + /** + * @param hideIcons variable to show or hide the icons , false will hide icons else will show icons. + */ + + private fun hideShowBarIcons(hideIcons: Boolean, menu: Menu) { + menu.findItem(R.id.fav).isVisible = hideIcons + menu.findItem(R.id.filter).isVisible = hideIcons + } + + +} + + + + + + + + + + + + + + + + + + + + From bef1cc9b93bda0c5783ac8e2d3785aa6d2356b3f Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 16:49:12 +0200 Subject: [PATCH 11/15] Adding the fragments --- app/src/main/AndroidManifest.xml | 10 +- .../main/java/com/movies/tmdb/MainActivity.kt | 11 -- .../movies/tmdb/ui/MovieDetailsFragment.kt | 94 +++++++++++ .../tmdb/ui/MovieReviewDetailsFragment.kt | 28 ++++ .../movies/tmdb/ui/MovieReviewsFragment.kt | 120 ++++++++++++++ .../movies/tmdb/ui/MoviesFragmentFactory.kt | 26 +++ .../movies/tmdb/ui/MoviesListingFragment.kt | 150 ++++++++++++++++++ .../com/movies/tmdb/ui/MoviesViewModel.kt | 79 +++++++++ .../tmdb/ui/OfflineMoviesListingFragment.kt | 61 +++++++ 9 files changed, 565 insertions(+), 14 deletions(-) delete mode 100644 app/src/main/java/com/movies/tmdb/MainActivity.kt create mode 100644 app/src/main/java/com/movies/tmdb/ui/MovieDetailsFragment.kt create mode 100644 app/src/main/java/com/movies/tmdb/ui/MovieReviewDetailsFragment.kt create mode 100644 app/src/main/java/com/movies/tmdb/ui/MovieReviewsFragment.kt create mode 100644 app/src/main/java/com/movies/tmdb/ui/MoviesFragmentFactory.kt create mode 100644 app/src/main/java/com/movies/tmdb/ui/MoviesListingFragment.kt create mode 100644 app/src/main/java/com/movies/tmdb/ui/MoviesViewModel.kt create mode 100644 app/src/main/java/com/movies/tmdb/ui/OfflineMoviesListingFragment.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8c312f12..8f0c60ba 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,15 +1,19 @@ + + + - + android:theme="@style/AppTheme"> + diff --git a/app/src/main/java/com/movies/tmdb/MainActivity.kt b/app/src/main/java/com/movies/tmdb/MainActivity.kt deleted file mode 100644 index 30534af2..00000000 --- a/app/src/main/java/com/movies/tmdb/MainActivity.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.movies.tmdb - -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle - -class MainActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/ui/MovieDetailsFragment.kt b/app/src/main/java/com/movies/tmdb/ui/MovieDetailsFragment.kt new file mode 100644 index 00000000..010efc96 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/ui/MovieDetailsFragment.kt @@ -0,0 +1,94 @@ +package com.movies.tmdb.ui + +import androidx.core.graphics.drawable.toBitmap +import androidx.lifecycle.Observer +import androidx.navigation.fragment.findNavController +import androidx.navigation.fragment.navArgs +import com.bumptech.glide.RequestManager +import com.movies.tmdb.R +import com.movies.tmdb.other.Extensions.base64ToBitmap +import com.movies.tmdb.other.Extensions.toBase64String +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.android.synthetic.main.fragment_movie_details.* +import javax.inject.Inject + + +@AndroidEntryPoint +class MovieDetailsFragment @Inject constructor( + val glide: RequestManager +) : ParentFragment(R.layout.fragment_movie_details) { + + val args: MovieDetailsFragmentArgs by navArgs() + + override fun startViewActions() { + setViews() + + } + + + private fun saveMovieOffline() { + val selectedMovie = args.selectedMovie + selectedMovie.imageBase64 = movieImage.drawable.toBitmap().toBase64String() + viewModel.insertShoppingItemIntoDb(selectedMovie) + } + + private fun setViews() { + + + var selectedMovie = args.selectedMovie + + if (selectedMovie.imageBase64.isNullOrEmpty()) { + glide.load(selectedMovie.getPosterFullImage()) + .into(movieImage) + } else { + movieImage.setImageBitmap(selectedMovie.imageBase64!!.base64ToBitmap()) + + } + + showViewsButton.setOnClickListener { + + findNavController().navigate( + + MovieDetailsFragmentDirections.actionMovieDetailsFragmentToMovieReviewsFragment(args.selectedMovie.id) + ) + } + + movieName.text = selectedMovie.originalTitle + circle_progress_view.setProgressWithAnimation(selectedMovie.voteAverage * 10, 2000) + overViewDetails.text = selectedMovie.overview + + viewModel.isMovieExistOffline(selectedMovie.id) + viewModel.isMovieExist.observe(viewLifecycleOwner, Observer { + saveOfflineButton.isChecked = it + }) + + + saveOfflineButton.setOnCheckedChangeListener { compoundButton, b -> + + when (compoundButton.isChecked) { + true -> saveMovieOffline() + false -> viewModel.deleteShoppingItem(selectedMovie.id) + } + } + } +} + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/movies/tmdb/ui/MovieReviewDetailsFragment.kt b/app/src/main/java/com/movies/tmdb/ui/MovieReviewDetailsFragment.kt new file mode 100644 index 00000000..4d8f1727 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/ui/MovieReviewDetailsFragment.kt @@ -0,0 +1,28 @@ +package com.movies.tmdb.ui + +import androidx.navigation.fragment.navArgs +import com.movies.tmdb.R +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.android.synthetic.main.item_review.* +import javax.inject.Inject + +@AndroidEntryPoint +class MovieReviewDetailsFragment @Inject constructor( + +) : ParentFragment(R.layout.fragment_review_details) { + + override fun startViewActions() { + + setViews() + + + } + + private fun setViews() { + val args: MovieReviewDetailsFragmentArgs by navArgs() + author.text = resources.getString(R.string.author, args.selectedReview.author) + + reviewContent.text = args.selectedReview.content + } + +} diff --git a/app/src/main/java/com/movies/tmdb/ui/MovieReviewsFragment.kt b/app/src/main/java/com/movies/tmdb/ui/MovieReviewsFragment.kt new file mode 100644 index 00000000..17c61b73 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/ui/MovieReviewsFragment.kt @@ -0,0 +1,120 @@ +package com.movies.tmdb.ui + +import android.view.View +import androidx.lifecycle.Observer +import androidx.navigation.fragment.findNavController +import androidx.navigation.fragment.navArgs +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.snackbar.Snackbar +import com.movies.tmdb.R +import com.movies.tmdb.adapters.ReviewsAdapter +import com.movies.tmdb.data.remote.responses.ReviewObject +import com.movies.tmdb.other.Extensions.toast +import com.movies.tmdb.other.Status +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.android.synthetic.main.activity_main.* +import kotlinx.android.synthetic.main.fragment_reviews_listing.* +import javax.inject.Inject + +@AndroidEntryPoint +class MovieReviewsFragment @Inject constructor( + val imageAdapter: ReviewsAdapter +) : ParentFragment(R.layout.fragment_reviews_listing) { + + + private var allReviews = mutableListOf() + + private var pageNum = 1 + var isLoading = false + + + val args: MovieReviewsFragmentArgs by navArgs() + + override fun startViewActions() { + + setupRecyclerView() + subscribeToObservers() + + + getMovieReviews() + + + imageAdapter.setOnItemClickListener { + findNavController().navigate( + MovieReviewsFragmentDirections.actionMovieReviewsFragmentToMovieReviewDetailsFragment( + it + ) + + ) + } + } + + + private fun getMovieReviews() { + viewModel.getMovieReviewsFromWeb(args.selectedMovieId, pageNum) + isLoading = true + } + + + private fun subscribeToObservers() { + viewModel.reviewsList.observe(viewLifecycleOwner, Observer { + it?.getContentIfNotHandled()?.let { result -> + isLoading = false + when (result.status) { + Status.SUCCESS -> { + progressBar.visibility = View.GONE + allReviews.addAll(result.data?.results!!) + if (allReviews.isEmpty()) { + requireContext().toast(getString(R.string.no_reviews)) + findNavController().popBackStack() + } else { + imageAdapter.reviews = allReviews + } + + + } + Status.ERROR -> { + Snackbar.make( + requireActivity().rootLayout, + result.message ?: "An unknown error occured.", + Snackbar.LENGTH_LONG + ).show() + progressBar.visibility = View.GONE + } + Status.LOADING -> { + progressBar.visibility = View.VISIBLE + } + } + } + }) + } + + private fun setupRecyclerView() { + val linearLayoutManger = LinearLayoutManager(requireContext()) + + rvData.apply { + adapter = imageAdapter + layoutManager = linearLayoutManger + } + + + rvData.addOnScrollListener(object : RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + val visibleItemCount = linearLayoutManger.childCount + val pastVisibleItem = linearLayoutManger.findFirstCompletelyVisibleItemPosition() + val total = imageAdapter.itemCount + + if (!isLoading) { + if ((visibleItemCount + pastVisibleItem) >= total) { + pageNum++ + getMovieReviews() + } + } + super.onScrolled(recyclerView, dx, dy) + } + }) + } + + +} diff --git a/app/src/main/java/com/movies/tmdb/ui/MoviesFragmentFactory.kt b/app/src/main/java/com/movies/tmdb/ui/MoviesFragmentFactory.kt new file mode 100644 index 00000000..a639bd5d --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/ui/MoviesFragmentFactory.kt @@ -0,0 +1,26 @@ +package com.movies.tmdb.ui + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentFactory +import com.bumptech.glide.RequestManager +import com.movies.tmdb.adapters.MoviesAdapter +import com.movies.tmdb.adapters.ReviewsAdapter +import javax.inject.Inject + +class MoviesFragmentFactory @Inject constructor( + private val imageAdapter: MoviesAdapter, + private val glide: RequestManager, + private val reviewsAdapter: ReviewsAdapter +) : FragmentFactory() { + + override fun instantiate(classLoader: ClassLoader, className: String): Fragment { + return when (className) { + MoviesListingFragment::class.java.name -> MoviesListingFragment(imageAdapter) + MovieDetailsFragment::class.java.name -> MovieDetailsFragment(glide) + MovieReviewsFragment::class.java.name -> MovieReviewsFragment(reviewsAdapter) + MovieReviewDetailsFragment::class.java.name -> MovieReviewDetailsFragment() + OfflineMoviesListingFragment::class.java.name -> OfflineMoviesListingFragment(imageAdapter) + else -> super.instantiate(classLoader, className) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/ui/MoviesListingFragment.kt b/app/src/main/java/com/movies/tmdb/ui/MoviesListingFragment.kt new file mode 100644 index 00000000..dd15e36f --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/ui/MoviesListingFragment.kt @@ -0,0 +1,150 @@ +package com.movies.tmdb.ui + +import android.view.MenuItem +import android.view.View +import androidx.lifecycle.Observer +import androidx.navigation.fragment.findNavController +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.snackbar.Snackbar +import com.movies.tmdb.R +import com.movies.tmdb.adapters.MoviesAdapter +import com.movies.tmdb.data.remote.responses.MovieObject +import com.movies.tmdb.other.Constants +import com.movies.tmdb.other.Constants.GRID_SPAN_COUNT +import com.movies.tmdb.other.Extensions.isOnline +import com.movies.tmdb.other.Extensions.toast +import com.movies.tmdb.other.Status +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.android.synthetic.main.activity_main.* +import kotlinx.android.synthetic.main.fragment_movies_listing.* +import javax.inject.Inject + +@AndroidEntryPoint +class MoviesListingFragment @Inject constructor( + val imageAdapter: MoviesAdapter +) : ParentFragment(R.layout.fragment_movies_listing) { + + private var allMovies = mutableListOf() + + private var pageNum = 1 + var isLoading = false + + var selectedFilter = 0 + + + override fun startViewActions() { + + setupRecyclerView() + subscribeToObservers() + + selectedFilter = Constants.FilterId.MOST_POPULAR.filterId + getMoviesList() + + + imageAdapter.setOnItemClickListener { + findNavController().navigate( + + MoviesListingFragmentDirections.actionMoviesListingFragmentToMovieDetailsFragment( + selectedMovie = it + ) + ) + } + } + + + private fun getMoviesList() = if (requireActivity().isOnline()) { + viewModel.getMoviesListFromWeb(selectedFilter, pageNum) + isLoading = true + } else { + viewModel.appBarTitle.postValue(getString(R.string.no_internet)) + requireContext().toast("No Internet connection please check internet connection") + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.fav -> { + findNavController().navigate( + MoviesListingFragmentDirections.actionMoviesListingFragmentToOfflineMoviesListingFragment() + ) + return true + } + R.id.most_popular -> { + selectedFilter = Constants.FilterId.MOST_POPULAR.filterId + viewModel.appBarTitle.postValue(getString(R.string.most_popular)) + allMovies.clear() + getMoviesList() + + return true + } + R.id.top_rated -> { + selectedFilter = Constants.FilterId.TOP_RATED.filterId + viewModel.appBarTitle.postValue(getString(R.string.top_rated)) + allMovies.clear() + getMoviesList() + return true + } + } + return false + } + + private fun subscribeToObservers() { + + viewModel.moviesList.observe(this, Observer { + + isLoading = false + it.getContentIfNotHandled()?.let { result -> + + when (result.status) { + Status.SUCCESS -> { + allMovies.addAll(result.data?.results!!) + imageAdapter.movies = allMovies + progressBar.visibility = View.GONE + } + Status.ERROR -> { + Snackbar.make( + requireActivity().rootLayout, + result.message ?: "An unknown error occured.", + Snackbar.LENGTH_LONG + ).show() + progressBar.visibility = View.GONE + } + Status.LOADING -> { + progressBar.visibility = View.VISIBLE + } + } + } + }) + + } + + + + private fun setupRecyclerView() { + val gridLayoutManger = GridLayoutManager(requireContext(), GRID_SPAN_COUNT) + + rvData.apply { + adapter = imageAdapter + layoutManager = gridLayoutManger + } + + + rvData.addOnScrollListener(object : RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + val visibleItemCount = gridLayoutManger.childCount + val pastVisibleItem = gridLayoutManger.findFirstCompletelyVisibleItemPosition() + val total = imageAdapter.itemCount + + if (!isLoading) { + if ((visibleItemCount + pastVisibleItem) >= total) { + pageNum++ + getMoviesList() + } + } + super.onScrolled(recyclerView, dx, dy) + } + }) + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/movies/tmdb/ui/MoviesViewModel.kt b/app/src/main/java/com/movies/tmdb/ui/MoviesViewModel.kt new file mode 100644 index 00000000..103e3ec7 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/ui/MoviesViewModel.kt @@ -0,0 +1,79 @@ +package com.movies.tmdb.ui + +import androidx.hilt.lifecycle.ViewModelInject +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.movies.tmdb.data.remote.responses.MovieObject +import com.movies.tmdb.data.remote.responses.MoviesResponse +import com.movies.tmdb.data.remote.responses.ReviewResponse +import com.movies.tmdb.other.Event +import com.movies.tmdb.other.Resource +import com.movies.tmdb.repositories.MoviesRepository +import kotlinx.coroutines.launch + +class MoviesViewModel @ViewModelInject constructor( + private val repository: MoviesRepository +) : ViewModel() { + + val shoppingItems = repository.observeAllShoppingItems() + val isConnected = MutableLiveData() + + var appBarTitle = MutableLiveData() + + private val _moviesList = MutableLiveData>>() + val moviesList: MutableLiveData>> = _moviesList + + + private val _reviewsList = MutableLiveData>>() + val reviewsList: LiveData>> = _reviewsList + + private val _isMovieExist = MutableLiveData() + val isMovieExist: MutableLiveData = _isMovieExist + + + fun insertShoppingItemIntoDb(shoppingItem: MovieObject) = viewModelScope.launch { + repository.insertShoppingItem(shoppingItem) + } + + fun deleteShoppingItem(id: Int) = viewModelScope.launch { + repository.deleteShoppingItem(id) + } + + + fun isMovieExistOffline(id: Int) = viewModelScope.launch { + _isMovieExist.value = repository.isMovieExistsOffline(id) + } + + + fun getMoviesListFromWeb(filterId: Int, page: Int) { + + _moviesList.value = Event(Resource.loading(null)) + viewModelScope.launch { + val response = repository.getListOfMovies(filterId, page) + _moviesList.value = Event(response) + } + } + + fun getMovieReviewsFromWeb(movieId: Int, page: Int) { + _reviewsList.value = Event(Resource.loading(null)) + viewModelScope.launch { + val response = repository.getMovieReviews(movieId, page) + _reviewsList.value = Event(response) + } + } +} + + + + + + + + + + + + + diff --git a/app/src/main/java/com/movies/tmdb/ui/OfflineMoviesListingFragment.kt b/app/src/main/java/com/movies/tmdb/ui/OfflineMoviesListingFragment.kt new file mode 100644 index 00000000..92e225c2 --- /dev/null +++ b/app/src/main/java/com/movies/tmdb/ui/OfflineMoviesListingFragment.kt @@ -0,0 +1,61 @@ +package com.movies.tmdb.ui + +import androidx.lifecycle.Observer +import androidx.navigation.fragment.findNavController +import androidx.recyclerview.widget.GridLayoutManager +import com.movies.tmdb.R +import com.movies.tmdb.adapters.MoviesAdapter +import com.movies.tmdb.other.Constants.GRID_SPAN_COUNT +import com.movies.tmdb.other.Extensions.toast +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.android.synthetic.main.fragment_offline_movies.* +import javax.inject.Inject + +@AndroidEntryPoint +class OfflineMoviesListingFragment @Inject constructor( + val imageAdapter: MoviesAdapter +) : ParentFragment(R.layout.fragment_offline_movies) { + + + override fun startViewActions() { + + setupRecyclerView() + + + getMoviesList() + + + imageAdapter.setOnItemClickListener { + + findNavController().navigate( + OfflineMoviesListingFragmentDirections.actionOfflineMoviesListingFragmentToMovieDetailsFragment( + selectedMovie = it + ) + + ) + } + } + + + private fun getMoviesList() { + viewModel.shoppingItems.observe(viewLifecycleOwner, Observer { + if (it.isEmpty()) { + requireContext().toast(getString(R.string.no_saved)) + findNavController().popBackStack() + } else { + imageAdapter.movies = viewModel.shoppingItems.value!! + } + + }) + } + + + private fun setupRecyclerView() { + val gridLayoutManger = GridLayoutManager(requireContext(), GRID_SPAN_COUNT) + + rvData.apply { + adapter = imageAdapter + layoutManager = gridLayoutManger + } + } +} \ No newline at end of file From 206bc8823bed5efa9ed1d7591625916dc4bd77cb Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 17:10:28 +0200 Subject: [PATCH 12/15] Adding the Unit testing --- .../java/com/movies/tmdb/data/LiveDataUtil.kt | 64 ++++++++++++++ .../movies/tmdb/data/local/MoviesDaoTest.kt | 85 +++++++++++++++++++ 2 files changed, 149 insertions(+) create mode 100644 app/src/androidTest/java/com/movies/tmdb/data/LiveDataUtil.kt create mode 100644 app/src/androidTest/java/com/movies/tmdb/data/local/MoviesDaoTest.kt diff --git a/app/src/androidTest/java/com/movies/tmdb/data/LiveDataUtil.kt b/app/src/androidTest/java/com/movies/tmdb/data/LiveDataUtil.kt new file mode 100644 index 00000000..7aff0f2c --- /dev/null +++ b/app/src/androidTest/java/com/movies/tmdb/data/LiveDataUtil.kt @@ -0,0 +1,64 @@ +package com.movies.tmdb.data + +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +import androidx.annotation.VisibleForTesting +import androidx.lifecycle.LiveData +import androidx.lifecycle.Observer +import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit +import java.util.concurrent.TimeoutException + +/** + * Gets the value of a [LiveData] or waits for it to have one, with a timeout. + * + * Use this extension from host-side (JVM) tests. It's recommended to use it alongside + * `InstantTaskExecutorRule` or a similar mechanism to execute tasks synchronously. + */ +@VisibleForTesting(otherwise = VisibleForTesting.NONE) +fun LiveData.getOrAwaitValue( + time: Long = 2, + timeUnit: TimeUnit = TimeUnit.SECONDS, + afterObserve: () -> Unit = {} +): T { + var data: T? = null + val latch = CountDownLatch(1) + val observer = object : Observer { + override fun onChanged(o: T?) { + data = o + latch.countDown() + this@getOrAwaitValue.removeObserver(this) + } + } + this.observeForever(observer) + + try { + afterObserve.invoke() + + // Don't wait indefinitely if the LiveData is not set. + if (!latch.await(time, timeUnit)) { + throw TimeoutException("LiveData value was never set.") + } + + } finally { + this.removeObserver(observer) + } + + @Suppress("UNCHECKED_CAST") + return data as T +} diff --git a/app/src/androidTest/java/com/movies/tmdb/data/local/MoviesDaoTest.kt b/app/src/androidTest/java/com/movies/tmdb/data/local/MoviesDaoTest.kt new file mode 100644 index 00000000..732aa0e7 --- /dev/null +++ b/app/src/androidTest/java/com/movies/tmdb/data/local/MoviesDaoTest.kt @@ -0,0 +1,85 @@ +import android.content.Context +import androidx.arch.core.executor.testing.InstantTaskExecutorRule +import androidx.room.Room +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.movies.tmdb.data.remote.responses.MovieObject +import com.google.common.truth.Truth.assertThat +import com.movies.tmdb.data.getOrAwaitValue +import com.movies.tmdb.data.local.MoviesDao +import com.movies.tmdb.data.local.MoviesDatabase +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.runBlockingTest +import org.junit.After +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import java.io.IOException + +@ExperimentalCoroutinesApi +@RunWith(AndroidJUnit4::class) +class SimpleEntityReadWriteTest { + private lateinit var dao: MoviesDao + private lateinit var db: MoviesDatabase + + @get:Rule + var instantTaskExecutorRule = InstantTaskExecutorRule() + + @Before + fun createDb() { + val context = ApplicationProvider.getApplicationContext() + db = Room.inMemoryDatabaseBuilder( + context, MoviesDatabase::class.java + ).build() + dao = db.moviesDao() + } + + @After + @Throws(IOException::class) + fun closeDb() { + db.close() + } + + + @Test + fun insertShoppingItem() = runBlockingTest { + + val movieObject = MovieObject( + false, 1, "Title Test", "Overview Test", "", + "", "Title test", 2.8f, "" + ) + dao.insertMovie(movieObject) + + val allShoppingItems = dao.observeAllMovies().getOrAwaitValue() + + assertThat(allShoppingItems).contains(movieObject) + } + + @Test + fun deleteShoppingItem() = runBlockingTest { + val movieObject = MovieObject( + false, 1, "Title Test", "Overview Test", "", + "", "Title test", 2.8f, "" + ) + dao.insertMovie(movieObject) + dao.deleteMovie(movieObject.id) + + val allShoppingItems = dao.observeAllMovies().getOrAwaitValue() + + assertThat(allShoppingItems).doesNotContain(movieObject) + } + + @Test + fun checkIfMovieExistInDatabase() = runBlockingTest { + val movieObject = MovieObject( + false, 1, "Title Test", "Overview Test", "", + "", "Title test", 2.8f, "" + ) + dao.insertMovie(movieObject) + val existence = dao.isMovieExistsOffline(movieObject.id) + + + assertThat(existence).isTrue() + } +} \ No newline at end of file From 4eb0c65e1782aa9d3af2df121915af7b049de8bb Mon Sep 17 00:00:00 2001 From: Beshoy Fakhry Date: Tue, 28 Dec 2021 17:17:07 +0200 Subject: [PATCH 13/15] Create ReadMe --- ReadMe | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 ReadMe diff --git a/ReadMe b/ReadMe new file mode 100644 index 00000000..b471b88a --- /dev/null +++ b/ReadMe @@ -0,0 +1,16 @@ +Movie application based on provided apis from https://www.themoviedb.org/ + + +Technologies Uesd: +- MVVM architecture. +- Reposaitry architecture. +- Coroutines for Threading. +- Live-data for informing updates. +- Room for offline savings. +- Unit test. +- Pagination. +- Clean Code. + + + + From c5fceb5d08833363e7b6b6c88f2d91ee62725132 Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Tue, 28 Dec 2021 17:34:28 +0200 Subject: [PATCH 14/15] Fix appbar title issue --- app/src/main/AndroidManifest.xml | 5 +++- .../java/com/movies/tmdb/other/Extensions.kt | 3 +++ .../java/com/movies/tmdb/ui/MainActivity.kt | 6 +---- .../movies/tmdb/ui/MoviesListingFragment.kt | 6 ++--- .../com/movies/tmdb/ui/MoviesViewModel.kt | 1 - .../java/com/movies/tmdb/ui/ParentFragment.kt | 24 +++++++++++++++---- 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8f0c60ba..034567c3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ + @@ -13,7 +14,9 @@ android:roundIcon="@mipmap/ic_launcher" android:supportsRtl="true" android:theme="@style/AppTheme"> - + diff --git a/app/src/main/java/com/movies/tmdb/other/Extensions.kt b/app/src/main/java/com/movies/tmdb/other/Extensions.kt index 8c47cfe2..66b9c872 100644 --- a/app/src/main/java/com/movies/tmdb/other/Extensions.kt +++ b/app/src/main/java/com/movies/tmdb/other/Extensions.kt @@ -8,12 +8,15 @@ import android.net.NetworkCapabilities import android.util.Base64 import android.util.Log import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity +import androidx.core.app.ActivityCompat import java.io.ByteArrayOutputStream import java.util.* object Extensions { + fun Bitmap.toBase64String(): String { ByteArrayOutputStream().apply { compress(Bitmap.CompressFormat.JPEG, 10, this) diff --git a/app/src/main/java/com/movies/tmdb/ui/MainActivity.kt b/app/src/main/java/com/movies/tmdb/ui/MainActivity.kt index 1291f62a..389a86d0 100644 --- a/app/src/main/java/com/movies/tmdb/ui/MainActivity.kt +++ b/app/src/main/java/com/movies/tmdb/ui/MainActivity.kt @@ -34,11 +34,7 @@ class MainActivity : AppCompatActivity() { supportActionBar!!.setBackgroundDrawable(ColorDrawable(resources.getColor(R.color.accent))) - ViewModelProvider(this).get(MoviesViewModel::class.java).appBarTitle.observe( - this, - Observer { - supportActionBar?.title = it - }) + } override fun onSupportNavigateUp(): Boolean { diff --git a/app/src/main/java/com/movies/tmdb/ui/MoviesListingFragment.kt b/app/src/main/java/com/movies/tmdb/ui/MoviesListingFragment.kt index dd15e36f..956768db 100644 --- a/app/src/main/java/com/movies/tmdb/ui/MoviesListingFragment.kt +++ b/app/src/main/java/com/movies/tmdb/ui/MoviesListingFragment.kt @@ -57,7 +57,7 @@ class MoviesListingFragment @Inject constructor( viewModel.getMoviesListFromWeb(selectedFilter, pageNum) isLoading = true } else { - viewModel.appBarTitle.postValue(getString(R.string.no_internet)) + setViewTittle(getString(R.string.no_internet)) requireContext().toast("No Internet connection please check internet connection") } @@ -71,7 +71,7 @@ class MoviesListingFragment @Inject constructor( } R.id.most_popular -> { selectedFilter = Constants.FilterId.MOST_POPULAR.filterId - viewModel.appBarTitle.postValue(getString(R.string.most_popular)) + setViewTittle(getString(R.string.most_popular)) allMovies.clear() getMoviesList() @@ -79,7 +79,7 @@ class MoviesListingFragment @Inject constructor( } R.id.top_rated -> { selectedFilter = Constants.FilterId.TOP_RATED.filterId - viewModel.appBarTitle.postValue(getString(R.string.top_rated)) + setViewTittle(getString(R.string.top_rated)) allMovies.clear() getMoviesList() return true diff --git a/app/src/main/java/com/movies/tmdb/ui/MoviesViewModel.kt b/app/src/main/java/com/movies/tmdb/ui/MoviesViewModel.kt index 103e3ec7..679e06df 100644 --- a/app/src/main/java/com/movies/tmdb/ui/MoviesViewModel.kt +++ b/app/src/main/java/com/movies/tmdb/ui/MoviesViewModel.kt @@ -20,7 +20,6 @@ class MoviesViewModel @ViewModelInject constructor( val shoppingItems = repository.observeAllShoppingItems() val isConnected = MutableLiveData() - var appBarTitle = MutableLiveData() private val _moviesList = MutableLiveData>>() val moviesList: MutableLiveData>> = _moviesList diff --git a/app/src/main/java/com/movies/tmdb/ui/ParentFragment.kt b/app/src/main/java/com/movies/tmdb/ui/ParentFragment.kt index a6ff91e9..4d8e9c77 100644 --- a/app/src/main/java/com/movies/tmdb/ui/ParentFragment.kt +++ b/app/src/main/java/com/movies/tmdb/ui/ParentFragment.kt @@ -2,6 +2,7 @@ package com.movies.tmdb.ui import android.os.Bundle import android.view.* +import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.movies.tmdb.R @@ -19,11 +20,19 @@ abstract class ParentFragment(val layout: Int) : Fragment(layout) { } abstract fun startViewActions() + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return super.onCreateView(inflater, container, savedInstanceState) + } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + viewModel = ViewModelProvider(this).get(MoviesViewModel::class.java) setAppBaeTittle() startViewActions() @@ -33,14 +42,19 @@ abstract class ParentFragment(val layout: Int) : Fragment(layout) { private fun setAppBaeTittle() { when (layout) { - R.layout.fragment_movies_listing -> viewModel.appBarTitle.postValue(getString(R.string.most_popular)) - R.layout.fragment_movie_details -> viewModel.appBarTitle.postValue(getString(R.string.movie_details)) - R.layout.fragment_reviews_listing -> viewModel.appBarTitle.postValue(getString(R.string.reviews)) - R.layout.fragment_review_details -> viewModel.appBarTitle.postValue(getString(R.string.review_details)) - R.layout.fragment_offline_movies -> viewModel.appBarTitle.postValue(getString(R.string.likes)) + R.layout.fragment_movies_listing -> setViewTittle(getString(R.string.most_popular)) + R.layout.fragment_movie_details -> setViewTittle(getString(R.string.movie_details)) + R.layout.fragment_reviews_listing -> setViewTittle(getString(R.string.reviews)) + R.layout.fragment_review_details -> setViewTittle(getString(R.string.review_details)) + R.layout.fragment_offline_movies -> setViewTittle(getString(R.string.likes)) } } + fun setViewTittle(title:String) + { + (activity as AppCompatActivity?)!!.supportActionBar!!.title =title + } + override fun onPrepareOptionsMenu(menu: Menu) { when (layout) { R.layout.fragment_movies_listing -> hideShowBarIcons(true, menu) From 92a1dbfc1a5c60f30267d777faccede93b501862 Mon Sep 17 00:00:00 2001 From: BeshoyFakhry Date: Wed, 29 Dec 2021 02:02:13 +0200 Subject: [PATCH 15/15] Update app icon --- .../main/res/mipmap-anydpi-v26/ic_launcher.xml | 5 ----- .../res/mipmap-anydpi-v26/ic_launcher_round.xml | 5 ----- app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3593 -> 0 bytes .../main/res/mipmap-hdpi/ic_launcher_round.png | Bin 5339 -> 0 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2636 -> 0 bytes .../main/res/mipmap-mdpi/ic_launcher_round.png | Bin 3388 -> 0 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4926 -> 0 bytes .../main/res/mipmap-xhdpi/ic_launcher_round.png | Bin 7472 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 11873 -> 0 bytes app/src/main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 10652 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 16570 -> 0 bytes 11 files changed, 10 deletions(-) delete mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml delete mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index eca70cfe..00000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index eca70cfe..00000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index a571e60098c92c2baca8a5df62f2929cbff01b52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3593 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 P00000NkvXXu0mjfP=x?Y diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index 61da551c5594a1f9d26193983d2cd69189014603..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5339 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