@@ -27,8 +27,6 @@ import androidx.compose.ui.unit.dp
2727import androidx.core.content.ContextCompat
2828import androidx.lifecycle.viewmodel.compose.viewModel
2929import com.critt.data.ApiResult
30- import com.critt.domain.LanguageData
31- import com.critt.domain.Speaker
3230import com.critt.interp.ui.components.DropdownSelector
3331import com.critt.ui_common.theme.InterpTheme
3432import dagger.hilt.android.AndroidEntryPoint
@@ -48,39 +46,32 @@ class MainActivity : ComponentActivity() {
4846 @Composable
4947 fun TranslationGroup (
5048 translationText : String = "",
51- speaker : Speaker ,
52- langSubject : LanguageData ,
53- langObject : LanguageData ,
49+ textFromLanguage : String ,
50+ textToLanguage : String ,
5451 interactionSource : MutableInteractionSource ? = null
5552 ) {
5653 InterpTheme {
5754 Column (modifier = Modifier .padding(16 .dp)) {
58- LanguageDisplay (speaker, langSubject, langObject )
55+ LanguageDisplay (textFromLanguage, textToLanguage )
5956 Spacer (modifier = Modifier .height(12 .dp))
6057 OutputCard (translationText, interactionSource)
6158 }
6259 }
6360 }
6461
6562 @Composable
66- fun LanguageDisplay (speaker : Speaker , langSubject : LanguageData , langObject : LanguageData ) {
63+ fun LanguageDisplay (textFromLanguage : String , textToLanguage : String ) {
6764 InterpTheme {
6865 Row {
6966 Text (
70- when (speaker) {
71- Speaker .SUBJECT -> langObject.name
72- Speaker .OBJECT -> langSubject.name
73- },
67+ text = textFromLanguage,
7468 color = MaterialTheme .colorScheme.onBackground
7569 )
7670 Spacer (modifier = Modifier .width(8 .dp))
7771 Text (" ⇌" , color = MaterialTheme .colorScheme.onBackground)
7872 Spacer (modifier = Modifier .width(8 .dp))
7973 Text (
80- when (speaker) {
81- Speaker .SUBJECT -> langSubject.name
82- Speaker .OBJECT -> langObject.name
83- },
74+ text = textToLanguage,
8475 color = MaterialTheme .colorScheme.onBackground
8576 )
8677 }
@@ -141,22 +132,28 @@ class MainActivity : ComponentActivity() {
141132 val streamingState by viewModel.streamingState.collectAsState()
142133
143134 /* * Local state -> LaunchedEffect -> ViewModel StateFlow */
144- // Language selector for Subject speaker
135+ // Language selector for Subject Speaker (the user)
145136 var uiSelectedLangSubject by remember { mutableStateOf(langSubject) }
146137 LaunchedEffect (uiSelectedLangSubject) {
147138 viewModel.selectLangSubject(uiSelectedLangSubject)
148139 }
149- // Language selector for Object speaker
140+
141+ // Language selector for Object Speaker (to whom the user is talking)
150142 var uiSelectedLangObject by remember { mutableStateOf(langObject) }
151143 LaunchedEffect (uiSelectedLangObject) {
152144 viewModel.selectLangObject(uiSelectedLangObject)
153145 }
154- // Interaction source (pressing down on the lower OutputCard) for current Speaker
146+
147+ // Interaction source applied to the lower OutputCard
148+ // Allows the OutputCard facing the user to be used as an "I'm talking, now they are talking" toggle
149+ // The user holds it down while talking
150+ // This is how we know which language to translate the audio data into
155151 val interactionSource = remember { MutableInteractionSource () }
156152 val isPressed by interactionSource.collectIsPressedAsState()
157153 LaunchedEffect (isPressed) {
158154 viewModel.updateSpeaker(subjectSpeaking = isPressed)
159155 }
156+
160157 // Streaming state toggle (FAB)
161158 var toggleSideEffect by remember { mutableStateOf< (() -> Unit )? > (null ) }
162159 LaunchedEffect (toggleSideEffect, hasRecordingPermission) {
@@ -180,18 +177,16 @@ class MainActivity : ComponentActivity() {
180177 .rotate(180F )
181178 ) {
182179 TranslationGroup (
183- translationText = translationObject,
184- speaker = Speaker .OBJECT ,
185- langSubject = langSubject,
186- langObject = langObject,
180+ translationText = translationSubject,
181+ textFromLanguage = langSubject.name,
182+ textToLanguage = langObject.name,
187183 )
188184 }
189185 Box (modifier = Modifier .weight(.40F )) {
190186 TranslationGroup (
191- translationText = translationSubject,
192- speaker = Speaker .SUBJECT ,
193- langSubject = langSubject,
194- langObject = langObject,
187+ translationText = translationObject,
188+ textFromLanguage = langObject.name,
189+ textToLanguage = langSubject.name,
195190 interactionSource = interactionSource
196191 )
197192 }
0 commit comments