|
|
@@ -30,6 +30,7 @@ import androidx.compose.material3.Surface
|
|
|
import androidx.compose.material3.Switch
|
|
|
import androidx.compose.material3.Text
|
|
|
import androidx.compose.runtime.Composable
|
|
|
+import androidx.compose.runtime.DisposableEffect
|
|
|
import androidx.compose.runtime.getValue
|
|
|
import androidx.compose.runtime.mutableStateOf
|
|
|
import androidx.compose.runtime.remember
|
|
|
@@ -44,17 +45,19 @@ import androidx.compose.ui.text.input.KeyboardType
|
|
|
import androidx.compose.ui.text.style.TextDecoration
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
import androidx.core.net.toUri
|
|
|
+import androidx.lifecycle.compose.LocalLifecycleOwner
|
|
|
import com.hzliuzhi.applet.core.store.SettingStore
|
|
|
+import com.hzliuzhi.applet.scanner.ScanResult
|
|
|
+import com.hzliuzhi.applet.scanner.Scanner
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
fun LauncherScreen(
|
|
|
modifier: Modifier = Modifier,
|
|
|
start: (String) -> String?,
|
|
|
- scan: () -> Unit = {},
|
|
|
) {
|
|
|
val context = LocalContext.current
|
|
|
- var text by remember { mutableStateOf("https://www.bing.com/") }
|
|
|
+ var text by remember { mutableStateOf("") }
|
|
|
var storeEnabled by remember { mutableStateOf(true) }
|
|
|
|
|
|
Column(
|
|
|
@@ -71,7 +74,6 @@ fun LauncherScreen(
|
|
|
SettingStore.getInstance(context).screen = if (storeEnabled) it else null
|
|
|
}
|
|
|
},
|
|
|
- onScan = scan
|
|
|
)
|
|
|
Spacer(modifier = Modifier.height(24.dp))
|
|
|
StorageCard(
|
|
|
@@ -86,10 +88,19 @@ fun LauncherInputField(
|
|
|
value: String,
|
|
|
onValueChange: (String) -> Unit,
|
|
|
onDone: () -> Unit,
|
|
|
- onScan: () -> Unit,
|
|
|
modifier: Modifier = Modifier,
|
|
|
) {
|
|
|
val context = LocalContext.current
|
|
|
+
|
|
|
+ val scanner = Scanner.getInstance(context)
|
|
|
+ val owner = LocalLifecycleOwner.current
|
|
|
+
|
|
|
+ DisposableEffect(owner, scanner) {
|
|
|
+ val observer: (ScanResult?) -> Unit = { result -> result?.code?.also { onValueChange(it) } }
|
|
|
+ scanner.observe(owner, observer)
|
|
|
+ onDispose { scanner.removeObserver(observer) }
|
|
|
+ }
|
|
|
+
|
|
|
val isUrl = remember(value) { Patterns.WEB_URL.matcher(value).matches() }
|
|
|
|
|
|
val keyboardController = LocalSoftwareKeyboardController.current
|
|
|
@@ -120,7 +131,7 @@ fun LauncherInputField(
|
|
|
imageVector = Icons.Filled.QrCode,
|
|
|
contentDescription = "扫码",
|
|
|
modifier = Modifier.clickable {
|
|
|
- onScan()
|
|
|
+ scanner.start()
|
|
|
keyboardController?.hide()
|
|
|
}
|
|
|
)
|
|
|
@@ -197,7 +208,7 @@ fun StorageCard(
|
|
|
}
|
|
|
Spacer(modifier = Modifier.height(12.dp))
|
|
|
Text(
|
|
|
- text = "清除缓存步骤:",
|
|
|
+ text = "清除数据:",
|
|
|
style = MaterialTheme.typography.bodyMedium,
|
|
|
color = MaterialTheme.colorScheme.primary
|
|
|
)
|
|
|
@@ -208,7 +219,7 @@ fun StorageCard(
|
|
|
"找到应用管理",
|
|
|
"选择$appName",
|
|
|
"进入存储与缓存",
|
|
|
- "点击清除缓存"
|
|
|
+ "点击清除全部数据(存储空间)"
|
|
|
)
|
|
|
steps.forEachIndexed { idx, step ->
|
|
|
Row(verticalAlignment = Alignment.CenterVertically) {
|