Skip to content

Commit c4e8f6c

Browse files
committed
Upload file
1 parent 26f758b commit c4e8f6c

2 files changed

Lines changed: 73 additions & 73 deletions

File tree

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

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,21 @@ class DialogAppChooser(
4747
val adapter = absListView.adapter as? AdapterAppChooser
4848
selectAll.visibility = View.VISIBLE
4949
selectAll.isChecked =
50-
packages.isNotEmpty() &&
51-
packages.size > 1 &&
52-
packages.count { it.selected } == packages.size
50+
adapter != null &&
51+
adapter.count > 0 &&
52+
adapter.getSelectedItems().size == adapter.count
5353

5454
selectAll.setOnClickListener {
5555
adapter?.setSelectAllState((it as CompoundButton).isChecked)
5656
}
5757

58-
adapter?.setSelectStateListener(object : AdapterAppChooser.SelectStateListener {
59-
override fun onSelectChange(selected: List<AdapterAppChooser.AppInfo>) {
60-
selectAll.isChecked = selected.size == packages.size
61-
}
62-
})
58+
adapter?.let { ad ->
59+
ad.setSelectStateListener(object : AdapterAppChooser.SelectStateListener {
60+
override fun onSelectChange(selected: List<AdapterAppChooser.AppInfo>) {
61+
selectAll.isChecked = selected.size == ad.count
62+
}
63+
})
64+
}
6365

6466
if (!allowAllSelect) {
6567
selectAll.visibility = View.GONE
@@ -162,5 +164,8 @@ class DialogAppChooser(
162164

163165
override fun onDismiss(dialog: DialogInterface) {
164166
super.onDismiss(dialog)
167+
if (::adapter.isInitialized) {
168+
adapter.release()
169+
}
165170
}
166171
}

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

Lines changed: 60 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,6 @@ class ParamsAppChooserRender(
6161
private fun openAppChooser() {
6262
// 🔥 preload app đã chọn → có appName
6363
packages = preloadSelectedApps()
64-
65-
if (packages.isEmpty()) {
66-
// đảm bảo dialog không hiểu nhầm có selection
67-
packages.clear()
68-
}
6964

7065
val dialog = DialogAppChooser(
7166
darkMode,
@@ -234,74 +229,74 @@ if (packages.isEmpty()) {
234229
}
235230
}
236231

237-
private fun resolveCurrentAppName() {
238-
val pm = context.packageManager
239-
240-
if (actionParamInfo.multiple) {
241-
val pkgs = valueView.text.toString()
242-
.split(actionParamInfo.separator)
243-
.filter { it.isNotEmpty() }
244-
245-
val names = ArrayList<String>(pkgs.size)
246-
for (pkg in pkgs) {
247-
try {
248-
val app = pm.getApplicationInfo(pkg, 0)
249-
names.add(app.loadLabel(pm)?.toString() ?: pkg)
250-
} catch (_: Exception) {
251-
names.add(pkg)
232+
private fun resolveCurrentAppName() {
233+
val pm = context.packageManager
234+
235+
if (actionParamInfo.multiple) {
236+
val pkgs = valueView.text.toString()
237+
.split(actionParamInfo.separator)
238+
.filter { it.isNotEmpty() }
239+
240+
val names = ArrayList<String>(pkgs.size)
241+
for (pkg in pkgs) {
242+
try {
243+
val app = pm.getApplicationInfo(pkg, 0)
244+
names.add(app.loadLabel(pm)?.toString() ?: pkg)
245+
} catch (_: Exception) {
246+
names.add(pkg)
247+
}
248+
}
249+
nameView.text = names.joinToString("")
250+
} else {
251+
val pkg = valueView.text.toString()
252+
if (pkg.isNotEmpty()) {
253+
try {
254+
val app = pm.getApplicationInfo(pkg, 0)
255+
nameView.text = app.loadLabel(pm)?.toString() ?: pkg
256+
} catch (_: Exception) {
257+
nameView.text = pkg
258+
}
252259
}
253260
}
254-
nameView.text = names.joinToString("")
255-
} else {
256-
val pkg = valueView.text.toString()
257-
if (pkg.isNotEmpty()) {
261+
}
262+
263+
private fun preloadSelectedApps(): ArrayList<AdapterAppChooser.AppInfo> {
264+
val pm = context.packageManager
265+
val result = ArrayList<AdapterAppChooser.AppInfo>()
266+
267+
val values = if (actionParamInfo.multiple) {
268+
valueView.text.toString()
269+
.split(actionParamInfo.separator)
270+
.filter { it.isNotEmpty() }
271+
} else {
272+
listOf(valueView.text.toString()).filter { it.isNotEmpty() }
273+
}
274+
275+
// ✅ nếu chưa chọn gì → trả list rỗng
276+
if (values.isEmpty()) return result
277+
278+
for (pkg in values) {
258279
try {
259280
val app = pm.getApplicationInfo(pkg, 0)
260-
nameView.text = app.loadLabel(pm)?.toString() ?: pkg
281+
result.add(
282+
AdapterAppChooser.AppInfo().apply {
283+
packageName = pkg
284+
appName = app.loadLabel(pm)?.toString() ?: pkg
285+
selected = true
286+
}
287+
)
261288
} catch (_: Exception) {
262-
nameView.text = pkg
289+
result.add(
290+
AdapterAppChooser.AppInfo().apply {
291+
packageName = pkg
292+
appName = pkg
293+
selected = true
294+
}
295+
)
263296
}
264297
}
298+
return result
265299
}
266-
}
267-
268-
private fun preloadSelectedApps(): ArrayList<AdapterAppChooser.AppInfo> {
269-
val pm = context.packageManager
270-
val result = ArrayList<AdapterAppChooser.AppInfo>()
271-
272-
val values = if (actionParamInfo.multiple) {
273-
valueView.text.toString()
274-
.split(actionParamInfo.separator)
275-
.filter { it.isNotEmpty() }
276-
} else {
277-
listOf(valueView.text.toString()).filter { it.isNotEmpty() }
278-
}
279-
280-
// ✅ nếu chưa chọn gì → trả list rỗng
281-
if (values.isEmpty()) return result
282-
283-
for (pkg in values) {
284-
try {
285-
val app = pm.getApplicationInfo(pkg, 0)
286-
result.add(
287-
AdapterAppChooser.AppInfo().apply {
288-
packageName = pkg
289-
appName = app.loadLabel(pm)?.toString() ?: pkg
290-
selected = true
291-
}
292-
)
293-
} catch (_: Exception) {
294-
result.add(
295-
AdapterAppChooser.AppInfo().apply {
296-
packageName = pkg
297-
appName = pkg
298-
selected = true
299-
}
300-
)
301-
}
302-
}
303-
return result
304-
}
305300
// =======================
306301
// CALLBACK
307302
// =======================

0 commit comments

Comments
 (0)