package net.bluemangoo.indpjsk.ui import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.AlertDialog import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import net.bluemangoo.indpjsk.R import net.bluemangoo.indpjsk.data.CaptureFiles import java.io.File @OptIn(ExperimentalMaterial3Api::class) @Composable fun CapturedFilesScreen( onOpenFile: (File) -> Unit, onBack: () -> Unit, ) { val context = LocalContext.current var version by remember { mutableIntStateOf(0) } val files = remember(version) { CaptureFiles.list(context) } var confirmClear by remember { mutableStateOf(false) } Scaffold( topBar = { TopAppBar( title = { Text("获取到的文件") }, navigationIcon = { IconButton(onClick = onBack) { Icon( painter = painterResource(R.drawable.arrow_back_24px), contentDescription = "返回" ) } }, actions = { IconButton( onClick = { confirmClear = true }, enabled = files.isNotEmpty() ) { Icon( painter = painterResource(R.drawable.delete_24px), contentDescription = "清空" ) } } ) } ) { padding -> if (files.isEmpty()) { Box( modifier = Modifier .padding(padding) .fillMaxSize(), contentAlignment = Alignment.Center ) { Text( "还没有获取到文件", color = MaterialTheme.colorScheme.onSurfaceVariant ) } } else { LazyColumn( modifier = Modifier .padding(padding) .fillMaxSize() ) { items(files, key = { it.absolutePath }) { file -> Row( modifier = Modifier .fillMaxWidth() .clickable { onOpenFile(file) } .padding(horizontal = 16.dp, vertical = 14.dp), verticalAlignment = Alignment.CenterVertically ) { Icon( painter = painterResource(R.drawable.file_open_24px), contentDescription = null ) Spacer(modifier = Modifier.width(12.dp)) Text( text = file.name, style = MaterialTheme.typography.bodyMedium, maxLines = 1, overflow = TextOverflow.Ellipsis ) } } } } } if (confirmClear) { AlertDialog( onDismissRequest = { confirmClear = false }, title = { Text("清空文件") }, text = { Text("删除全部已获取的文件?") }, confirmButton = { TextButton(onClick = { CaptureFiles.clear(context) version++ confirmClear = false }) { Text("删除") } }, dismissButton = { TextButton(onClick = { confirmClear = false }) { Text("取消") } } ) } }