细化+上游代理+1.1

This commit is contained in:
2026-10-25 19:01:45 +08:00
parent 5ec7815a13
commit 070020a296
21 changed files with 1429 additions and 158 deletions
@@ -0,0 +1,135 @@
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("取消") }
}
)
}
}