Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
package com.devspace.taskbeats

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Button
import android.widget.Spinner
import android.widget.TextView
import androidx.core.view.isVisible
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.google.android.material.snackbar.Snackbar
import com.google.android.material.textfield.TextInputEditText

class CreateOrUpdateTaskBottomSheet(
private val categoryList: List<CategoryUiData>,
private val task: TaskUiData? = null,
private val onCreateClicked: (TaskUiData) -> Unit,
private val onUpdateClicked: (TaskUiData) -> Unit,
private val onDeleteClicked: (TaskUiData) -> Unit
) : BottomSheetDialogFragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.create_or_update_task_bottom_sheet, container, false)
val btnCreateOrUpdate = view.findViewById<Button>(R.id.btn_task_create_or_update)
val btnDelete = view.findViewById<Button>(R.id.btn_task_delete)
val tvTitle = view.findViewById<TextView>(R.id.tv_title)
val tieTaskName = view.findViewById<TextInputEditText>(R.id.tie_task_name)
val catSpin = view.findViewById<Spinner>(R.id.category_list)
var taskCategory: String? = null
val categoryStr: List<String> = categoryList.map { it.name }
ArrayAdapter(
requireActivity().baseContext,
android.R.layout.simple_spinner_item,
categoryStr.toList()
).also { adapter ->
adapter.setDropDownViewResource(android.R.layout.simple_spinner_item)
catSpin.adapter = adapter
}
catSpin.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
) {
taskCategory = categoryStr.get(position)
}

override fun onNothingSelected(parent: AdapterView<*>?) {

}
}



btnCreateOrUpdate.setOnClickListener {
val name = tieTaskName.text.toString().trim()
if (taskCategory != null && name.isNotEmpty()) {
if (task == null) {
onCreateClicked.invoke(
TaskUiData(
id = 0,
name = name,
category = requireNotNull(taskCategory)
)
)
dismiss()
} else {
onUpdateClicked.invoke(
TaskUiData(
id = task.id,
name = name,
category = requireNotNull(taskCategory)
)
)
dismiss()
}


} else {
Snackbar.make(btnCreateOrUpdate, "Please select a category", Snackbar.LENGTH_LONG)
.show()
}
}
if (task == null) {
btnDelete.isVisible = false
tvTitle.setText(R.string.create_task_title)
btnCreateOrUpdate.setText(R.string.create)
} else {
tvTitle.setText(R.string.update_task_title)
btnCreateOrUpdate.setText(R.string.update)
tieTaskName.setText(task.name)
btnDelete.isVisible = true
btnDelete.setOnClickListener {
if (task != null) {
onDeleteClicked.invoke(task)
dismiss()
} else {
Log.d("CreateOrUpdateTaskBottomSheet", "Task not found")
}
}
val currentCategory = categoryList.first { it.name == task.category }
catSpin.setSelection(categoryList.indexOf(currentCategory))
}
return view
}
}
68 changes: 0 additions & 68 deletions app/src/main/java/com/devspace/taskbeats/CreateTaskBottomSheet.kt

This file was deleted.

