Adds auto keyboard popup to dialogs (#4667)

Adds auto keyboard popup to ListsActivity, FollowedTagsActivity,
EditFilterActivity, CaptionDialog, and AddPollDialog.kt, and
AddHashtagDialog in TabPreferenceActivity. These are all dialog screens
which editing texts are the main purposes

---------

Co-authored-by: Weblate <42475313+nailyk-weblate@users.noreply.github.com>
Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Manuel <mannivuwiki@gmail.com>
Co-authored-by: Eric <ekhfcxwuvxqfdb@hldrive.com>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
This commit is contained in:
Andrew Hamilton 2024-09-13 09:52:11 -04:00 committed by GitHub
commit 3c25b76853
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 43 additions and 2 deletions

View file

@ -23,6 +23,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.widget.PopupMenu
import androidx.activity.viewModels
import androidx.annotation.StringRes
@ -136,11 +137,14 @@ class ListsActivity : BaseActivity() {
.setNegativeButton(android.R.string.cancel, null)
.show()
dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
binding.nameText.let { editText ->
editText.doOnTextChanged { s, _, _, _ ->
dialog.getButton(Dialog.BUTTON_POSITIVE).isEnabled = s?.isNotBlank() == true
}
editText.setText(list?.title)
editText.requestFocus()
editText.text?.let { editText.setSelection(it.length) }
}

View file

@ -18,6 +18,7 @@ package com.keylesspalace.tusky
import android.graphics.Color
import android.os.Bundle
import android.view.View
import android.view.WindowManager
import android.widget.FrameLayout
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AlertDialog
@ -267,6 +268,7 @@ class TabPreferenceActivity : BaseActivity(), ItemInteractionListener, ListSelec
dialog.show()
dialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = validateHashtag(editText.text)
dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
editText.requestFocus()
}

View file

@ -22,6 +22,7 @@ import android.view.LayoutInflater
import android.view.WindowManager
import androidx.appcompat.app.AlertDialog
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.textfield.TextInputEditText
import com.keylesspalace.tusky.R
import com.keylesspalace.tusky.databinding.DialogAddPollBinding
import com.keylesspalace.tusky.entity.NewPoll
@ -106,6 +107,14 @@ fun showAddPollDialog(
dialog.show()
dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
binding.pollChoices.post {
val firstItemView = binding.pollChoices.layoutManager?.findViewByPosition(0)
val editText = firstItemView?.findViewById<TextInputEditText>(R.id.optionEditText)
editText?.requestFocus()
editText?.setSelection(editText.length())
}
// make the dialog focusable so the keyboard does not stay behind it
dialog.window?.clearFlags(
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM

View file

@ -62,6 +62,11 @@ class CaptionDialog : DialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val imageView = binding.imageDescriptionView
imageView.maxZoom = 6f
val imageDescriptionText = binding.imageDescriptionText
imageDescriptionText.post {
imageDescriptionText.requestFocus()
imageDescriptionText.setSelection(imageDescriptionText.length())
}
binding.imageDescriptionText.hint = resources.getQuantityString(
R.plurals.hint_describe_for_visually_impaired,

View file

@ -3,6 +3,7 @@ package com.keylesspalace.tusky.components.filters
import android.content.Context
import android.content.DialogInterface.BUTTON_POSITIVE
import android.os.Bundle
import android.view.WindowManager
import android.widget.AdapterView
import androidx.activity.viewModels
import androidx.core.view.size
@ -211,7 +212,7 @@ class EditFilterActivity : BaseActivity() {
private fun showAddKeywordDialog() {
val binding = DialogFilterBinding.inflate(layoutInflater)
binding.phraseWholeWord.isChecked = true
MaterialAlertDialogBuilder(this)
val dialog = MaterialAlertDialogBuilder(this)
.setTitle(R.string.filter_keyword_addition_title)
.setView(binding.root)
.setPositiveButton(android.R.string.ok) { _, _ ->
@ -225,6 +226,12 @@ class EditFilterActivity : BaseActivity() {
}
.setNegativeButton(android.R.string.cancel, null)
.show()
dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
val editText = binding.phraseEditText
editText.requestFocus()
editText.setSelection(editText.length())
}
private fun showEditKeywordDialog(keyword: FilterKeyword) {
@ -232,7 +239,7 @@ class EditFilterActivity : BaseActivity() {
binding.phraseEditText.setText(keyword.keyword)
binding.phraseWholeWord.isChecked = keyword.wholeWord
MaterialAlertDialogBuilder(this)
val dialog = MaterialAlertDialogBuilder(this)
.setTitle(R.string.filter_edit_keyword_title)
.setView(binding.root)
.setPositiveButton(R.string.filter_dialog_update_button) { _, _ ->
@ -246,6 +253,12 @@ class EditFilterActivity : BaseActivity() {
}
.setNegativeButton(android.R.string.cancel, null)
.show()
dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
val editText = binding.phraseEditText
editText.requestFocus()
editText.setSelection(editText.length())
}
private fun validateSaveButton() {

View file

@ -5,6 +5,7 @@ import android.content.DialogInterface
import android.content.SharedPreferences
import android.os.Bundle
import android.util.Log
import android.view.WindowManager
import android.widget.AutoCompleteTextView
import androidx.activity.viewModels
import androidx.fragment.app.DialogFragment
@ -194,6 +195,8 @@ class FollowedTagsActivity :
showBotBadge = false
)
)
autoCompleteTextView.requestFocus()
autoCompleteTextView.setSelection(autoCompleteTextView.length())
return MaterialAlertDialogBuilder(requireActivity())
.setTitle(R.string.dialog_follow_hashtag_title)
@ -207,6 +210,11 @@ class FollowedTagsActivity :
.create()
}
override fun onStart() {
super.onStart()
dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
}
companion object {
fun newInstance(): FollowTagDialog = FollowTagDialog()
}