diff --git a/app/src/main/java/com/clemhaowen/dm_td2/task/TaskActivity.kt b/app/src/main/java/com/clemhaowen/dm_td2/task/TaskActivity.kt index def471eb3933d83d8142a7160689836e71ff7ecb..4164e9007d5e201a2d73dac68e8a55b260a6a29c 100644 --- a/app/src/main/java/com/clemhaowen/dm_td2/task/TaskActivity.kt +++ b/app/src/main/java/com/clemhaowen/dm_td2/task/TaskActivity.kt @@ -2,11 +2,30 @@ package com.clemhaowen.dm_td2.task import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.widget.Button +import android.widget.EditText import com.clemhaowen.dm_td2.R +import com.clemhaowen.dm_td2.tasklist.Task +import com.google.android.material.floatingactionbutton.FloatingActionButton +import java.util.* class TaskActivity : AppCompatActivity() { + companion object { + var TASK_KEY = "" + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_task) + val createButton = findViewById<Button>(R.id.button) + createButton.setOnClickListener{ + val titleText = findViewById<EditText>(R.id.titleEditText).text + val descriptionText = findViewById<EditText>(R.id.descriptionEditText).text + val newTask = Task(id = UUID.randomUUID().toString(), title = titleText.toString(), description = descriptionText.toString()) + intent.putExtra("newTask", newTask) + setResult(666, intent) + TASK_KEY = "newTask" + finish() + } } } \ No newline at end of file diff --git a/app/src/main/java/com/clemhaowen/dm_td2/tasklist/Task.kt b/app/src/main/java/com/clemhaowen/dm_td2/tasklist/Task.kt index 320dbd73a95f3b2f1213f270f651f4d52e96619b..217e5ef32730da1ae6cf565b4b562141dcdd4391 100644 --- a/app/src/main/java/com/clemhaowen/dm_td2/tasklist/Task.kt +++ b/app/src/main/java/com/clemhaowen/dm_td2/tasklist/Task.kt @@ -1,7 +1,9 @@ package com.clemhaowen.dm_td2.tasklist -data class Task( - var id:String = "id", - var title:String = "Task", - var description:String = "description" -) \ No newline at end of file +import java.io.Serializable + +data class Task ( + var id: String = "id", + var title: String = "Task", + var description: String = "description" +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/com/clemhaowen/dm_td2/tasklist/TaskAdapter.kt b/app/src/main/java/com/clemhaowen/dm_td2/tasklist/TaskAdapter.kt index e1edfbba2cdabe99997a456cde86eb2fb381b70a..7f7e3c9bc4573efd19ab9869112bde766ac0aa62 100644 --- a/app/src/main/java/com/clemhaowen/dm_td2/tasklist/TaskAdapter.kt +++ b/app/src/main/java/com/clemhaowen/dm_td2/tasklist/TaskAdapter.kt @@ -9,9 +9,9 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.clemhaowen.dm_td2.R -class TaskListAdapter(private val taskList: List<String>) : RecyclerView.Adapter<TaskListAdapter.TaskViewHolder>() { +class TaskListAdapter(private val taskList: List<Task>) : RecyclerView.Adapter<TaskListAdapter.TaskViewHolder>() { - var onDeleteClickListener: ((String) -> Unit)? = null + var onDeleteClickListener: ((Task) -> Unit)? = null override fun getItemCount(): Int = taskList.size @@ -24,10 +24,12 @@ class TaskListAdapter(private val taskList: List<String>) : RecyclerView.Adapter override fun onBindViewHolder(holder: TaskViewHolder, position: Int) = holder.bind(taskList[position]) inner class TaskViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - fun bind(taskTitle: String) { + fun bind(taskTitle: Task) { itemView.apply { - val textView = findViewById<TextView>(R.id.task_title) - textView.text = taskTitle + val titleTextView = findViewById<TextView>(R.id.task_title) + titleTextView.text = taskTitle.title + val descriptionTextView = findViewById<TextView>(R.id.task_description) + descriptionTextView.text = taskTitle.description val deleteButton = findViewById<ImageButton>(R.id.delete_task) deleteButton.setOnClickListener { onDeleteClickListener?.invoke(taskTitle)} diff --git a/app/src/main/java/com/clemhaowen/dm_td2/tasklist/TaskListFragment.kt b/app/src/main/java/com/clemhaowen/dm_td2/tasklist/TaskListFragment.kt index 0a480244331a2d37e43c4834ae6bb1b7b3204885..bf884d0bd7907e9007736e258f942382a189f3c2 100644 --- a/app/src/main/java/com/clemhaowen/dm_td2/tasklist/TaskListFragment.kt +++ b/app/src/main/java/com/clemhaowen/dm_td2/tasklist/TaskListFragment.kt @@ -1,23 +1,32 @@ package com.clemhaowen.dm_td2.tasklist +import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageButton import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.clemhaowen.dm_td2.R +import com.clemhaowen.dm_td2.task.TaskActivity +import com.google.android.material.floatingactionbutton.FloatingActionButton +import java.util.* class TaskListFragment : Fragment() { - private var taskList = mutableListOf("Task 1", "Task 2", "Task 3") + //private var taskList = mutableListOf("Task 1", "Task 2", "Task 3") // TODO uncomment when Task is implemented - /*private val taskList = listOf( + private val taskList = mutableListOf( Task(id = "id_1", title = "Task 1", description = "description 1"), Task(id = "id_2", title = "Task 2"), Task(id = "id_3", title = "Task 3") - )*/ + ) + + companion object { + const val ADD_TASK_REQUEST_CODE = 666 + } override fun onCreateView( inflater: LayoutInflater, @@ -37,7 +46,20 @@ class TaskListFragment : Fragment() { taskList.remove(task) (recyclerView?.adapter as TaskListAdapter).notifyDataSetChanged() } + val createButton = view?.findViewById<FloatingActionButton>(R.id.floatingActionButton) + createButton.setOnClickListener { + val intent = Intent(activity, TaskActivity::class.java) + startActivityForResult(intent, ADD_TASK_REQUEST_CODE) + //taskList.add(Task(id = UUID.randomUUID().toString(), title = "Task ${taskList.size + 1}")) + (recyclerView?.adapter as TaskListAdapter).notifyDataSetChanged() + } + // En utilisant les synthetics, on écrit juste l'id directement (c'est magique ✨): //R.id.fragment_tasklist_recyclerView.layoutManager = LinearLayoutManager(activity) // ça marche pas } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + val task = data!!.getSerializableExtra(TaskActivity.TASK_KEY) as Task + taskList.add(task) + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_task.xml b/app/src/main/res/layout/activity_task.xml index 378b76ed590e371b6e12abe40806055122387d2c..121440d9eb12c4f52a8878fe8495ef05722a2d2d 100644 --- a/app/src/main/res/layout/activity_task.xml +++ b/app/src/main/res/layout/activity_task.xml @@ -14,7 +14,7 @@ app:layout_constraintTop_toTopOf="parent"> <EditText - android:id="@+id/editTextTextPersonName" + android:id="@+id/titleEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" @@ -23,7 +23,7 @@ tools:text="@android:string/unknownName" /> <EditText - android:id="@+id/editTextTextMultiLine" + android:id="@+id/descriptionEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" diff --git a/app/src/main/res/layout/item_task.xml b/app/src/main/res/layout/item_task.xml index 85325a5512868e389def96560477e649bfa16c46..436d757e55ca8591566716338db666536466c680 100644 --- a/app/src/main/res/layout/item_task.xml +++ b/app/src/main/res/layout/item_task.xml @@ -12,10 +12,31 @@ android:layout_width="match_parent" android:layout_height="wrap_content" /> - <ImageButton - android:id="@+id/delete_task" + <TextView + android:id="@+id/task_description" + android:background="@android:color/holo_blue_bright" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + <LinearLayout android:layout_width="match_parent" - android:layout_height="wrap_content" - android:contentDescription="@android:string/unknownName" - app:srcCompat="@android:drawable/ic_menu_delete" /> + android:layout_height="match_parent" + android:orientation="horizontal"> + + <ImageButton + android:id="@+id/editButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + app:srcCompat="@android:drawable/ic_menu_edit" /> + + <ImageButton + android:id="@+id/delete_task" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:contentDescription="@android:string/unknownName" + app:srcCompat="@android:drawable/ic_menu_delete" /> + </LinearLayout> + </LinearLayout> \ No newline at end of file