Skip to content

Commit 50375f3

Browse files
committed
validation added and window icon change it
1 parent 91ddb33 commit 50375f3

File tree

4 files changed

+60
-32
lines changed

4 files changed

+60
-32
lines changed

src/main/kotlin/App.kt

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,35 +26,16 @@ import kotlinx.coroutines.Dispatchers
2626
import kotlinx.coroutines.delay
2727
import kotlinx.coroutines.launch
2828
import utils.WindowState
29+
import utils.isValidXml
2930
import utils.languageList
3031

3132
@Composable
3233
@Preview
3334
fun App() {
3435

3536
var isWindowShow by remember { mutableStateOf(WindowState.NO_STATE) }
36-
var stringState by remember {
37-
mutableStateOf(
38-
"""
39-
<resources>
40-
<string name="app_name">String Translator App</string>
41-
<string name="hello">Hello, I am Meet</string>
42-
<string name="how_are_you">How are You?</string>
43-
<string name="video_directory" translatable="false">Video folder</string>
44-
<string name="no_internet">Please check your network connection</string>
45-
<string name="api_failed">Something not right, Please try again</string>
46-
<string name="permission_error">This App will need Permission on your device.</string>
47-
<string name="question_favorites">What are your favorites?</string>
48-
<string name="answer_grateful">I'm grateful for your help</string>
49-
<string name="loading_ad" translatable="false">loading_ad</string>
50-
<string name="app_id" translatable="false">ca-app-pub-3940256099942544~3347511713</string>
51-
<string name="app_open_ads" translatable="false">ca-app-pub-3940256099942544/3419835294</string>
52-
<string name="request_assistance">Can you assist me?</string>
53-
</resources>
54-
""".trimIndent()
55-
)
56-
}
57-
var folderState by remember { mutableStateOf("String Translator App") }
37+
var stringState by remember { mutableStateOf("") }
38+
var folderState by remember { mutableStateOf("") }
5839
var countryListState by remember { mutableStateOf(languageList) }
5940
var isShowToast by remember { mutableStateOf(false) }
6041
var toastMessage by remember { mutableStateOf("") }
@@ -95,9 +76,38 @@ fun App() {
9576
CustomButton(
9677
modifier = Modifier.weight(1f).height(50.dp),
9778
"Translate",
98-
isEnable = stringState.isNotEmpty() && folderState.isNotEmpty() && countryListState.any { it.isChecked },
9979
onClick = {
100-
isWindowShow = WindowState.CONVERT_TRANSLATE
80+
if (stringState.isEmpty()){
81+
isShowToast = true
82+
toastMessage = "Error: Please enter the source strings"
83+
CoroutineScope(Dispatchers.IO).launch {
84+
delay(3000)
85+
isShowToast = false
86+
}
87+
}else if (!isValidXml(stringState)){
88+
isShowToast = true
89+
toastMessage ="Error: Please enter the source strings in XML format into the provided text field."
90+
CoroutineScope(Dispatchers.IO).launch {
91+
delay(3000)
92+
isShowToast = false
93+
}
94+
} else if (folderState.isEmpty()){
95+
isShowToast = true
96+
toastMessage ="Error: Enter the folder name where you want to store the translated strings."
97+
CoroutineScope(Dispatchers.IO).launch {
98+
delay(3000)
99+
isShowToast = false
100+
}
101+
} else if (!countryListState.any { it.isChecked }){
102+
isShowToast = true
103+
toastMessage = "Error: Please select at least one target language before translating."
104+
CoroutineScope(Dispatchers.IO).launch {
105+
delay(3000)
106+
isShowToast = false
107+
}
108+
}else {
109+
isWindowShow = WindowState.CONVERT_TRANSLATE
110+
}
101111
}
102112
)
103113
}

src/main/kotlin/Main.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import androidx.compose.ui.Alignment
1919
import androidx.compose.ui.Modifier
2020
import androidx.compose.ui.draw.clip
2121
import androidx.compose.ui.graphics.Color
22+
import androidx.compose.ui.res.painterResource
2223
import androidx.compose.ui.text.font.FontWeight
2324
import androidx.compose.ui.text.style.TextAlign
2425
import androidx.compose.ui.unit.dp
@@ -40,7 +41,8 @@ fun main() = application {
4041
title = "String Translator Desktop App",
4142
state = windowState,
4243
resizable = false,
43-
undecorated = true
44+
undecorated = true,
45+
icon = painterResource("translate.svg")
4446
) {
4547
Column(
4648
Modifier.fillMaxSize()

src/main/kotlin/utils/performStringConvert.kt

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,27 @@ fun readAllStrings(xmlString: String): ArrayList<StringModel> {
1515
val stringElements = document.getElementsByTagName("string")
1616
for (i in 0 until stringElements.length) {
1717
val element = stringElements.item(i) as Element
18-
val name = element.getAttribute("name")
19-
val translatable = element.getAttribute("translatable")
20-
val textContent = element.textContent
21-
val isTranslatable = !translatable.equals("false", true)
22-
result.add(StringModel(name, isTranslatable, textContent))
18+
if (element.hasAttribute("name")) {
19+
val name = element.getAttribute("name")
20+
val translatable = element.getAttribute("translatable")
21+
val textContent = element.textContent
22+
val isTranslatable = !translatable.equals("false", true)
23+
result.add(StringModel(name, isTranslatable, textContent))
24+
}
2325

2426
}
2527

2628
return result
2729
}
2830

2931

30-
fun createOutputMainFolder(folderName:String) {
32+
fun createOutputMainFolder(folderName: String) {
3133
File("output").mkdir()
3234
File("./output/$folderName").deleteRecursively()
3335
File("./output/$folderName").mkdir()
3436
}
3537

36-
fun createStringFolder(folderName:String, languageCode: String): File {
38+
fun createStringFolder(folderName: String, languageCode: String): File {
3739
File("./output/$folderName/values-$languageCode").mkdir()
3840
val file = File("./output/$folderName/values-$languageCode/strings.xml")
3941
if (!file.exists()) file.createNewFile()
@@ -60,4 +62,15 @@ fun File.startResourcesWrite() {
6062

6163
fun File.endResourcesWrite() {
6264
appendText("\n</resources>")
65+
}
66+
67+
fun isValidXml(xmlString: String): Boolean {
68+
return try {
69+
val factory = DocumentBuilderFactory.newInstance()
70+
val builder = factory.newDocumentBuilder()
71+
builder.parse(xmlString.byteInputStream())
72+
true
73+
} catch (e: Exception) {
74+
false
75+
}
6376
}

src/main/resources/translate.svg

Lines changed: 3 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)