override fun onCreateView()

in app/src/main/java/com/amazonaws/services/chime/sdkdemo/fragment/TranscriptionConfigFragment.kt [292:468]


    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        _binding = FragmentTranscriptionConfigBinding.inflate(inflater, container, false)
        val view = binding.root
        val context = activity as Context

        view.findViewById<Button>(R.id.buttonStartTranscription)?.setOnClickListener {
            listener.onStartTranscription(
                transcribeEngineSpinner.selectedItem as SpinnerItem,
                languageSpinner.selectedItem?.let {
                    languageSpinner.selectedItem as SpinnerItem },
                regionSpinner.selectedItem as SpinnerItem,
                partialResultsStabilizationSpinner.selectedItem as SpinnerItem,
                if (piiIdentificationSpinner.isEnabled) {
                    piiIdentificationSpinner.selectedItem as SpinnerItem } else null,
                if (piiRedactionSpinner.isEnabled) {
                    piiRedactionSpinner.selectedItem as SpinnerItem } else null,
                if (customLanguageModelCheckbox.isEnabled) {
                    customLanguageModelEditText.text.toString() } else null,
                identifyLanguageCheckbox.isChecked,
                if (identifyLanguageCheckbox.isChecked) {
                    formatLanguageOptions() } else null,
                if (identifyLanguageCheckbox.isChecked) {
                    preferredLanguageSpinner.selectedItem?.let {
                        preferredLanguageSpinner.selectedItem as SpinnerItem } } else null
            )
        }

        // Note we call isSelected and setSelection before setting onItemSelectedListener
        // so that we can control the first time the spinner is set and use previous values
        // if they exist (i.e. before rotation). We will set them after lists are populated.

        transcribeEngineSpinner = view.findViewById(R.id.spinnerTranscribeEngine)
        transcribeEngineAdapter = ArrayAdapter(context, android.R.layout.simple_spinner_item, transcribeEngines)
        transcribeEngineAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        transcribeEngineSpinner.adapter = transcribeEngineAdapter
        transcribeEngineSpinner.isSelected = false
        transcribeEngineSpinner.setSelection(0, true)
        transcribeEngineSpinner.onItemSelectedListener = onTranscribeEngineSelected

        languageSpinner = view.findViewById(R.id.spinnerLanguage)
        languageAdapter = ArrayAdapter(context, android.R.layout.simple_spinner_item, languages)
        languageAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        languageSpinner.adapter = languageAdapter
        languageSpinner.isSelected = false

        regionSpinner = view.findViewById(R.id.spinnerRegion)
        regionAdapter = ArrayAdapter(context, android.R.layout.simple_spinner_item, regions)
        regionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        regionSpinner.adapter = regionAdapter
        regionSpinner.isSelected = false

        identifyLanguageCheckbox = view.findViewById(R.id.checkboxIdentifyLanguage)
        languageOptionsTextView = view.findViewById(R.id.textViewLanguageOptions)
        identifyLanguageCheckbox.setOnCheckedChangeListener { languageOptionDialogBox, isChecked ->
            if (isChecked) {
                showLanguageOptionsAlertDialog(languageOptionDialogBox)
                languageSpinner.isEnabled = false
                piiIdentificationSpinner.isEnabled = false
                piiRedactionSpinner.isEnabled = false
                phiIdentificationCheckBox.isEnabled = false
                preferredLanguageSpinner.visibility = View.VISIBLE
                languageOptionsTextView.visibility = View.VISIBLE
                customLanguageModelCheckbox.isEnabled = false
                customLanguageModelEditText.isEnabled = false
                customLanguageModelEditText.visibility = View.GONE
            } else {
                preferredLanguageSpinner.visibility = View.GONE
                languageOptionsTextView.isEnabled = false
                languageSpinner.isEnabled = true
                piiIdentificationSpinner.isEnabled = true
                piiRedactionSpinner.isEnabled = true
                languageOptionsTextView.visibility = View.GONE
                customLanguageModelCheckbox.isEnabled = true
                customLanguageModelEditText.isEnabled = true
                customLanguageModelEditText.visibility = View.VISIBLE
            }
        }

        preferredLanguageSpinner = view.findViewById(R.id.spinnerPreferredLanguage)
        preferredLanguageAdapter = ArrayAdapter(context, android.R.layout.simple_spinner_item, preferredLanguageOptions)
        preferredLanguageAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        preferredLanguageSpinner.adapter = preferredLanguageAdapter
        preferredLanguageSpinner.isSelected = false

        partialResultsStabilizationSpinner = view.findViewById(R.id.spinnerPartialResultsStabilization)
        partialResultsStabilizationAdapter = ArrayAdapter(context, android.R.layout.simple_spinner_item, transcribePartialResultStabilizationOptions)
        partialResultsStabilizationAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        partialResultsStabilizationSpinner.adapter = partialResultsStabilizationAdapter
        partialResultsStabilizationSpinner.isSelected = false
        partialResultsStabilizationSpinner.setSelection(0, true)

        piiIdentificationSpinner = view.findViewById(R.id.spinnerPIIContentIdentification)
        piiIdentificationAdapter = ArrayAdapter(context, android.R.layout.simple_spinner_item, transcribeIdentificationOptions)
        piiIdentificationAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        piiIdentificationSpinner.adapter = piiIdentificationAdapter
        piiIdentificationSpinner.isSelected = false
        piiIdentificationSpinner.setSelection(0, true)
        piiIdentificationSpinner.onItemSelectedListener = onPIIContentIdentificationSelected

        piiRedactionSpinner = view.findViewById(R.id.spinnerPIIContentRedaction)
        piiRedactionAdapter = ArrayAdapter(context, android.R.layout.simple_spinner_item, transcribeRedactionOptions)
        piiRedactionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        piiRedactionSpinner.adapter = piiRedactionAdapter
        piiRedactionSpinner.isSelected = false
        piiRedactionSpinner.setSelection(0, true)
        piiRedactionSpinner.onItemSelectedListener = onPIIContentRedactionSelected

        phiIdentificationCheckBox = view.findViewById(R.id.checkboxPHIContentIdentification)
        phiIdentificationCheckBox.setOnCheckedChangeListener { _, isChecked ->
            if (isChecked) {
                piiIdentificationSpinner.setSelection(1, true)
            } else {
                piiIdentificationSpinner.setSelection(0, true)
            }
        }

        customLanguageModelEditText = view.findViewById(R.id.editTextCustomLanguageModel)

        customLanguageModelCheckbox = view.findViewById(R.id.checkboxCustomLanguageModel)
        // Show / Hide EditText field for custom language model when checkbox clicked.
        customLanguageModelCheckbox.setOnCheckedChangeListener { _, isChecked ->
            if (isChecked) {
                customLanguageModelEditText.visibility = View.VISIBLE
            } else {
                customLanguageModelEditText.visibility = View.GONE
            }
        }

        uiScope.launch {
            populateLanguages(transcribeLanguages, languages, languageAdapter)
            populateRegions(transcribeRegions, regions, regionAdapter)
            populateTranscriptionOptions(transcribePiiOptions, transcribeIdentificationOptions, piiIdentificationAdapter, "Identification")
            populateTranscriptionOptions(transcribePiiOptions, transcribeRedactionOptions, piiRedactionAdapter, "Redaction")
            populateLanguageOptions(languageOptions)

            var transcribeEngineSpinnerIndex = 0
            var languageSpinnerIndex = 0
            var regionSpinnerIndex = 0
            var partialResultsStabilizationSpinnerIndex = 0
            var piiContentIdentificationSpinnerIndex = 0
            var piiContentRedactionSpinnerIndex = 0
            var phiContentIdentificationEnabled = false
            var customLanguageModelName = resources.getString(R.string.custom_language_checkbox)
            var preferredLanguageSpinnerIndex = 0
            var identifyLanguageEnabled = false
            if (savedInstanceState != null) {
                transcribeEngineSpinnerIndex = savedInstanceState.getInt(TRANSCRIBE_ENGINE_SPINNER_INDEX_KEY, 0)
                languageSpinnerIndex = savedInstanceState.getInt(LANGUAGE_SPINNER_INDEX_KEY, 0)
                regionSpinnerIndex = savedInstanceState.getInt(REGION_SPINNER_INDEX_KEY, 0)
                partialResultsStabilizationSpinnerIndex = savedInstanceState.getInt(PARTIAL_RESULTS_STABILIZATION_INDEX_KEY, 0)
                piiContentIdentificationSpinnerIndex = savedInstanceState.getInt(PII_CONTENT_IDENTIFICATION_SPINNER_INDEX_KEY, 0)
                piiContentRedactionSpinnerIndex = savedInstanceState.getInt(PII_CONTENT_REDACTION_SPINNER_INDEX_KEY, 0)
                phiContentIdentificationEnabled = savedInstanceState.getBoolean(PHI_CONTENT_IDENTIFICATION_ENABLED_KEY, false)
                customLanguageModelName = savedInstanceState.getString(CUSTOM_LANGUAGE_MODEL_NAME_KEY, resources.getString(R.string.custom_language_checkbox))
                identifyLanguageEnabled = savedInstanceState.getBoolean(IDENTIFY_LANGUAGE_ENABLED_KEY, false)
                preferredLanguageSpinnerIndex = savedInstanceState.getInt(PREFERRED_LANGUAGE_INDEX_KEY, 0)
            }

            transcribeEngineSpinner.setSelection(transcribeEngineSpinnerIndex)
            languageSpinner.setSelection(languageSpinnerIndex)
            regionSpinner.setSelection(regionSpinnerIndex)
            partialResultsStabilizationSpinner.setSelection(partialResultsStabilizationSpinnerIndex)
            piiIdentificationSpinner.setSelection(piiContentIdentificationSpinnerIndex)
            piiRedactionSpinner.setSelection(piiContentRedactionSpinnerIndex)
            binding.checkboxPHIContentIdentification.isChecked = phiContentIdentificationEnabled
            binding.checkboxCustomLanguageModel.isChecked = customLanguageModelName != (resources.getString(R.string.custom_language_checkbox))
            binding.checkboxCustomLanguageModel.text = customLanguageModelName
            identifyLanguageCheckbox.isChecked = identifyLanguageEnabled
            preferredLanguageSpinner.setSelection(preferredLanguageSpinnerIndex)
        }

        return view
    }