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
}