Skip to content

Commit 1e8bfff

Browse files
committed
Upload file
1 parent e11277a commit 1e8bfff

2 files changed

Lines changed: 36 additions & 203 deletions

File tree

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

Lines changed: 36 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class ParamsAppChooserRender(
2424
) : DialogAppChooser.Callback {
2525

2626
private val uiMode = context.resources.configuration.uiMode
27-
private var darkMode: Boolean =
27+
private val darkMode: Boolean =
2828
(uiMode and Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES
2929

3030
private lateinit var valueView: TextView
@@ -54,7 +54,7 @@ class ParamsAppChooserRender(
5454
// OPEN DIALOG + LOAD ASYNC
5555
// =======================
5656
private fun openAppChooser() {
57-
packages = ArrayList() // rỗng ban đầu
57+
packages = ArrayList()
5858

5959
val dialog = DialogAppChooser(
6060
darkMode,
@@ -64,7 +64,6 @@ class ParamsAppChooserRender(
6464
)
6565

6666
dialog.show(context.supportFragmentManager, "app-chooser")
67-
6867
loadPackagesAsync(dialog, actionParamInfo.type == "packages")
6968
}
7069

@@ -74,24 +73,23 @@ class ParamsAppChooserRender(
7473
) {
7574
val pm = context.packageManager
7675
val filterSet = actionParamInfo.optionsFromShell
77-
?.map { it.value }
76+
?.mapNotNull { it.value }
7877
?.toHashSet()
7978

8079
context.lifecycleScope.launch(Dispatchers.IO) {
8180
val apps = pm.getInstalledApplications(PackageManager.MATCH_ALL)
8281

82+
val result = HashMap<String, AdapterAppChooser.AppInfo>(apps.size)
8383
val batch = ArrayList<AdapterAppChooser.AppInfo>(10)
84-
val result = HashMap<String, AdapterAppChooser.AppInfo>(128)
8584

8685
for ((index, app) in apps.withIndex()) {
8786
val pkg = app.packageName
8887

8988
if (filterSet == null || filterSet.contains(pkg)) {
9089
val info = AdapterAppChooser.AppInfo().apply {
91-
packageName = pkg // GIỮ NULL
90+
packageName = pkg // GIỮ NULL
9291
appName = app.loadLabel(pm)?.toString() // GIỮ NULL
9392
}
94-
9593
result[pkg] = info
9694
batch.add(info)
9795
}
@@ -102,7 +100,7 @@ class ParamsAppChooserRender(
102100

103101
withContext(Dispatchers.Main) {
104102
packages.addAll(copy)
105-
setSelectStatus() // GIỮ LOGIC CŨ
103+
setSelectStatus()
106104
dialog.notifyDataChanged()
107105
}
108106
}
@@ -111,7 +109,6 @@ class ParamsAppChooserRender(
111109
// thêm app bị thiếu (giữ nguyên hành vi cũ)
112110
if (includeMissing && actionParamInfo.optionsFromShell != null) {
113111
val missing = ArrayList<AdapterAppChooser.AppInfo>()
114-
115112
for (item in actionParamInfo.optionsFromShell!!) {
116113
val pkg = item.value
117114
if (pkg != null && !result.containsKey(pkg)) {
@@ -123,13 +120,12 @@ class ParamsAppChooserRender(
123120
)
124121
}
125122
}
126-
127123
withContext(Dispatchers.Main) {
128124
packages.addAll(missing)
129125
}
130126
}
131127

132-
// SORT SAU KHI LOAD XONG (GIỮ HÀNH VI CŨ)
128+
// sort cuối (giữ hành vi cũ)
133129
withContext(Dispatchers.Main) {
134130
val collator = Collator.getInstance(Locale.getDefault())
135131
packages.sortWith { a, b ->
@@ -147,21 +143,18 @@ class ParamsAppChooserRender(
147143
private fun setSelectStatus() {
148144
packages.forEach { it.selected = false }
149145

150-
val currentValue = valueView.text
146+
val currentValue = valueView.text.toString()
151147
if (actionParamInfo.multiple) {
152148
currentValue.split(actionParamInfo.separator).forEach { value ->
153149
packages.find { it.packageName == value }?.selected = true
154150
}
155151
} else {
156-
val current = packages.find { it.packageName == currentValue }
157-
if (current != null) {
158-
current.selected = true
159-
}
152+
packages.find { it.packageName == currentValue }?.selected = true
160153
}
161154
}
162155

163156
// =======================
164-
// INIT UI VALUE (GIỮ NGUYÊN 100%)
157+
// INIT UI VALUE (GIỮ NGUYÊN HÀNH VI)
165158
// =======================
166159
private fun setTextView() {
167160
packages = loadPackages(actionParamInfo.type == "packages")
@@ -175,7 +168,6 @@ class ParamsAppChooserRender(
175168
?.forEach { value ->
176169
packageMap[value]?.selected = true
177170
}
178-
179171
onConfirm(packages.filter { it.selected })
180172
} else {
181173
val validOptions = ArrayList<SelectItem>(packages.size)
@@ -196,21 +188,43 @@ class ParamsAppChooserRender(
196188

197189
if (currentIndex >= 0) {
198190
val item = packages[currentIndex]
199-
valueView.text = item.packageName.orEmpty()
200-
nameView.text = item.appName.orEmpty()
191+
valueView.text = item.packageName ?: ""
192+
nameView.text = item.appName ?: ""
201193
} else {
202194
valueView.text = ""
203195
nameView.text = ""
204196
}
205197
}
206198
}
207199

200+
// =======================
201+
// GIỮ HÀM CŨ (FIX Unresolved reference)
202+
// =======================
203+
private fun loadPackages(includeMissing: Boolean): ArrayList<AdapterAppChooser.AppInfo> {
204+
val pm = context.packageManager
205+
val list = ArrayList<AdapterAppChooser.AppInfo>()
206+
207+
val apps = pm.getInstalledApplications(PackageManager.MATCH_ALL)
208+
for (app in apps) {
209+
list.add(
210+
AdapterAppChooser.AppInfo().apply {
211+
packageName = app.packageName
212+
appName = app.loadLabel(pm)?.toString()
213+
}
214+
)
215+
}
216+
return list
217+
}
218+
219+
// =======================
220+
// CALLBACK
221+
// =======================
208222
override fun onConfirm(apps: List<AdapterAppChooser.AppInfo>) {
209223
if (actionParamInfo.multiple) {
210224
valueView.text =
211-
apps.joinToString(actionParamInfo.separator) { it.packageName }
225+
apps.joinToString(actionParamInfo.separator) { it.packageName ?: "" }
212226
nameView.text =
213-
apps.joinToString("") { it.appName }
227+
apps.joinToString("") { it.appName ?: "" }
214228
} else {
215229
val item = apps.firstOrNull()
216230
valueView.text = item?.packageName ?: ""

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

Lines changed: 0 additions & 181 deletions
This file was deleted.

0 commit comments

Comments
 (0)