mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.3 KiB
Kotlin
64 lines
2.3 KiB
Kotlin
package com.todoroo.astrid.tags
|
|
|
|
import android.app.Activity
|
|
import android.content.Intent
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import androidx.compose.ui.platform.ComposeView
|
|
import com.google.android.material.composethemeadapter.MdcTheme
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
import kotlinx.coroutines.flow.update
|
|
import org.tasks.R
|
|
import org.tasks.compose.collectAsStateLifecycleAware
|
|
import org.tasks.compose.edit.TagsRow
|
|
import org.tasks.tags.TagPickerActivityCompose
|
|
import org.tasks.ui.ChipProvider
|
|
import org.tasks.ui.TaskEditControlFragment
|
|
import javax.inject.Inject
|
|
|
|
@AndroidEntryPoint
|
|
class TagsControlSet : TaskEditControlFragment() {
|
|
@Inject lateinit var chipProvider: ChipProvider
|
|
|
|
private fun onRowClick() {
|
|
val intent = Intent(context, TagPickerActivityCompose::class.java)
|
|
intent.putParcelableArrayListExtra(TagPickerActivityCompose.EXTRA_SELECTED, viewModel.selectedTags.value)
|
|
startActivityForResult(intent, REQUEST_TAG_PICKER_ACTIVITY)
|
|
}
|
|
|
|
override fun bind(parent: ViewGroup?): View =
|
|
(parent as ComposeView).apply {
|
|
setContent {
|
|
MdcTheme {
|
|
TagsRow(
|
|
tags = viewModel.selectedTags.collectAsStateLifecycleAware().value,
|
|
colorProvider = { chipProvider.getColor(it) },
|
|
onClick = this@TagsControlSet::onRowClick,
|
|
onClear = { tag ->
|
|
viewModel.selectedTags.update { ArrayList(it.minus(tag)) }
|
|
},
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
override fun controlId() = TAG
|
|
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
|
if (requestCode == REQUEST_TAG_PICKER_ACTIVITY) {
|
|
if (resultCode == Activity.RESULT_OK && data != null) {
|
|
viewModel.selectedTags.value =
|
|
data.getParcelableArrayListExtra(TagPickerActivityCompose.EXTRA_SELECTED)
|
|
?: ArrayList()
|
|
}
|
|
} else {
|
|
super.onActivityResult(requestCode, resultCode, data)
|
|
}
|
|
}
|
|
|
|
companion object {
|
|
val TAG = R.string.TEA_ctrl_lists_pref
|
|
private const val REQUEST_TAG_PICKER_ACTIVITY = 10582
|
|
}
|
|
}
|