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.

4 changes: 4 additions & 0 deletions app/src/main/java/com/devspace/taskbeats/CategoryDao.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.devspace.taskbeats

import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
Expand All @@ -18,4 +19,7 @@ interface CategoryDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun inset(categoryEntity: CategoryEntity)

@Delete
fun delete(categoryEntity: CategoryEntity)

}
15 changes: 13 additions & 2 deletions app/src/main/java/com/devspace/taskbeats/CategoryListAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,16 @@ class CategoryListAdapter :
ListAdapter<CategoryUiData, CategoryListAdapter.CategoryViewHolder>(CategoryListAdapter) {

private var onClick: (CategoryUiData) -> Unit = {} //optei por inicializar SEMPRE, por padrão, como uma função VAZIA, pra nao dar crash caso eu nao inicialize
private lateinit var onLongClick: (CategoryUiData) -> Unit

fun setOnClickListener(onClick: (CategoryUiData) -> Unit) {
this.onClick = onClick
}

fun setOnLongClickListener(onLongClick: (CategoryUiData) -> Unit){
this.onLongClick = onLongClick
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CategoryViewHolder {
val view =
LayoutInflater.from(parent.context).inflate(R.layout.item_category, parent, false)
Expand All @@ -25,19 +30,25 @@ class CategoryListAdapter :

override fun onBindViewHolder(holder: CategoryViewHolder, position: Int) {
val category = getItem(position)
holder.bind(category, onClick)
holder.bind(category, onClick, onLongClick)
}

class CategoryViewHolder(private val view: View) : RecyclerView.ViewHolder(view) {
private val tvCategory = view.findViewById<TextView>(R.id.tv_category)

fun bind(category: CategoryUiData, onClick: (CategoryUiData) -> Unit) {
fun bind(category: CategoryUiData, onClick: (CategoryUiData) -> Unit, onLongClick: (CategoryUiData) -> Unit) {
tvCategory.text = category.name
tvCategory.isSelected = category.isSelected

view.setOnClickListener {
onClick.invoke(category)
}

view.setOnLongClickListener {
onLongClick.invoke(category)
true
}

}
}

Expand Down
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.

Loading