mirror of https://github.com/tasks/tasks
Add DescriptionRow composable
parent
b13db7d23a
commit
e7b6c96576
@ -0,0 +1,112 @@
|
||||
package org.tasks.compose.edit
|
||||
|
||||
import android.content.res.Configuration
|
||||
import android.text.InputType
|
||||
import android.util.TypedValue
|
||||
import android.view.View
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.widget.EditText
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.ExperimentalComposeUiApi
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.viewinterop.AndroidView
|
||||
import androidx.core.widget.addTextChangedListener
|
||||
import com.google.android.material.composethemeadapter.MdcTheme
|
||||
import org.tasks.R
|
||||
import org.tasks.compose.TaskEditRow
|
||||
import org.tasks.dialogs.Linkify
|
||||
import org.tasks.markdown.MarkdownProvider
|
||||
|
||||
@Composable
|
||||
fun DescriptionRow(
|
||||
text: String?,
|
||||
onChanged: (CharSequence?) -> Unit,
|
||||
linkify: Linkify?,
|
||||
markdownProvider: MarkdownProvider?,
|
||||
) {
|
||||
TaskEditRow(
|
||||
iconRes = R.drawable.ic_outline_notes_24px,
|
||||
content = {
|
||||
Column(verticalArrangement = Arrangement.Center) {
|
||||
Spacer(modifier = Modifier.height(11.dp))
|
||||
AndroidView(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.wrapContentHeight()
|
||||
.padding(end = 16.dp),
|
||||
factory = { context ->
|
||||
EditText(context).apply {
|
||||
setText(text)
|
||||
val textWatcher =
|
||||
markdownProvider?.markdown(linkify != null)?.textWatcher(this)
|
||||
addTextChangedListener(
|
||||
onTextChanged = { text, _, _, _ -> onChanged(text) },
|
||||
afterTextChanged = { editable -> textWatcher?.invoke(editable) }
|
||||
)
|
||||
setBackgroundColor(context.getColor(android.R.color.transparent))
|
||||
textAlignment = View.TEXT_ALIGNMENT_VIEW_START
|
||||
imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI
|
||||
inputType =
|
||||
InputType.TYPE_CLASS_TEXT or
|
||||
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
|
||||
InputType.TYPE_TEXT_FLAG_MULTI_LINE or
|
||||
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
|
||||
isSingleLine = false
|
||||
maxLines = Int.MAX_VALUE
|
||||
importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_NO
|
||||
isVerticalScrollBarEnabled = true
|
||||
freezesText = true
|
||||
setHorizontallyScrolling(false)
|
||||
isHorizontalScrollBarEnabled = false
|
||||
setHint(R.string.TEA_note_label)
|
||||
setHintTextColor(context.getColor(R.color.text_tertiary))
|
||||
setTextSize(
|
||||
TypedValue.COMPLEX_UNIT_PX,
|
||||
context.resources.getDimension(R.dimen.task_edit_text_size)
|
||||
)
|
||||
linkify?.linkify(this)
|
||||
}
|
||||
},
|
||||
)
|
||||
Spacer(modifier = Modifier.height(11.dp))
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
@ExperimentalComposeUiApi
|
||||
@Preview(showBackground = true, widthDp = 320)
|
||||
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
|
||||
@Composable
|
||||
fun EmptyDescriptionPreview() {
|
||||
MdcTheme {
|
||||
DescriptionRow(
|
||||
text = null,
|
||||
onChanged = {},
|
||||
linkify = null,
|
||||
markdownProvider = null,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@ExperimentalComposeUiApi
|
||||
@Preview(showBackground = true, widthDp = 320)
|
||||
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
|
||||
@Composable
|
||||
fun DescriptionPreview() {
|
||||
MdcTheme {
|
||||
DescriptionRow(
|
||||
text = """
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
||||
|
||||
Eleifend quam adipiscing vitae proin sagittis. Faucibus a pellentesque sit amet porttitor eget dolor.
|
||||
""".trimIndent(),
|
||||
onChanged = {},
|
||||
linkify = null,
|
||||
markdownProvider = null,
|
||||
)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue