From 87764cc15bca2b01f950b00332718303b4d362c1 Mon Sep 17 00:00:00 2001 From: Matt Hills Date: Sat, 27 Dec 2025 23:05:25 -0500 Subject: [PATCH] Add ability to clear selected file in upload tab - Add clearSelectedFile() function to MainViewModel - Auto-clear selected file after successful upload - Add remove button (X) to selected file card in GeneralUploadTab --- .../ui/screens/tabs/GeneralUploadTab.kt | 28 +++++++++++++++---- .../viewmodel/MainViewModel.kt | 14 +++++++++- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/mattintech/simplelogupload/ui/screens/tabs/GeneralUploadTab.kt b/app/src/main/java/com/mattintech/simplelogupload/ui/screens/tabs/GeneralUploadTab.kt index 84d1635..adba3d7 100644 --- a/app/src/main/java/com/mattintech/simplelogupload/ui/screens/tabs/GeneralUploadTab.kt +++ b/app/src/main/java/com/mattintech/simplelogupload/ui/screens/tabs/GeneralUploadTab.kt @@ -11,6 +11,7 @@ import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.Upload import androidx.compose.material3.* import androidx.compose.runtime.* @@ -194,12 +195,27 @@ fun GeneralUploadTab( modifier = Modifier.fillMaxWidth() ) { Column(modifier = Modifier.padding(16.dp)) { - Text( - text = "Selected File", - style = MaterialTheme.typography.titleSmall, - color = MaterialTheme.colorScheme.primary - ) - Spacer(modifier = Modifier.height(4.dp)) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Selected File", + style = MaterialTheme.typography.titleSmall, + color = MaterialTheme.colorScheme.primary + ) + IconButton( + onClick = { viewModel.clearSelectedFile() }, + enabled = !uiState.isLoading + ) { + Icon( + Icons.Default.Close, + contentDescription = "Remove selected file", + tint = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + } Text( text = fileName, style = MaterialTheme.typography.bodyMedium diff --git a/app/src/main/java/com/mattintech/simplelogupload/viewmodel/MainViewModel.kt b/app/src/main/java/com/mattintech/simplelogupload/viewmodel/MainViewModel.kt index 736374f..9beb782 100644 --- a/app/src/main/java/com/mattintech/simplelogupload/viewmodel/MainViewModel.kt +++ b/app/src/main/java/com/mattintech/simplelogupload/viewmodel/MainViewModel.kt @@ -139,7 +139,9 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { showUploadResultDialog = true, uploadProgress = 0, bytesUploaded = 0, - totalBytes = 0 + totalBytes = 0, + selectedFile = null, + selectedFileName = null ) } AppConstants.ACTION_UPLOAD_ERROR -> { @@ -328,6 +330,16 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { ) } + /** + * Clear the selected file + */ + fun clearSelectedFile() { + _uiState.value = _uiState.value.copy( + selectedFile = null, + selectedFileName = null + ) + } + /** * Show upload parameters dialog */