diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/TextInputDialog.kt b/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/TextInputDialog.kt index 884dae51c..c511e7a98 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/TextInputDialog.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/TextInputDialog.kt @@ -3,28 +3,16 @@ package org.koitharu.kotatsu.ui.common.dialog import android.annotation.SuppressLint import android.content.Context import android.content.DialogInterface +import android.text.InputFilter import android.view.LayoutInflater -import android.view.inputmethod.InputMethodManager -import android.widget.TextView import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog import kotlinx.android.synthetic.main.dialog_input.view.* import org.koitharu.kotatsu.R -import org.koitharu.kotatsu.utils.ext.showKeyboard class TextInputDialog private constructor(private val delegate: AlertDialog) : DialogInterface by delegate { - init { - delegate.setOnShowListener { - val view = delegate.findViewById(R.id.inputEdit)?:return@setOnShowListener - view.post { - view.requestFocus() - view.showKeyboard() - } - } - } - fun show() = delegate.show() class Builder(context: Context) { @@ -34,10 +22,6 @@ class TextInputDialog private constructor(private val delegate: AlertDialog) : private val delegate = AlertDialog.Builder(context) .setView(view) - .setOnDismissListener { - val imm = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager - imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0) - } fun setTitle(@StringRes titleResId: Int): Builder { delegate.setTitle(titleResId) @@ -54,6 +38,17 @@ class TextInputDialog private constructor(private val delegate: AlertDialog) : return this } + fun setMaxLength(maxLength: Int, strict: Boolean): Builder { + with(view.inputLayout) { + counterMaxLength = maxLength + isCounterEnabled = maxLength > 0 + } + if (strict && maxLength > 0) { + view.inputEdit.filters += InputFilter.LengthFilter(maxLength) + } + return this + } + fun setInputType(inputType: Int): Builder { view.inputEdit.inputType = inputType return this diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/main/list/favourites/categories/CategoriesActivity.kt b/app/src/main/java/org/koitharu/kotatsu/ui/main/list/favourites/categories/CategoriesActivity.kt index df06e5490..f3e77211d 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/main/list/favourites/categories/CategoriesActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/main/list/favourites/categories/CategoriesActivity.kt @@ -86,6 +86,7 @@ class CategoriesActivity : BaseActivity(), OnRecyclerItemClickListener presenter.renameCategory(category.id, name) }.create() @@ -98,6 +99,7 @@ class CategoriesActivity : BaseActivity(), OnRecyclerItemClickListener presenter.createCategory(name) }.create() diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/main/list/favourites/categories/select/FavouriteCategoriesDialog.kt b/app/src/main/java/org/koitharu/kotatsu/ui/main/list/favourites/categories/select/FavouriteCategoriesDialog.kt index 666f3c880..93a9123c3 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/main/list/favourites/categories/select/FavouriteCategoriesDialog.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/main/list/favourites/categories/select/FavouriteCategoriesDialog.kt @@ -70,6 +70,7 @@ class FavouriteCategoriesDialog : BaseBottomSheet(R.layout.dialog_favorite_categ TextInputDialog.Builder(context ?: return) .setTitle(R.string.add_new_category) .setHint(R.string.enter_category_name) + .setMaxLength(12, false) .setInputType(InputType.TYPE_TEXT_VARIATION_PERSON_NAME or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES) .setNegativeButton(android.R.string.cancel) .setPositiveButton(R.string.add) { _, name -> diff --git a/app/src/main/res/layout/dialog_input.xml b/app/src/main/res/layout/dialog_input.xml index 7bfc4edc1..e7958fc66 100644 --- a/app/src/main/res/layout/dialog_input.xml +++ b/app/src/main/res/layout/dialog_input.xml @@ -13,6 +13,7 @@ android:id="@+id/inputLayout" android:layout_width="match_parent" android:layout_height="wrap_content" + app:boxBackgroundColor="@android:color/transparent" app:boxBackgroundMode="filled">