diff --git a/app/src/main/java/com/topjohnwu/magisk/events/dialog/ConfirmInstallLocalModuleDialog.kt b/app/src/main/java/com/topjohnwu/magisk/events/dialog/ConfirmInstallLocalModuleDialog.kt new file mode 100644 index 000000000..be619b620 --- /dev/null +++ b/app/src/main/java/com/topjohnwu/magisk/events/dialog/ConfirmInstallLocalModuleDialog.kt @@ -0,0 +1,32 @@ +package com.topjohnwu.magisk.events.dialog + +import android.net.Uri +import com.topjohnwu.magisk.MainDirections +import com.topjohnwu.magisk.R +import com.topjohnwu.magisk.core.Const +import com.topjohnwu.magisk.core.utils.MediaStoreUtils.displayName +import com.topjohnwu.magisk.ui.module.ModuleViewModel +import com.topjohnwu.magisk.view.MagiskDialog + +class ConfirmInstallLocalModuleDialog( + private val viewModel: ModuleViewModel, + private val uri: Uri +) : DialogEvent() { + override fun build(dialog: MagiskDialog) { + dialog.apply { + setTitle(R.string.confirm_install_title) + setMessage(context.getString(R.string.confirm_install, uri.displayName)) + setButton(MagiskDialog.ButtonType.POSITIVE) { + text = android.R.string.ok + onClick { + viewModel.apply { + MainDirections.actionFlashFragment(Const.Value.FLASH_ZIP, uri).navigate() + } + } + } + setButton(MagiskDialog.ButtonType.NEGATIVE) { + text = android.R.string.cancel + } + } + } +} diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleFragment.kt b/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleFragment.kt index e6eeb2f30..86c9813f5 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleFragment.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleFragment.kt @@ -2,11 +2,9 @@ package com.topjohnwu.magisk.ui.module import android.os.Bundle import android.view.View -import com.topjohnwu.magisk.MainDirections import com.topjohnwu.magisk.R import com.topjohnwu.magisk.arch.BaseFragment import com.topjohnwu.magisk.arch.viewModel -import com.topjohnwu.magisk.core.Const import com.topjohnwu.magisk.databinding.FragmentModuleMd2Binding import rikka.recyclerview.addEdgeSpacing import rikka.recyclerview.addInvalidateItemDecorationsObserver @@ -23,7 +21,7 @@ class ModuleFragment : BaseFragment() { activity?.title = resources.getString(R.string.modules) viewModel.data.observe(this) { it ?: return@observe - MainDirections.actionFlashFragment(Const.Value.FLASH_ZIP, it).navigate() + viewModel.requestInstallLocalModule(it) viewModel.data.value = null } } diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt index 7464a732a..fd02f57a1 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt @@ -17,6 +17,7 @@ import com.topjohnwu.magisk.databinding.bindExtra import com.topjohnwu.magisk.databinding.set import com.topjohnwu.magisk.events.GetContentEvent import com.topjohnwu.magisk.events.SnackbarEvent +import com.topjohnwu.magisk.events.dialog.ConfirmInstallLocalModuleDialog import com.topjohnwu.magisk.events.dialog.ModuleInstallDialog import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -83,6 +84,10 @@ class ModuleViewModel : AsyncLoadViewModel() { GetContentEvent("application/zip", UriCallback()).publish() } + fun requestInstallLocalModule(uri: Uri) { + ConfirmInstallLocalModuleDialog(this, uri).publish() + } + @Parcelize class UriCallback : ContentResultCallback { override fun onActivityResult(result: Uri) { diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 21227189a..6cbbe1cf9 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -113,6 +113,8 @@ %1$s 未启用,此模块暂停加载 存在兼容性问题,此模块未加载 未安装任何模块 + 安装模块 %1$s? + 安装确认 主题模式 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 2447a043b..f91297e14 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -113,6 +113,8 @@ 此模組因 %1$s 未啟用而暫停運作 此模組因不相容 Zygisk 而未載入 未安裝任何模組 + 安裝模組 %1$s? + 安裝確認 主題模式 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 33e39e969..f3d362342 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -113,6 +113,8 @@ Module suspended because %1$s is not enabled Zygisk module not loaded due to incompatibility No module installed + Install module %1$s? + Install Confirmation Theme Mode