@@ -70,6 +70,8 @@ import javax.inject.Inject
7070 */
7171class ChooseTemplateDialogFragment : DialogFragment (), View.OnClickListener, TemplateAdapter.ClickListener, Injectable {
7272
73+ private lateinit var fileNames: List <String >
74+
7375 @Inject
7476 lateinit var clientFactory: ClientFactory
7577
@@ -116,6 +118,7 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
116118 )
117119 button.setOnClickListener(this )
118120 button.isEnabled = false
121+ button.isClickable = false
119122
120123 positiveButton = button
121124 checkEnablingCreateButton()
@@ -133,7 +136,7 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
133136 else -> savedInstanceState.getString(ARG_HEADLINE )
134137 }
135138
136- val fileNames = fileDataStorageManager.getFolderContent(parentFolder, false ).map { it.fileName }
139+ fileNames = fileDataStorageManager.getFolderContent(parentFolder, false ).map { it.fileName }
137140
138141 // Inflate the layout for the dialog
139142 val inflater = requireActivity().layoutInflater
@@ -147,15 +150,12 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
147150 themeColorUtils.primaryColor(context),
148151 themeColorUtils.primaryAccentColor(context)
149152 )
150- binding.filename.setOnKeyListener { _, _, _ ->
151- checkEnablingCreateButton()
152- false
153- }
153+
154154 binding.filename.addTextChangedListener(object : TextWatcher {
155155 override fun beforeTextChanged (s : CharSequence , start : Int , count : Int , after : Int ) = Unit
156156
157157 override fun onTextChanged (s : CharSequence , start : Int , before : Int , count : Int ) {
158- checkExistingFilename(fileNames)
158+ // not needed
159159 }
160160
161161 override fun afterTextChanged (s : Editable ) {
@@ -259,26 +259,21 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
259259 private fun checkEnablingCreateButton () {
260260 if (positiveButton != null ) {
261261 val selectedTemplate = adapter!! .selectedTemplate
262- val name = binding.filename.text.toString()
263- positiveButton!! .isEnabled = selectedTemplate != null && name.isNotEmpty() &&
264- ! name.equals(DOT + selectedTemplate.extension, ignoreCase = true )
265- }
266- }
262+ val name = binding.filename.text.toString().trim()
263+ val isNameEmpty = name.isEmpty() || name.equals(DOT + selectedTemplate.extension, ignoreCase = true )
264+ val state = selectedTemplate != null && ! isNameEmpty && ! fileNames.contains(name)
267265
268- private fun checkExistingFilename (fileNames : List <String >) {
269- var newFileName = " "
270- if (binding.filename.text != null ) {
271- newFileName = binding.filename.text.toString().trim()
272- }
266+ positiveButton?.isEnabled = state
267+ positiveButton?.isClickable = state
268+ binding.filenameContainer.isErrorEnabled = ! state
273269
274- if (fileNames.contains(newFileName)) {
275- binding.filenameContainer.error = getText(R .string.file_already_exists)
276- positiveButton?.isEnabled = false
277- } else if (binding.filenameContainer.error != null ) {
278- binding.filenameContainer.error = null
279- // Called to remove extra padding
280- binding.filenameContainer.isErrorEnabled = false
281- positiveButton?.isEnabled = true
270+ if (! state) {
271+ if (isNameEmpty) {
272+ binding.filenameContainer.error = getText(R .string.filename_empty)
273+ } else {
274+ binding.filenameContainer.error = getText(R .string.file_already_exists)
275+ }
276+ }
282277 }
283278 }
284279
0 commit comments