diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dd98e72..b628522 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -79,8 +79,8 @@ jobs: - name: Start API Server & Upload env: COMMIT_MESSAGE: |+ - ${{ github.event.head_commit.message }}\n - [See commit detail here](${{ github.event.head_commit.url }}) +
${{ github.event.head_commit.message }}
+ See commit details here COMMIT_URL: ${{ github.event.head_commit.url }} run: | ESCAPED=`python3 -c 'import json,os,urllib.parse; msg = json.dumps(os.environ["COMMIT_MESSAGE"]); print(urllib.parse.quote(msg if len(msg) <= 1024 else json.dumps(os.environ["COMMIT_URL"])))'` @@ -91,6 +91,6 @@ jobs: mv ./$RELEASE_SIGNED_PWD/app-release.apk ./$RELEASE_SIGNED_PWD.apk && rm -rf ./$RELEASE_SIGNED_PWD ../binaries/telegram-bot-api --api-id=${{ secrets.TELEGRAM_API_APP_ID }} --api-hash=${{ secrets.TELEGRAM_API_HASH }} --local 2>&1 > /dev/null & export token=${{ secrets.TELEGRAM_BOT_KEY }} - curl -v "http://127.0.0.1:8081/bot$token/sendMediaGroup?chat_id=-1002216379163&media=%5B%7B%22type%22%3A%22document%22%2C%22media%22%3A%22attach%3A%2F%2FreleaseTest%22%7D%2C%7B%22type%22%3A%22document%22%2C%22media%22%3A%22attach%3A%2F%2FreleaseSigned%22%2C%22parse_mode%22%3A%22MarkdownV2%22%2C%22caption%22%3A${ESCAPED}%7D%5D" \ + curl -v "http://127.0.0.1:8081/bot$token/sendMediaGroup?chat_id=-1002216379163&media=%5B%7B%22type%22%3A%22document%22%2C%22media%22%3A%22attach%3A%2F%2FreleaseTest%22%7D%2C%7B%22type%22%3A%22document%22%2C%22media%22%3A%22attach%3A%2F%2FreleaseSigned%22%2C%22parse_mode%22%3A%22HTML%22%2C%22caption%22%3A${ESCAPED}%7D%5D" \ -F releaseTest="@$RELEASE_TEST_PWD.apk" \ -F releaseSigned="@$RELEASE_SIGNED_PWD.apk" diff --git a/app/src/main/java/com/bintianqi/owndroid/PkgSelector.kt b/app/src/main/java/com/bintianqi/owndroid/PkgSelector.kt index 052433f..9ff180b 100644 --- a/app/src/main/java/com/bintianqi/owndroid/PkgSelector.kt +++ b/app/src/main/java/com/bintianqi/owndroid/PkgSelector.kt @@ -42,6 +42,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.painterResource @@ -76,6 +78,7 @@ fun PackageSelector(navCtrl: NavHostController, pkgName: MutableState) { var hideProgress by remember { mutableStateOf(true) } var system by remember { mutableStateOf(false) } var search by remember { mutableStateOf("") } + var searchMode by remember { mutableStateOf(false) } val scrollState = rememberLazyListState() val focusMgr = LocalFocusManager.current val co = rememberCoroutineScope() @@ -99,49 +102,65 @@ fun PackageSelector(navCtrl: NavHostController, pkgName: MutableState) { topBar = { TopAppBar( actions = { - Icon( - painter = painterResource(R.drawable.filter_alt_fill0), - contentDescription = "filter", - modifier = Modifier - .padding(horizontal = 4.dp) - .clip(RoundedCornerShape(50)) - .clickable { - system = !system - Toast.makeText(context, if(system) R.string.show_system_app else R.string.show_user_app, Toast.LENGTH_SHORT).show() - } - .padding(5.dp) - ) - Icon( - painter = painterResource(R.drawable.refresh_fill0), - contentDescription = "refresh", - modifier = Modifier - .padding(horizontal = 4.dp) - .clip(RoundedCornerShape(50)) - .clickable { - co.launch { getPkgList() } - } - .padding(5.dp) - ) + if(!searchMode) { + Icon( + painter = painterResource(R.drawable.search_fill0), + contentDescription = "search", + modifier = Modifier + .padding(horizontal = 4.dp) + .clip(RoundedCornerShape(50)) + .clickable { searchMode = true } + .padding(5.dp) + ) + Icon( + painter = painterResource(R.drawable.filter_alt_fill0), + contentDescription = "filter", + modifier = Modifier + .padding(horizontal = 4.dp) + .clip(RoundedCornerShape(50)) + .clickable { + system = !system + Toast.makeText(context, if(system) R.string.show_system_app else R.string.show_user_app, Toast.LENGTH_SHORT).show() + } + .padding(5.dp) + ) + Icon( + painter = painterResource(R.drawable.refresh_fill0), + contentDescription = "refresh", + modifier = Modifier + .padding(horizontal = 4.dp) + .clip(RoundedCornerShape(50)) + .clickable { co.launch { getPkgList() } } + .padding(5.dp) + ) + } }, title = { - OutlinedTextField( - value = search, - onValueChange = { search = it }, - keyboardOptions = KeyboardOptions(imeAction = ImeAction.Search), - keyboardActions = KeyboardActions { focusMgr.clearFocus() }, - placeholder = { Text(stringResource(R.string.search)) }, - trailingIcon = { - Icon( - painter = painterResource(R.drawable.close_fill0), - contentDescription = "clear search", - modifier = Modifier.clickable { - search = "" - focusMgr.clearFocus() - } - ) - }, - modifier = Modifier.padding(vertical = 8.dp) - ) + if(searchMode) { + val fr = FocusRequester() + LaunchedEffect(Unit) { fr.requestFocus() } + OutlinedTextField( + value = search, + onValueChange = { search = it }, + keyboardOptions = KeyboardOptions(imeAction = ImeAction.Search), + keyboardActions = KeyboardActions { focusMgr.clearFocus() }, + placeholder = { Text(stringResource(R.string.search)) }, + trailingIcon = { + Icon( + painter = painterResource(R.drawable.close_fill0), + contentDescription = "clear search", + modifier = Modifier.clickable { + focusMgr.clearFocus() + search = "" + searchMode = false + } + ) + }, + modifier = Modifier.fillMaxWidth().focusRequester(fr) + ) + } else { + Text(stringResource(R.string.pkg_selector)) + } }, navigationIcon = { NavIcon{ navCtrl.navigateUp() } }, colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.background) @@ -186,11 +205,16 @@ fun PackageSelector(navCtrl: NavHostController, pkgName: MutableState) { @Composable private fun PackageItem(pkg: PkgInfo, navCtrl: NavHostController, pkgName: MutableState) { + val focusMgr = LocalFocusManager.current Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier .fillMaxWidth() - .clickable{ pkgName.value = pkg.pkgName; navCtrl.navigateUp() } + .clickable{ + pkgName.value = pkg.pkgName + focusMgr.clearFocus() + navCtrl.navigateUp() + } .padding(vertical = 6.dp) ) { Spacer(Modifier.padding(start = 15.dp)) diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt index 445b9bf..4f4bdcc 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt @@ -142,7 +142,10 @@ fun ApplicationManage(navCtrl:NavHostController, pkgName: MutableState, Icon(painter = painterResource(R.drawable.checklist_fill0), contentDescription = null, modifier = Modifier .clip(RoundedCornerShape(50)) - .clickable(onClick = {navCtrl.navigate("PackageSelector")}) + .clickable(onClick = { + focusMgr.clearFocus() + navCtrl.navigate("PackageSelector") + }) .padding(3.dp)) }, singleLine = true diff --git a/app/src/main/res/drawable/search_fill0.xml b/app/src/main/res/drawable/search_fill0.xml new file mode 100644 index 0000000..0812e9f --- /dev/null +++ b/app/src/main/res/drawable/search_fill0.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index c68a681..b6a415e 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -298,7 +298,6 @@ Yükleniyor Kullanıcı uygulamalarını göster Sistem uygulamalarını göster - İzin seçici Askıya al Gizle Mevcut olmayan uygulamalar gizlidir @@ -512,7 +511,6 @@ Confirm password Başlangıçta kimlik bilgilerini sorma Giriş gerektir - En az 4 haneli şifre gerektir Jeton ile şifreyi sıfırla Gereken şifre karmaşıklığı Yeni şifre ayarlanmasını iste @@ -594,7 +592,6 @@ Nearby Wi-Fi devices Telefonla arama yap Answer phone calls - Read phone numbers Telefon durumunu oku Use SIP UWB ranging diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 8f32ba1..4e691d9 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -293,7 +293,6 @@ 加载中 显示用户应用 显示系统应用 - 权限选择器 挂起 隐藏 如果隐藏,有可能是没安装 @@ -504,7 +503,6 @@ 确认密码 启动(boot)时不要求密码 不允许其他设备管理员重置密码直至用户输入一次密码 - 需要4位密码 使用令牌重置密码 密码复杂度要求 要求设置新密码 @@ -586,7 +584,6 @@ 附近的Wi-Fi设备 打电话 接电话 - 读取手机号码 读取手机状态 使用SIP 超宽频 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f063c9b..6ea5950 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -306,7 +306,6 @@ Loading Show user apps Show system apps - Permission picker Suspend Hide Non-existent apps is hidden @@ -518,7 +517,6 @@ Confirm password Do not ask credentials on boot Require entry - Require at least 4 digit password Reset password with token Required password complexity Request to set a new password @@ -600,7 +598,6 @@ Nearby Wi-Fi devices Call phone Answer phone calls - Read phone numbers Read phone state Use SIP UWB ranging