Skip to content

Commit f5c38d1

Browse files
committed
Upload file
1 parent 4eb0b67 commit f5c38d1

2 files changed

Lines changed: 33 additions & 20 deletions

File tree

common/src/main/java/com/omarea/common/ui/DialogAppChooser.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ class DialogAppChooser(
115115

116116
fun showLoading(show: Boolean) {
117117
loadingView?.visibility = if (show) View.VISIBLE else View.GONE
118+
view?.findViewById<CompoundButton?>(R.id.select_all)?.isEnabled = !show
118119
}
119120

120121
fun notifyDataChanged() {

krscript/src/main/java/com/omarea/krscript/ui/ParamsAppChooserRender.kt

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class ParamsAppChooserRender(
5858
// OPEN DIALOG
5959
// =======================
6060
private fun openAppChooser() {
61-
// 🔥 preload app đã có value
61+
// 🔥 preload app đã chọn → appName
6262
packages = preloadSelectedApps()
6363

6464
val dialog = DialogAppChooser(
@@ -71,8 +71,10 @@ class ParamsAppChooserRender(
7171
dialog.show(context.supportFragmentManager, "app-chooser")
7272
dialog.showLoading(true)
7373

74+
// load phần còn lại async
7475
loadPackagesAsync(dialog, actionParamInfo.type == "packages")
7576
}
77+
7678
// =======================
7779
// SORTED INSERT
7880
// =======================
@@ -147,7 +149,7 @@ class ParamsAppChooserRender(
147149
if (packages.any { it.packageName == info.packageName }) continue
148150
insertSorted(packages, info)
149151
}
150-
setSelectStatus()
152+
// setSelectStatus()
151153
dialog.notifyDataChanged()
152154
}
153155
}
@@ -189,18 +191,17 @@ class ParamsAppChooserRender(
189191
// SELECTION LOGIC
190192
// =======================
191193
private fun setSelectStatus() {
192-
packages.forEach { it.selected = false }
193-
194-
val currentValue = valueView.text.toString()
195-
196-
if (actionParamInfo.multiple) {
197-
currentValue
194+
val currentValues = if (actionParamInfo.multiple) {
195+
valueView.text.toString()
198196
.split(actionParamInfo.separator)
199-
.forEach { value ->
200-
packages.find { it.packageName == value }?.selected = true
201-
}
197+
.filter { it.isNotEmpty() }
198+
.toSet()
202199
} else {
203-
packages.find { it.packageName == currentValue }?.selected = true
200+
setOf(valueView.text.toString())
201+
}
202+
203+
packages.forEach {
204+
it.selected = it.packageName != null && currentValues.contains(it.packageName)
204205
}
205206
}
206207

@@ -228,28 +229,39 @@ class ParamsAppChooserRender(
228229
}
229230

230231
private fun preloadSelectedApps(): ArrayList<AdapterAppChooser.AppInfo> {
231-
val result = ArrayList<AdapterAppChooser.AppInfo>()
232232
val pm = context.packageManager
233+
val result = ArrayList<AdapterAppChooser.AppInfo>()
233234

234-
val values = ActionParamsLayoutRender
235-
.getParamValues(actionParamInfo)
236-
?: return result
235+
val values = if (actionParamInfo.multiple) {
236+
valueView.text.toString()
237+
.split(actionParamInfo.separator)
238+
.filter { it.isNotEmpty() }
239+
} else {
240+
listOf(valueView.text.toString()).filter { it.isNotEmpty() }
241+
}
237242

238243
for (pkg in values) {
239-
if (pkg.isBlank()) continue
240244
try {
241-
val appInfo = pm.getApplicationInfo(pkg, 0)
245+
val app = pm.getApplicationInfo(pkg, 0)
242246
result.add(
243247
AdapterAppChooser.AppInfo().apply {
244248
packageName = pkg
245-
appName = pm.getApplicationLabel(appInfo)?.toString()
249+
appName = app.loadLabel(pm)?.toString() ?: pkg
246250
selected = true
247251
}
248252
)
249253
} catch (_: Exception) {
250-
// app không tồn tại → bỏ qua (giữ hành vi cũ)
254+
// app không tồn tại → vẫn thêm
255+
result.add(
256+
AdapterAppChooser.AppInfo().apply {
257+
packageName = pkg
258+
appName = pkg
259+
selected = true
260+
}
261+
)
251262
}
252263
}
264+
253265
return result
254266
}
255267
// =======================

0 commit comments

Comments
 (0)