106 changes: 71 additions & 35 deletions app/src/main/java/com/devspace/taskbeats/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package com.devspace.taskbeats
//Onde parei? Terminei aula 11 e parei nos 13:30 da aula 12 - que é click na lista de tarefas. ele vai debugar o código agora.
//Onde parei? Terminei aula 16, devo iniciar a 17
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.RecyclerView
Expand All @@ -12,7 +12,7 @@ import kotlinx.coroutines.launch
class MainActivity : AppCompatActivity() {
private var categoriess = listOf<CategoryUiData>()
private var taskss = listOf<TaskUiData>()
private val taskAdapter by lazy{
private val taskAdapter by lazy {
TaskListAdapter()
}
private val categoryAdapter = CategoryListAdapter()
Expand Down Expand Up @@ -46,6 +46,10 @@ class MainActivity : AppCompatActivity() {
showCreateUpdateTaskBottomSheet()
}

taskAdapter.setOnClickListener { task ->
showCreateUpdateTaskBottomSheet(task)
}

categoryAdapter.setOnClickListener { selected ->
if (selected.name == "+") {
val createCategoryBottomSheet = CreateCategoryBottomSheet { categoryName ->
Expand Down Expand Up @@ -85,9 +89,7 @@ class MainActivity : AppCompatActivity() {
getCategoriesFromDataBase()
}
rvTask.adapter = taskAdapter
taskAdapter.setOnClickListener {
showCreateUpdateTaskBottomSheet()
}


//categoryAdapter.submitList(categories)
GlobalScope.launch(Dispatchers.IO) {
Expand Down Expand Up @@ -173,20 +175,54 @@ class MainActivity : AppCompatActivity() {
}
}

private fun showCreateUpdateTaskBottomSheet() {
val createTaskBottomSheet = CreateTaskBottomSheet(categoriess)
{ taskToBeCreated ->
val taskEntityToBeInsert = TaskEntity(
id = taskToBeCreated.id, //cuidado com essa porra
name = taskToBeCreated.name,
category = taskToBeCreated.category
)
insertTask(taskEntityToBeInsert)
private fun updateTask(taskEntity: TaskEntity) {
GlobalScope.launch(Dispatchers.IO) {
taskDao.update(taskEntity)
getTasksFromDataBase()
}
}

private fun deleteTask(taskEntity: TaskEntity) {
GlobalScope.launch(Dispatchers.IO) {
taskDao.delete(taskEntity)
getTasksFromDataBase()
}
}

private fun showCreateUpdateTaskBottomSheet(taskUiData: TaskUiData? = null) {
val createTaskBottomSheet = CreateOrUpdateTaskBottomSheet(
task = taskUiData,
categoryList = categoriess,
onCreateClicked = { taskToBeCreated ->
val taskEntityToBeInsert = TaskEntity(
name = taskToBeCreated.name,
category = taskToBeCreated.category
)
insertTask(taskEntityToBeInsert)
},
onUpdateClicked = { taskToBeUpdated ->
val taskEntityToBeUpdate = TaskEntity(
id = taskToBeUpdated.id, //cuidado com essa porra
name = taskToBeUpdated.name,
category = taskToBeUpdated.category
)

updateTask(taskEntityToBeUpdate)
},
onDeleteClicked = { taskToBeDeleted ->
val taskEntityToBeDeleted = TaskEntity(
id = taskToBeDeleted.id,
name = taskToBeDeleted.name,
category = taskToBeDeleted.category
)
deleteTask(taskEntityToBeDeleted)
}
)
createTaskBottomSheet.show(supportFragmentManager, "createTaskBottomSheet")
}
}

//
val categories: List<CategoryUiData> = listOf(
//Lista vazia pra testar se o dado foi pro DB mesmo.
CategoryUiData(
Expand Down Expand Up @@ -239,57 +275,57 @@ val categories: List<CategoryUiData> = listOf(
val tasks = listOf(
TaskUiData(
0,
"Ler 10 páginas do livro atual",
"01 - Ler 10 páginas do livro atual",
"STUDY",
),
TaskUiData(
1,
"45 min de treino na academia",
0,
"02 - 45 min de treino na academia",
"HEALTH",
),
TaskUiData(
2,
"Correr 5km",
0,
"03 - Correr 5km",
"HEALTH",
),
TaskUiData(
3,
"Meditar por 10 min",
0,
"04 - Meditar por 10 min",
"WELLNESS",
),
TaskUiData(
4,
"Silêncio total por 5 min",
0,
"05 - Silêncio total por 5 min",
"WELLNESS",
),
TaskUiData(
5,
"Descer o livo",
0,
"06 - Descer o livo",
"HOME",
),
TaskUiData(
6,
"Tirar caixas da garagem",
0,
"07 - Tirar caixas da garagem",
"HOME",
),
TaskUiData(
7,
"Lavar o carro",
0,
"08 - Lavar o carro",
"HOME",
),
TaskUiData(
8,
"Gravar aulas DevSpace",
0,
"09 - Gravar aulas DevSpace",
"WORK",
),
TaskUiData(
9,
"Criar planejamento de vídeos da semana",
0,
"10 - Criar planejamento de vídeos da semana",
"WORK",
),
TaskUiData(
10,
"Soltar reels da semana",
0,
"11 - Soltar reels da semana",
"WORK",
),
)
Loading