Pārlūkot izejas kodu

启动器完成

cc12458 10 mēneši atpakaļ
vecāks
revīzija
122b244884

+ 18 - 7
app/src/main/java/com/hzliuzhi/applet/container/ui/LauncherScreen.kt

@@ -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) {

+ 0 - 1
app/src/pda/res/values/application.xml

@@ -2,5 +2,4 @@
 <resources>
   <string name="app_id">PDA</string>
   <string name="app_name">中药处方煎配朔源管理(开发版)</string>
-  <string name="app_screen">browser/kiosk?url=http://192.168.1.14:4173/pharmacy/pda/</string>
 </resources>

+ 3 - 1
library/device/scanner/src/main/java/com/hzliuzhi/applet/scanner/Scanner.kt

@@ -53,7 +53,7 @@ class Scanner private constructor(context: Context, private val impl: ScannerImp
 
               event.payload
                 ?.let { ScanParams.formJson(it) }
-                ?.let { impl.start(applicationContext, it) }
+                ?.let { start(it) }
                 ?.also { seconds ->
                   scanTimeout?.cancel()
                   scanTimeout = scope.launch {
@@ -81,6 +81,8 @@ class Scanner private constructor(context: Context, private val impl: ScannerImp
       .launchIn(scope)
   }
 
+  fun start(params: ScanParams = ScanParams()) = impl.start(applicationContext, params)
+
   companion object {
     @Volatile
     private var instance: Scanner? = null