Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider bb6ddb5e rédigé par Titouan CASTRO's avatar Titouan CASTRO
Parcourir les fichiers

push

parent e93f4d37
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 453 ajouts et 0 suppression
*.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
# Default ignored files
/shelf/
/workspace.xml
Td4TaskList
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="1.8.20" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>
\ No newline at end of file
/build
\ No newline at end of file
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-parcelize'
}
android {
namespace 'dev.mobile.td4tasklist'
compileSdk 33
defaultConfig {
applicationId "dev.mobile.td4tasklist"
minSdk 33
targetSdk 33
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 'androidx.core:core-ktx:1.8.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}
\ No newline at end of file
# 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
package dev.mobile.td4tasklist
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("dev.mobile.td4tasklist", appContext.packageName)
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Td4TaskList"
tools:targetApi="31">
<activity
android:name=".AddActivity"
android:exported="false" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
\ No newline at end of file
package dev.mobile.td4tasklist
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.widget.EditText
import android.widget.ImageButton
import android.widget.SeekBar
import android.widget.TextView
import androidx.activity.result.contract.ActivityResultContract
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
class AddActivity : AppCompatActivity() {
lateinit var btnCancel : ImageButton
lateinit var btnSave : ImageButton
lateinit var nameTask : EditText
lateinit var priorityTask : TextView
lateinit var prioritySeekBar : SeekBar
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_add)
btnCancel = findViewById(R.id.bt_cancel)
btnSave = findViewById(R.id.bt_save)
nameTask = findViewById(R.id.et_title)
priorityTask = findViewById(R.id.tv_prioritynum)
prioritySeekBar = findViewById(R.id.sb_priority)
priorityTask.text = "0"
val intent = Intent()
btnCancel.setOnClickListener {
setResult(Activity.RESULT_CANCELED, intent)
finish()
}
btnSave.setOnClickListener {
intent.putExtra(
"task", Task(
nameTask.text.toString(),
priorityTask.text.toString().toInt()
)
)
setResult(Activity.RESULT_OK, intent)
finish()
}
prioritySeekBar.setOnSeekBarChangeListener(
object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(p0: SeekBar?, progress: Int, fromUser: Boolean) {
if (fromUser) {
priorityTask.setText(progress.toString(), TextView.BufferType.EDITABLE)
}
}
override fun onStartTrackingTouch(p0: SeekBar?) {}
override fun onStopTrackingTouch(p0: SeekBar?) {}
}
)
}
}
\ No newline at end of file
package dev.mobile.td4tasklist
import android.app.Activity
import android.content.Context
import android.content.Intent
import androidx.activity.result.contract.ActivityResultContract
class AddActivityContract : ActivityResultContract<String?, Task?>() {
override fun createIntent(context: Context, input: String?): Intent {
return Intent(context, AddActivity::class.java)
}
override fun parseResult(resultCode: Int, intent: Intent?): Task? {
return if (resultCode == Activity.RESULT_OK && intent != null) {
intent.getParcelableExtra("task")
} else {
null
}
}
}
package dev.mobile.td4tasklist
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Button
import android.widget.ImageButton
import android.widget.ListView
import android.widget.SeekBar
import android.widget.Switch
import android.widget.Toast
import androidx.core.view.get
import com.google.android.material.floatingactionbutton.FloatingActionButton
import dev.mobile.td4tasklist.Tasks.Companion.COMPARATOR
import dev.mobile.td4tasklist.Tasks.Companion.COMPARATOR_ALPHABETICAL
class MainActivity : AppCompatActivity() {
lateinit var taskAdapter: ArrayAdapter<Task>
lateinit var addContrat: AddActivityContract
lateinit var listTask : ListView
lateinit var btnList : ImageButton
lateinit var btnGrid : ImageButton
lateinit var btnDel : ImageButton
lateinit var Sort : Switch
lateinit var btnAdd : FloatingActionButton
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var taskList: MutableList<Task>
taskList = Tasks.initTaskslist()
taskAdapter = ArrayAdapter<Task>(this,android.R.layout.simple_list_item_1,taskList)
listTask = findViewById(R.id.list_tasks)
btnList = findViewById(R.id.bt_list)
btnGrid = findViewById(R.id.bt_grid)
btnDel = findViewById(R.id.bt_delete)
btnAdd = findViewById(R.id.bt_add)
listTask.adapter = taskAdapter
listTask.setOnItemClickListener { _, _, position, _ ->
taskAdapter.getItem(position)?.finish()
listTask.adapter = taskAdapter
}
addContrat = AddActivityContract()
val register = registerForActivityResult(addContrat){
task : Task? ->
if(task==null){
Toast.makeText(this, "Aucune donnée saisie", Toast.LENGTH_SHORT).show()
}else{
Toast.makeText(this, "Nouvelle tâche",Toast.LENGTH_SHORT).show()
taskAdapter.add(task)
listTask.adapter = taskAdapter
}
}
btnAdd.setOnClickListener {
register.launch(null)
}
btnDel.setOnClickListener {
print(taskList)
taskList = taskList.filter{ it.isCompleted }.toMutableList()
listTask.adapter = taskAdapter
}
}
}
\ No newline at end of file
package dev.mobile.td4tasklist
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
data class Task (
var title: String = "",
var priority: Int,
var isCompleted: Boolean = false
) : Comparable<Task>, Parcelable{
fun finish() {
isCompleted = !isCompleted
}
override fun toString() =
"$title ($priority) ${when { isCompleted -> "" else -> ""} }"
override fun compareTo(other: Task): Int = when {
this.priority != other.priority -> other.priority compareTo this.priority
this.title != other.title -> other.priority compareTo this.priority
else -> 0
}
}
\ No newline at end of file
package dev.mobile.td4tasklist
import android.content.Context
import android.graphics.Paint
import android.widget.ArrayAdapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import android.widget.CheckBox
import java.util.*
class TaskAdapter(context: Context, items: List<Task>) : ArrayAdapter<Task>(
context, 0, items
) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
return super.getView(position, convertView, parent)
}
}
\ No newline at end of file
package dev.mobile.td4tasklist
class Tasks {
companion object {
val COMPARATOR = Comparator<Task> { t0, t1 -> t0.compareTo(t1) }
val COMPARATOR_ALPHABETICAL = Comparator<Task> { t0, t1 -> t0.title.compareTo(t1.title) }
fun initTaskslist(): MutableList<Task> {
return mutableListOf<Task>(
Task("Ne pas regarder mon téléphone", 1),
Task("Réviser TD1 Android", 4),
Task("Ne pas regarder mon téléphone", 2),
Task("Améliorer mon Anglais", 2),
Task("Réviser TD2 Android", 4),
Task("Ne pas regarder mon téléphone", 3),
Task("Réviser TD3 Android", 4,true),
Task("Acheter des pâtes", 1),
Task("Ne toujours pas regarder mon téléphone", 4),
Task("Faire TD4 Android", 5),
Task("Faire du sport", 3),
Task("Dormir", 5),
Task("Finir la saé", 2),
Task("Utiliser John the ripper", 2),
Task("Lire un livre", 4)
)
}
}
}
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>
\ No newline at end of file
<vector android:height="24dp" android:tint="#000000"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2zM17,15.59L15.59,17 12,13.41 8.41,17 7,15.59 10.59,12 7,8.41 8.41,7 12,10.59 15.59,7 17,8.41 13.41,12 17,15.59z"/>
</vector>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter