Skip to content

Commit e80b644

Browse files
添加安装确认弹窗
1 parent ebdb312 commit e80b644

6 files changed

Lines changed: 75 additions & 6 deletions

File tree

app/src/main/java/me/bmax/apatch/ui/screen/APM.kt

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,21 @@ fun APModuleScreen(navigator: DestinationsNavigator) {
130130
viewModel.fetchModuleList()
131131
}
132132
}
133+
134+
var pendingInstallUri by remember { mutableStateOf<Uri?>(null) }
135+
val installConfirmDialog = rememberConfirmDialog(
136+
onConfirm = {
137+
pendingInstallUri?.let { uri ->
138+
navigator.navigate(InstallScreenDestination(uri, MODULE_TYPE.APM))
139+
viewModel.markNeedRefresh()
140+
}
141+
pendingInstallUri = null
142+
},
143+
onDismiss = {
144+
pendingInstallUri = null
145+
}
146+
)
147+
133148
val webUILauncher = rememberLauncherForActivityResult(
134149
contract = ActivityResultContracts.StartActivityForResult()
135150
) { viewModel.fetchModuleList() }
@@ -158,9 +173,30 @@ fun APModuleScreen(navigator: DestinationsNavigator) {
158173

159174
Log.i("ModuleScreen", "select zip result: $uri")
160175

161-
navigator.navigate(InstallScreenDestination(uri, MODULE_TYPE.APM))
162-
163-
viewModel.markNeedRefresh()
176+
val prefs = APApplication.sharedPreferences
177+
if (prefs.getBoolean("apm_install_confirm_enabled", true)) {
178+
pendingInstallUri = uri
179+
val fileName = try {
180+
var name = uri.path ?: "Module"
181+
context.contentResolver.query(uri, null, null, null, null)?.use { cursor ->
182+
val nameIndex = cursor.getColumnIndex(android.provider.OpenableColumns.DISPLAY_NAME)
183+
if (cursor.moveToFirst() && nameIndex >= 0) {
184+
name = cursor.getString(nameIndex)
185+
}
186+
}
187+
name
188+
} catch (e: Exception) {
189+
"Module"
190+
}
191+
installConfirmDialog.showConfirm(
192+
title = context.getString(R.string.apm_install_confirm_title),
193+
content = context.getString(R.string.apm_install_confirm_content, fileName),
194+
markdown = false
195+
)
196+
} else {
197+
navigator.navigate(InstallScreenDestination(uri, MODULE_TYPE.APM))
198+
viewModel.markNeedRefresh()
199+
}
164200
}
165201

166202
FloatingActionButton(

app/src/main/java/me/bmax/apatch/ui/screen/Settings.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,22 @@ fun SettingScreen() {
325325
}
326326
enableWebDebugging = it
327327
}
328+
329+
// Install Confirm
330+
var installConfirm by rememberSaveable {
331+
mutableStateOf(
332+
prefs.getBoolean("apm_install_confirm_enabled", true)
333+
)
334+
}
335+
SwitchItem(
336+
icon = Icons.Filled.Save, // Reusing Save icon or maybe Help/Info
337+
title = stringResource(id = R.string.settings_apm_install_confirm),
338+
summary = stringResource(id = R.string.settings_apm_install_confirm_summary),
339+
checked = installConfirm
340+
) {
341+
prefs.edit { putBoolean("apm_install_confirm_enabled", it) }
342+
installConfirm = it
343+
}
328344
}
329345

330346
// Hide Learn APatch card

