Gain focus in folder creation dialog (#624)

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Co-authored-by: Aditya Wasan <adityawasan55@gmail.com>
This commit is contained in:
Harsh Shandilya 2020-02-10 09:47:07 +05:30 committed by GitHub
parent 085b946c7d
commit bcdc43b1f1

View file

@ -5,9 +5,12 @@
package com.zeapo.pwdstore.ui.dialogs package com.zeapo.pwdstore.ui.dialogs
import android.app.Dialog import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle import android.os.Bundle
import android.os.Handler
import android.os.SystemClock
import android.view.MotionEvent
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.os.postDelayed
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputEditText
@ -16,13 +19,28 @@ import com.zeapo.pwdstore.R
import java.io.File import java.io.File
class FolderCreationDialogFragment : DialogFragment() { class FolderCreationDialogFragment : DialogFragment() {
override fun onResume() {
// TODO: We really, really should not need this amount of hackery. WTF is going on?
super.onResume()
val editText = dialog?.findViewById<TextInputEditText>(R.id.folder_name_text)
Handler().postDelayed(300) {
editText?.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 0f, 0f, 0))
editText?.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 0f, 0f, 0))
}
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val alertDialogBuilder = MaterialAlertDialogBuilder(requireContext()) val alertDialogBuilder = MaterialAlertDialogBuilder(requireContext())
alertDialogBuilder.setTitle(R.string.title_create_folder) alertDialogBuilder.setTitle(R.string.title_create_folder)
alertDialogBuilder.setView(R.layout.folder_creation_dialog_fragment) alertDialogBuilder.setView(R.layout.folder_creation_dialog_fragment)
alertDialogBuilder.setPositiveButton(getString(R.string.button_create)) { _: DialogInterface, _: Int -> alertDialogBuilder.setPositiveButton(getString(R.string.button_create)) { _, _ ->
createDirectory(requireArguments().getString(CURRENT_DIR_EXTRA)!!) createDirectory(requireArguments().getString(CURRENT_DIR_EXTRA)!!)
} }
alertDialogBuilder.setNegativeButton(getString(android.R.string.cancel)) { _, _ ->
dismiss()
}
isCancelable = false
return alertDialogBuilder.create() return alertDialogBuilder.create()
} }
@ -32,6 +50,7 @@ class FolderCreationDialogFragment : DialogFragment() {
val folderName = materialTextView.text.toString() val folderName = materialTextView.text.toString()
File("$currentDir/$folderName").mkdir() File("$currentDir/$folderName").mkdir()
(requireActivity() as PasswordStore).updateListAdapter() (requireActivity() as PasswordStore).updateListAdapter()
dismiss()
} }
companion object { companion object {