Skip to content

Commit 0c8f4db

Browse files
committed
fix translation flow
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent 0fb7d4e commit 0c8f4db

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

app/src/main/java/com/nextcloud/client/assistant/translate/TranslationScreen.kt

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api
2424
import androidx.compose.material3.FloatingActionButton
2525
import androidx.compose.material3.HorizontalDivider
2626
import androidx.compose.material3.Icon
27+
import androidx.compose.material3.IconButton
2728
import androidx.compose.material3.MaterialTheme
2829
import androidx.compose.material3.Scaffold
2930
import androidx.compose.material3.Text
@@ -38,16 +39,19 @@ import androidx.compose.runtime.setValue
3839
import androidx.compose.ui.Alignment
3940
import androidx.compose.ui.Modifier
4041
import androidx.compose.ui.graphics.Color
42+
import androidx.compose.ui.platform.LocalContext
4143
import androidx.compose.ui.res.painterResource
4244
import androidx.compose.ui.res.stringResource
4345
import androidx.compose.ui.unit.Dp
4446
import androidx.compose.ui.unit.dp
4547
import com.nextcloud.client.assistant.AssistantViewModel
4648
import com.nextcloud.client.assistant.model.AssistantScreenState
49+
import com.nextcloud.utils.extensions.getActivity
4750
import com.owncloud.android.R
4851
import com.owncloud.android.lib.resources.assistant.v2.model.TaskTypeData
4952
import com.owncloud.android.lib.resources.assistant.v2.model.TranslationLanguage
5053
import com.owncloud.android.lib.resources.assistant.v2.model.toTranslationLanguages
54+
import com.owncloud.android.utils.ClipboardUtil
5155

5256
@Suppress("LongMethod")
5357
@OptIn(ExperimentalMaterial3Api::class)
@@ -59,12 +63,13 @@ fun TranslationScreen(selectedTaskType: TaskTypeData?, viewModel: AssistantViewM
5963
mutableStateOf(
6064
TranslationSideState(
6165
text = textToTranslate,
62-
language = languages?.originLanguages?.firstOrNull()
66+
language = languages?.originLanguages?.firstOrNull(),
67+
isTarget = false
6368
)
6469
)
6570
}
6671
var targetState by remember {
67-
mutableStateOf(TranslationSideState(language = languages?.targetLanguages?.firstOrNull()))
72+
mutableStateOf(TranslationSideState(language = languages?.targetLanguages?.firstOrNull(), isTarget = true))
6873
}
6974

7075
BackHandler {
@@ -132,6 +137,7 @@ fun TranslationScreen(selectedTaskType: TaskTypeData?, viewModel: AssistantViewM
132137
}
133138
}
134139

140+
@Suppress("LongMethod")
135141
@Composable
136142
private fun TranslationSection(
137143
labelId: Int,
@@ -141,6 +147,8 @@ private fun TranslationSection(
141147
maxDp: Dp,
142148
onStateChange: (TranslationSideState) -> Unit
143149
) {
150+
val activity = LocalContext.current.getActivity()
151+
144152
Row(
145153
modifier = Modifier
146154
.padding(16.dp)
@@ -179,11 +187,22 @@ private fun TranslationSection(
179187
)
180188
}
181189
}
190+
191+
if (state.isTarget && state.text.isNotBlank()) {
192+
Spacer(modifier = Modifier.weight(1f))
193+
194+
IconButton(onClick = {
195+
activity?.let { ClipboardUtil.copyToClipboard(it, state.text, true) }
196+
}) {
197+
Icon(painter = painterResource(R.drawable.ic_content_copy), contentDescription = "copy button")
198+
}
199+
}
182200
}
183201

184202
TextField(
185203
value = state.text,
186204
onValueChange = { onStateChange(state.copy(text = it)) },
205+
readOnly = state.isTarget,
187206
modifier = Modifier
188207
.fillMaxWidth()
189208
.heightIn(min = 120.dp, max = maxDp),

app/src/main/java/com/nextcloud/client/assistant/translate/TranslationSideState.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ import com.owncloud.android.lib.resources.assistant.v2.model.TranslationLanguage
1212
data class TranslationSideState(
1313
val text: String = "",
1414
val language: TranslationLanguage? = null,
15-
val isExpanded: Boolean = false
15+
val isExpanded: Boolean = false,
16+
val isTarget: Boolean
1617
)

0 commit comments

Comments
 (0)