app/src/main/res/values-ja/strings.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,11 @@
152152
<string name="apm_action">アクション</string>
153153
<string name="enable_web_debugging">WebView デバッグを有効</string>
154154
<string name="enable_web_debugging_summary">Web UI のデバッグに使用できます。必要な場合のみ有効にしてください。</string>
155+
<string name="settings_apm_install_confirm">インストール前に確認</string>
156+
<string name="settings_apm_install_confirm_summary">モジュールをインストールする前に確認ダイアログを表示する</string>
157+
<string name="apm_install_confirm_title">モジュールをインストール</string>
158+
<string name="apm_install_confirm_content">%s をインストールしますか?</string>
159+
155160
<string name="settings_donot_store_superkey">ローカルにスーパーキーを保存しない</string>
156161
<string name="settings_donot_store_superkey_summary">マネージャーの起動時に SuperKey を認証します</string>
157162
<string name="mode_select_page_title">インストール</string>
@@ -164,7 +169,7 @@
164169
<string name="home_more_menu_feedback_or_suggestion">フィードバック / 提案</string>
165170
<string name="home_more_menu_about">APatch について</string>
166171
<string name="home_dialog_uninstall_title">アンインストール</string>
167-
<string name="home_dialog_uninstall_ap_only">APatch をアンインストール</string>
172+
<string name="home_dialog_uninstall_ap_only">パッチをアンインストール</string>
168173
<string name="home_dialog_uninstall_all">全てアンインストール</string>
169174
<string name="kpm_control_dialog_title">KPModule の管理</string>
170175
<string name="kpm_control_dialog_content">制御パラメータを入力してください:</string>

app/src/main/res/values-zh-rCN/strings.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,10 @@
177177
<string name="apm_action">操作</string>
178178
<string name="enable_web_debugging">启用 WebView 调试</string>
179179
<string name="enable_web_debugging_summary">可用于调试 WebUI。请仅在需要时启用。</string>
180+
<string name="settings_apm_install_confirm">安装前确认</string>
181+
<string name="settings_apm_install_confirm_summary">安装模块前显示确认弹窗</string>
182+
<string name="apm_install_confirm_title">安装模块</string>
183+
<string name="apm_install_confirm_content">确定要安装 %s 吗?</string>
180184

181185
<string name="settings_donot_store_superkey">不在本地存储超级密钥</string>
182186
<string name="settings_donot_store_superkey_summary">每次启动管理器时验证超级密钥</string>
@@ -195,7 +199,7 @@
195199

196200
<string name="home_dialog_uninstall_title">卸载</string>
197201

198-
<string name="home_dialog_uninstall_ap_only">仅卸载 APatch</string>
202+
<string name="home_dialog_uninstall_ap_only">仅卸载补丁</string>
199203
<string name="home_dialog_uninstall_all">完全卸载</string>
200204

201205
<string name="kpm_control_dialog_title">控制 KPM</string>

app/src/main/res/values-zh-rTW/strings.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@
174174
<string name="apm_action">操作</string>
175175
<string name="enable_web_debugging">啟用 WebView 偵錯</string>
176176
<string name="enable_web_debugging_summary">可用於偵錯WebUI,請僅在需要時啟用。</string>
177+
<string name="settings_apm_install_confirm">安裝前確認</string>
178+
<string name="settings_apm_install_confirm_summary">安裝模組前顯示確認彈窗</string>
179+
<string name="apm_install_confirm_title">安裝模組</string>
180+
<string name="apm_install_confirm_content">確定要安裝 %s 嗎?</string>
177181

178182
<string name="settings_donot_store_superkey">停用本機儲存密鑰</string>
179183
<string name="settings_donot_store_superkey_summary">每次管理器啟動時驗證超級密鑰</string>

app/src/main/res/values/strings.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,10 @@
179179
<string name="apm_action">Action</string>
180180
<string name="enable_web_debugging">Enable WebView debugging</string>
181181
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
182+
<string name="settings_apm_install_confirm">Confirm before install</string>
183+
<string name="settings_apm_install_confirm_summary">Show a confirmation dialog before installing modules</string>
184+
<string name="apm_install_confirm_title">Install Module</string>
185+
<string name="apm_install_confirm_content">Are you sure you want to install %s?</string>
182186

183187
<string name="settings_donot_store_superkey">Don\'t store SuperKey in local</string>
184188
<string name="settings_donot_store_superkey_summary">Authenticate the SuperKey every time the manager starts</string>
@@ -199,7 +203,7 @@
199203

200204
<string name="home_dialog_uninstall_title">Uninstall</string>
201205

202-
<string name="home_dialog_uninstall_ap_only">Uninstall APatch only</string>
206+
<string name="home_dialog_uninstall_ap_only">Uninstall patch only</string>
203207
<string name="home_dialog_uninstall_all">Uninstall fully</string>
204208

205209
<string name="kpm_control_dialog_title">Control KPM</string>

0 commit comments

Comments
 (0)