Skip to content

Commit d73ec0b

Browse files
feat(ADFA-4321): Paper cut: Add a clear icon to the app name text field (#1392)
feat(ADFA-4321): Add a clear icon to the app name text field
1 parent 3ff1495 commit d73ec0b

2 files changed

Lines changed: 14 additions & 4 deletions

File tree

‎templates-api/src/main/java/com/itsaky/androidide/templates/parameters.kt‎

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,8 @@ class BooleanParameterBuilder : ParameterBuilder<Boolean>() {
300300
* is clicked. Click listener to the icon will be set on if this is non-null.
301301
* @property onEndIconClick Function which will be used when the end icon is
302302
* clicked. Click listener to the icon will be set on if this is non-null.
303+
* @property showClearIcon Whether a Material clear-text (X) end icon should be
304+
* shown, allowing the user to empty the field in one tap.
303305
*/
304306
abstract class TextFieldParameter<T>(
305307
@StringRes name: Int,
@@ -311,7 +313,8 @@ abstract class TextFieldParameter<T>(
311313
val inputType: Int?,
312314
@StyleableRes val imeOptions: Int?,
313315
val maxLines: Int?, tooltipTag: String?, constraints: List<ParameterConstraint>,
314-
id: Int?, nameStr: String?
316+
id: Int?, nameStr: String?,
317+
val showClearIcon: Boolean = false
315318
) : Parameter<T>(name, description, default, tooltipTag, constraints, id, nameStr)
316319

317320
abstract class TextFieldParameterBuilder<T>(
@@ -322,6 +325,7 @@ abstract class TextFieldParameterBuilder<T>(
322325
var inputType: Int? = null,
323326
var imeOptions: Int? = null,
324327
var maxLines: Int? = null,
328+
var showClearIcon: Boolean = false,
325329
) : ParameterBuilder<T>()
326330

327331
class StringParameter(
@@ -337,11 +341,12 @@ class StringParameter(
337341
tooltipTag: String?,
338342
constraints: List<ParameterConstraint>,
339343
id: Int?,
340-
nameStr: String?
344+
nameStr: String?,
345+
showClearIcon: Boolean = false
341346
) : TextFieldParameter<String>(
342347
name, description, default, startIcon, endIcon,
343348
onStartIconClick, onEndIconClick, inputType, imeOptions, maxLines, tooltipTag, constraints,
344-
id, nameStr
349+
id, nameStr, showClearIcon
345350
)
346351

347352
class StringParameterBuilder : TextFieldParameterBuilder<String>() {
@@ -361,7 +366,8 @@ class StringParameterBuilder : TextFieldParameterBuilder<String>() {
361366
tooltipTag = tooltipTag,
362367
constraints = constraints,
363368
id = id,
364-
nameStr = nameStr
369+
nameStr = nameStr,
370+
showClearIcon = showClearIcon
365371
)
366372
}
367373
}
@@ -438,6 +444,7 @@ inline fun projectNameParameter(
438444
name = string.project_app_name
439445
default = "My Application"
440446
startIcon = { R.drawable.ic_android }
447+
showClearIcon = true
441448
constraints = listOf(NONEMPTY)
442449
inputType =
443450
android.text.InputType.TYPE_CLASS_TEXT or android.text.InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS

‎templates-impl/src/main/java/com/itsaky/androidide/templates/impl/TemplateWidgetViewProviderImpl.kt‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,9 @@ class TemplateWidgetViewProviderImpl : ITemplateWidgetViewProvider {
360360
root.setHint(name)
361361
}
362362
resetStartAndEndIcons(context, root)
363+
if (showClearIcon) {
364+
root.endIconMode = TextInputLayout.END_ICON_CLEAR_TEXT
365+
}
363366
root.editText!!.addTextChangedListener(object : SingleTextWatcher() {
364367
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
365368
onTextChanged(s?.toString() ?: "")

0 commit comments

Comments
 (0)