From 3399ed440f952895dc2b63ec7b3554ee56cbe841 Mon Sep 17 00:00:00 2001 From: Geiramy Date: Sat, 2 Mar 2019 14:11:33 +0100 Subject: [PATCH] First Release --- .gitignore | 17 ++ .idea/codeStyles/Project.xml | 35 +++ .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/gradle.xml | 18 ++ .idea/misc.xml | 9 + .idea/runConfigurations.xml | 12 + app/.gitignore | 1 + app/build.gradle | 45 +++ app/release/output.json | 1 + app/src/androidTest/java/Character.kt | 82 ++++++ .../fil_rouge/ExampleInstrumentedTest.kt | 24 ++ app/src/main/AndroidManifest.xml | 35 +++ .../java/com/example/fil_rouge/Character.kt | 84 ++++++ .../com/example/fil_rouge/CipherWrapper.kt | 30 ++ .../com/example/fil_rouge/ContactAdapter.kt | 31 +++ .../com/example/fil_rouge/ContactHolder.kt | 28 ++ .../com/example/fil_rouge/CycleActivity.kt | 56 ++++ .../com/example/fil_rouge/FormActivity.kt | 171 ++++++++++++ .../com/example/fil_rouge/HomeActivity.kt | 89 ++++++ .../example/fil_rouge/ItemClickListener.kt | 8 + .../com/example/fil_rouge/KeyStoreWrapper.kt | 77 ++++++ .../com/example/fil_rouge/LoginActivity.kt | 256 ++++++++++++++++++ .../com/example/fil_rouge/MyFirstFragment.kt | 82 ++++++ .../example/fil_rouge/PermissionActivity.kt | 181 +++++++++++++ .../example/fil_rouge/WebServiceActivity.kt | 124 +++++++++ .../example/fil_rouge/WebServiceInterface.kt | 10 + .../com/example/fil_rouge/WebServiceTask.kt | 65 +++++ .../drawable-v24/ic_launcher_foreground.xml | 34 +++ .../res/drawable/ic_launcher_background.xml | 74 +++++ app/src/main/res/drawable/logo_isen.png | Bin 0 -> 23153 bytes app/src/main/res/layout/activity_cycle.xml | 33 +++ app/src/main/res/layout/activity_form.xml | 79 ++++++ app/src/main/res/layout/activity_home.xml | 110 ++++++++ app/src/main/res/layout/activity_login.xml | 52 ++++ .../main/res/layout/activity_permission.xml | 59 ++++ .../main/res/layout/activity_web_service.xml | 20 ++ app/src/main/res/layout/fragment_my_first.xml | 14 + app/src/main/res/layout/model.xml | 33 +++ .../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 -> 2963 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4905 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2060 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2783 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4490 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6895 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6387 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10413 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9128 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15132 bytes app/src/main/res/values/colors.xml | 6 + app/src/main/res/values/strings.xml | 30 ++ app/src/main/res/values/styles.xml | 14 + .../com/example/fil_rouge/ExampleUnitTest.kt | 17 ++ build.gradle | 29 ++ gradle.properties | 15 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 ++++++++++++ gradlew.bat | 84 ++++++ settings.gradle | 1 + 61 files changed, 2468 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/release/output.json create mode 100644 app/src/androidTest/java/Character.kt create mode 100644 app/src/androidTest/java/com/example/fil_rouge/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/com/example/fil_rouge/Character.kt create mode 100644 app/src/main/java/com/example/fil_rouge/CipherWrapper.kt create mode 100644 app/src/main/java/com/example/fil_rouge/ContactAdapter.kt create mode 100644 app/src/main/java/com/example/fil_rouge/ContactHolder.kt create mode 100644 app/src/main/java/com/example/fil_rouge/CycleActivity.kt create mode 100644 app/src/main/java/com/example/fil_rouge/FormActivity.kt create mode 100644 app/src/main/java/com/example/fil_rouge/HomeActivity.kt create mode 100644 app/src/main/java/com/example/fil_rouge/ItemClickListener.kt create mode 100644 app/src/main/java/com/example/fil_rouge/KeyStoreWrapper.kt create mode 100644 app/src/main/java/com/example/fil_rouge/LoginActivity.kt create mode 100644 app/src/main/java/com/example/fil_rouge/MyFirstFragment.kt create mode 100644 app/src/main/java/com/example/fil_rouge/PermissionActivity.kt create mode 100644 app/src/main/java/com/example/fil_rouge/WebServiceActivity.kt create mode 100644 app/src/main/java/com/example/fil_rouge/WebServiceInterface.kt create mode 100644 app/src/main/java/com/example/fil_rouge/WebServiceTask.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/drawable/logo_isen.png create mode 100644 app/src/main/res/layout/activity_cycle.xml create mode 100644 app/src/main/res/layout/activity_form.xml create mode 100644 app/src/main/res/layout/activity_home.xml create mode 100644 app/src/main/res/layout/activity_login.xml create mode 100644 app/src/main/res/layout/activity_permission.xml create mode 100644 app/src/main/res/layout/activity_web_service.xml create mode 100644 app/src/main/res/layout/fragment_my_first.xml create mode 100644 app/src/main/res/layout/model.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/colors.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/test/java/com/example/fil_rouge/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 0000000..2561419 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +*.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 + +app/google-services\.json + +app/proguard-rules\.pro diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..34dc27c --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..7ac24c7 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..37a7509 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..1acfabe --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,45 @@ +apply plugin: 'com.android.application' + +apply plugin: 'kotlin-android' + +apply plugin: 'kotlin-android-extensions' +apply plugin: 'com.google.gms.google-services' + +android { + compileSdkVersion 28 + defaultConfig { + applicationId "com.example.fil_rouge" + minSdkVersion 19 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + //noinspection GradleCompatible + implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'com.android.support:support-v4:28.0.0' + implementation "com.google.firebase:firebase-core:16.0.7" + implementation 'com.google.firebase:firebase-auth:16.1.0' + implementation 'com.firebaseui:firebase-ui-auth:4.1.0' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + implementation 'com.android.support:design:28.0.0' + implementation 'com.google.code.gson:gson:2.8.5' + implementation 'com.squareup.picasso:picasso:2.71828' + implementation 'com.android.support:recyclerview-v7:28.0.0' +} + +apply plugin: 'com.google.gms.google-services' diff --git a/app/release/output.json b/app/release/output.json new file mode 100644 index 0000000..9f0c959 --- /dev/null +++ b/app/release/output.json @@ -0,0 +1 @@ +[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] \ No newline at end of file diff --git a/app/src/androidTest/java/Character.kt b/app/src/androidTest/java/Character.kt new file mode 100644 index 0000000..746236d --- /dev/null +++ b/app/src/androidTest/java/Character.kt @@ -0,0 +1,82 @@ +data class Character( + val info: Info, + val results: List +) + +data class Info( + val page: Int, + val results: Int, + val seed: String, + val version: String +) + +data class Result( + val cell: String, + val dob: Dob, + val email: String, + val gender: String, + val id: Id, + val location: Location, + val login: Login, + val name: Name, + val nat: String, + val phone: String, + val picture: Picture, + val registered: Registered +) + +data class Picture( + val large: String, + val medium: String, + val thumbnail: String +) + +data class Location( + val city: String, + val coordinates: Coordinates, + val postcode: String, + val state: String, + val street: String, + val timezone: Timezone +) + +data class Timezone( + val description: String, + val offset: String +) + +data class Coordinates( + val latitude: String, + val longitude: String +) + +data class Login( + val md5: String, + val password: String, + val salt: String, + val sha1: String, + val sha256: String, + val username: String, + val uuid: String +) + +data class Dob( + val age: Int, + val date: String +) + +data class Name( + val first: String, + val last: String, + val title: String +) + +data class Id( + val name: String, + val value: String +) + +data class Registered( + val age: Int, + val date: String +) \ No newline at end of file diff --git a/app/src/androidTest/java/com/example/fil_rouge/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/example/fil_rouge/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..503c5c7 --- /dev/null +++ b/app/src/androidTest/java/com/example/fil_rouge/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.example.fil_rouge + +import android.support.test.InstrumentationRegistry +import android.support.test.runner.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.getTargetContext() + assertEquals("com.example.fil_rouge", appContext.packageName) + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..e119958 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/fil_rouge/Character.kt b/app/src/main/java/com/example/fil_rouge/Character.kt new file mode 100644 index 0000000..257d503 --- /dev/null +++ b/app/src/main/java/com/example/fil_rouge/Character.kt @@ -0,0 +1,84 @@ +package com.example.fil_rouge + +data class Character( + val info: Info, + val results: List +) + +data class Info( + val page: Int, + val results: Int, + val seed: String, + val version: String +) + +data class Result( + val cell: String, + val dob: Dob, + val email: String, + val gender: String, + val id: Id, + val location: Location, + val login: Login, + val name: Name, + val nat: String, + val phone: String, + val picture: Picture, + val registered: Registered +) + +data class Picture( + val large: String, + val medium: String, + val thumbnail: String +) + +data class Location( + val city: String, + val coordinates: Coordinates, + val postcode: String, + val state: String, + val street: String, + val timezone: Timezone +) + +data class Timezone( + val description: String, + val offset: String +) + +data class Coordinates( + val latitude: String, + val longitude: String +) + +data class Login( + val md5: String, + val password: String, + val salt: String, + val sha1: String, + val sha256: String, + val username: String, + val uuid: String +) + +data class Dob( + val age: Int, + val date: String +) + +data class Name( + val first: String, + val last: String, + val title: String +) + +data class Id( + val name: String, + val value: String +) + +data class Registered( + val age: Int, + val date: String +) \ No newline at end of file diff --git a/app/src/main/java/com/example/fil_rouge/CipherWrapper.kt b/app/src/main/java/com/example/fil_rouge/CipherWrapper.kt new file mode 100644 index 0000000..6236b56 --- /dev/null +++ b/app/src/main/java/com/example/fil_rouge/CipherWrapper.kt @@ -0,0 +1,30 @@ +package com.example.fil_rouge + +import android.util.Base64 +import java.security.Key +import javax.crypto.Cipher + +/** + * This class wraps [Cipher] class apis with some additional possibilities. + */ +class CipherWrapper(val transformation: String) { + + companion object { + var TRANSFORMATION_ASYMMETRIC = "RSA/ECB/PKCS1Padding" + } + + val cipher: Cipher = Cipher.getInstance(transformation) + + fun encrypt(data: String, key: Key?): String { + cipher.init(Cipher.ENCRYPT_MODE, key) + val bytes = cipher.doFinal(data.toByteArray()) + return Base64.encodeToString(bytes, Base64.DEFAULT) + } + + fun decrypt(data: String, key: Key?): String { + cipher.init(Cipher.DECRYPT_MODE, key) + val encryptedData = Base64.decode(data, Base64.DEFAULT) + val decodedData = cipher.doFinal(encryptedData) + return String(decodedData) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/fil_rouge/ContactAdapter.kt b/app/src/main/java/com/example/fil_rouge/ContactAdapter.kt new file mode 100644 index 0000000..4b89017 --- /dev/null +++ b/app/src/main/java/com/example/fil_rouge/ContactAdapter.kt @@ -0,0 +1,31 @@ +package com.example.fil_rouge + +import android.content.Context +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.ViewGroup +import com.squareup.picasso.Picasso +import kotlinx.android.synthetic.main.activity_web_service.* + +class ContactAdapter (var c: Context, var contactList: List) : RecyclerView.Adapter(){ + + //VIEWHOLDER IS INITIALIZED + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ContactHolder { + val v = LayoutInflater.from(parent.context).inflate(R.layout.model, null) + return ContactHolder(v) + } + + //DATA IS BOUND TO VIEWS + override fun onBindViewHolder(holder: ContactHolder, position: Int) { + val contact = contactList[position] + holder.nameTxt.text =contact.name.title.capitalize()+" "+ contact.name.last.toUpperCase() + " "+contact.name.first.capitalize() + Picasso.get().load(contact.picture.large).into(holder.img) + //holder.img.setImageResource(teacher.picture.large) + } + + override fun getItemCount(): Int { + return contactList.size + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/fil_rouge/ContactHolder.kt b/app/src/main/java/com/example/fil_rouge/ContactHolder.kt new file mode 100644 index 0000000..cec7e8e --- /dev/null +++ b/app/src/main/java/com/example/fil_rouge/ContactHolder.kt @@ -0,0 +1,28 @@ +package com.example.fil_rouge + +import android.support.v7.widget.RecyclerView +import android.view.View +import android.widget.ImageView +import android.widget.TextView + +class ContactHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener { + + var img: ImageView + var nameTxt: TextView + + lateinit var myItemClickListener: ItemClickListener + + init { + + nameTxt = itemView.findViewById(R.id.txtModelTotalName) + img = itemView.findViewById(R.id.imgContact) + } + + fun setItemClickListener(ic: ItemClickListener) { + this.myItemClickListener = ic + } + + override fun onClick(v: View) { + this.myItemClickListener.onItemClick(v, layoutPosition) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/fil_rouge/CycleActivity.kt b/app/src/main/java/com/example/fil_rouge/CycleActivity.kt new file mode 100644 index 0000000..124148d --- /dev/null +++ b/app/src/main/java/com/example/fil_rouge/CycleActivity.kt @@ -0,0 +1,56 @@ +package com.example.fil_rouge + +import android.content.Intent +import android.support.v7.app.AppCompatActivity +import android.os.Bundle +import android.widget.Button +import android.widget.Toast +import kotlinx.android.synthetic.main.activity_cycle.* + +class CycleActivity : AppCompatActivity() { + private var isActivityRunning = false + private var totalLog = "" + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_cycle) + + val btnCycleRetour = findViewById