diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 47e6f6b..74dc25d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -3,8 +3,8 @@ import java.util.Properties import org.gradle.api.provider.Property import org.jetbrains.kotlin.gradle.dsl.JvmTarget -val appVersionCode = 140 -val appVersionName = "3.4.4" +val appVersionCode = 141 +val appVersionName = "3.4.5" plugins { alias(libs.plugins.android.application) diff --git a/app/src/main/java/com/example/xtreamplayer/MainActivityUi.kt b/app/src/main/java/com/example/xtreamplayer/MainActivityUi.kt index be20ed4..390a24f 100644 --- a/app/src/main/java/com/example/xtreamplayer/MainActivityUi.kt +++ b/app/src/main/java/com/example/xtreamplayer/MainActivityUi.kt @@ -2041,11 +2041,8 @@ fun RootScreen( onSave = { apiKey, userAgent -> settingsViewModel.setOpenSubtitlesApiKey(apiKey) settingsViewModel.setOpenSubtitlesUserAgent(userAgent) - Toast.makeText( - context, - "OpenSubtitles settings saved", - Toast.LENGTH_SHORT - ).show() + val message = if (apiKey.isBlank()) "API key cleared" else "OpenSubtitles settings saved" + Toast.makeText(context, message, Toast.LENGTH_SHORT).show() showApiKeyDialog = false }, onDismiss = { showApiKeyDialog = false } diff --git a/app/src/main/java/com/example/xtreamplayer/ui/SubtitleDialog.kt b/app/src/main/java/com/example/xtreamplayer/ui/SubtitleDialog.kt index 7572632..73f3428 100644 --- a/app/src/main/java/com/example/xtreamplayer/ui/SubtitleDialog.kt +++ b/app/src/main/java/com/example/xtreamplayer/ui/SubtitleDialog.kt @@ -678,6 +678,7 @@ fun ApiKeyInputDialog( val context = LocalContext.current val inputFocusRequester = remember { FocusRequester() } val userAgentFocusRequester = remember { FocusRequester() } + val clearFocusRequester = remember { FocusRequester() } val saveFocusRequester = remember { FocusRequester() } LaunchedEffect(Unit) { @@ -728,13 +729,22 @@ fun ApiKeyInputDialog( fontFamily = AppTheme.fontFamily ) - Spacer(modifier = Modifier.height(6.dp)) + Spacer(modifier = Modifier.height(4.dp)) val interactionSource = remember { MutableInteractionSource() } val isFocused by interactionSource.collectIsFocusedAsState() val shape = RoundedCornerShape(8.dp) val borderColor = if (isFocused) FocusBorderColor else SecondaryBorderColor + Text( + text = "32-character token from opensubtitles.com", + color = MutedTextColor, + fontSize = 11.sp, + fontFamily = AppTheme.fontFamily + ) + + Spacer(modifier = Modifier.height(6.dp)) + BasicTextField( value = apiKey, onValueChange = { apiKey = it }, @@ -788,6 +798,15 @@ fun ApiKeyInputDialog( fontFamily = AppTheme.fontFamily ) + Spacer(modifier = Modifier.height(4.dp)) + + Text( + text = "Any name identifying your app, e.g. XtreamPlayer", + color = MutedTextColor, + fontSize = 11.sp, + fontFamily = AppTheme.fontFamily + ) + Spacer(modifier = Modifier.height(6.dp)) val userAgentInteractionSource = remember { MutableInteractionSource() } @@ -867,10 +886,32 @@ fun ApiKeyInputDialog( FocusableButton( onClick = { - if (apiKey.isBlank() || userAgent.isBlank()) { + apiKey = "" + userAgent = "" + }, + colors = ButtonDefaults.buttonColors( + containerColor = SecondaryBorderColor, + contentColor = AppTheme.colors.textPrimary + ), + modifier = Modifier.focusRequester(clearFocusRequester) + ) { + Text( + text = "Clear", + fontFamily = AppTheme.fontFamily, + fontWeight = FontWeight.SemiBold + ) + } + + Spacer(modifier = Modifier.width(12.dp)) + + FocusableButton( + onClick = { + val keyBlank = apiKey.isBlank() + val agentBlank = userAgent.isBlank() + if (keyBlank != agentBlank) { Toast.makeText( context, - "Enter API key and user agent", + "Enter both API key and user agent", Toast.LENGTH_SHORT ).show() return@FocusableButton