summaryrefslogtreecommitdiffstats
path: root/src/android/app/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/app/src/main/java')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt13
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt12
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt58
3 files changed, 82 insertions, 1 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt
index 22af9e435..4be9ade14 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt
@@ -227,6 +227,8 @@ object NativeLibrary {
external fun setAppDirectory(directory: String)
+ external fun installFileToNand(filename: String): Int
+
external fun initializeGpuDriver(
hookLibDir: String?,
customDriverDir: String?,
@@ -507,4 +509,15 @@ object NativeLibrary {
const val RELEASED = 0
const val PRESSED = 1
}
+
+ /**
+ * Result from installFileToNand
+ */
+ object InstallFileToNandResult {
+ const val Success = 0
+ const val SuccessFileOverwritten = 1
+ const val Error = 2
+ const val ErrorBaseGame = 3
+ const val ErrorFilenameExtension = 4
+ }
}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt
index bdc337501..536163eb6 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt
@@ -95,6 +95,11 @@ class HomeSettingsFragment : Fragment() {
R.drawable.ic_nfc
) { mainActivity.getAmiiboKey.launch(arrayOf("*/*")) },
HomeSetting(
+ R.string.install_game_content,
+ R.string.install_game_content_description,
+ R.drawable.ic_system_update_alt
+ ) { mainActivity.installGameUpdate.launch(arrayOf("*/*")) },
+ HomeSetting(
R.string.select_games_folder,
R.string.select_games_folder_description,
R.drawable.ic_add
@@ -103,7 +108,12 @@ class HomeSettingsFragment : Fragment() {
R.string.manage_save_data,
R.string.import_export_saves_description,
R.drawable.ic_save
- ) { ImportExportSavesFragment().show(parentFragmentManager, ImportExportSavesFragment.TAG) },
+ ) {
+ ImportExportSavesFragment().show(
+ parentFragmentManager,
+ ImportExportSavesFragment.TAG
+ )
+ },
HomeSetting(
R.string.install_prod_keys,
R.string.install_prod_keys_description,
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt
index 124f62f08..82fc9e04e 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt
@@ -467,4 +467,62 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
}
}
}
+
+ val installGameUpdate =
+ registerForActivityResult(ActivityResultContracts.OpenDocument()) {
+ if (it == null)
+ return@registerForActivityResult
+
+ IndeterminateProgressDialogFragment.newInstance(
+ this@MainActivity,
+ R.string.install_game_content
+ ) {
+ val result = NativeLibrary.installFileToNand(it.toString())
+ lifecycleScope.launch {
+ withContext(Dispatchers.Main) {
+ when (result) {
+ NativeLibrary.InstallFileToNandResult.Success -> {
+ Toast.makeText(
+ applicationContext,
+ R.string.install_game_content_success,
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+
+ NativeLibrary.InstallFileToNandResult.SuccessFileOverwritten -> {
+ Toast.makeText(
+ applicationContext,
+ R.string.install_game_content_success_overwrite,
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+
+ NativeLibrary.InstallFileToNandResult.ErrorBaseGame -> {
+ MessageDialogFragment.newInstance(
+ R.string.install_game_content_failure,
+ R.string.install_game_content_failure_base
+ ).show(supportFragmentManager, MessageDialogFragment.TAG)
+ }
+
+ NativeLibrary.InstallFileToNandResult.ErrorFilenameExtension -> {
+ MessageDialogFragment.newInstance(
+ R.string.install_game_content_failure,
+ R.string.install_game_content_failure_file_extension,
+ R.string.install_game_content_help_link
+ ).show(supportFragmentManager, MessageDialogFragment.TAG)
+ }
+
+ else -> {
+ MessageDialogFragment.newInstance(
+ R.string.install_game_content_failure,
+ R.string.install_game_content_failure_description,
+ R.string.install_game_content_help_link
+ ).show(supportFragmentManager, MessageDialogFragment.TAG)
+ }
+ }
+ }
+ }
+ return@newInstance result
+ }.show(supportFragmentManager, IndeterminateProgressDialogFragment.TAG)
+ }
}