diff options
| author | 2023-06-05 08:39:49 +0200 | |
|---|---|---|
| committer | 2023-06-06 00:07:54 +0200 | |
| commit | 409ff26f029861235b3f7b12400eea82c843244d (patch) | |
| tree | f833790d0891b24654b0de35790b538c8de6e01e /src | |
| parent | Attempt to move the unzip coroutine to a ViewModel (diff) | |
| download | yuzu-409ff26f029861235b3f7b12400eea82c843244d.tar.gz yuzu-409ff26f029861235b3f7b12400eea82c843244d.tar.xz yuzu-409ff26f029861235b3f7b12400eea82c843244d.zip | |
Address feedback
Diffstat (limited to 'src')
4 files changed, 28 insertions, 19 deletions
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 0bdbabe79..d2fa46323 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 | |||
| @@ -275,7 +275,8 @@ class HomeSettingsFragment : Fragment() { | |||
| 275 | 275 | ||
| 276 | private fun shareLog() { | 276 | private fun shareLog() { |
| 277 | val file = DocumentFile.fromSingleUri( | 277 | val file = DocumentFile.fromSingleUri( |
| 278 | mainActivity, DocumentsContract.buildDocumentUri( | 278 | mainActivity, |
| 279 | DocumentsContract.buildDocumentUri( | ||
| 279 | DocumentProvider.AUTHORITY, | 280 | DocumentProvider.AUTHORITY, |
| 280 | "${DocumentProvider.ROOT_ID}/log/yuzu_log.txt" | 281 | "${DocumentProvider.ROOT_ID}/log/yuzu_log.txt" |
| 281 | ) | 282 | ) |
| @@ -287,7 +288,11 @@ class HomeSettingsFragment : Fragment() { | |||
| 287 | .putExtra(Intent.EXTRA_STREAM, file.uri) | 288 | .putExtra(Intent.EXTRA_STREAM, file.uri) |
| 288 | startActivity(Intent.createChooser(intent, "Share log")) | 289 | startActivity(Intent.createChooser(intent, "Share log")) |
| 289 | } else { | 290 | } else { |
| 290 | Toast.makeText(requireContext(), getText(R.string.share_log_missing), Toast.LENGTH_SHORT).show() | 291 | Toast.makeText( |
| 292 | requireContext(), | ||
| 293 | getText(R.string.share_log_missing), | ||
| 294 | Toast.LENGTH_SHORT | ||
| 295 | ).show() | ||
| 291 | } | 296 | } |
| 292 | } | 297 | } |
| 293 | 298 | ||
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/IndeterminateProgressDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/IndeterminateProgressDialogFragment.kt index 10a897392..c7880d8cc 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/IndeterminateProgressDialogFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/IndeterminateProgressDialogFragment.kt | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | // SPDX-FileCopyrightText: 2023 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 1 | package org.yuzu.yuzu_emu.fragments | 4 | package org.yuzu.yuzu_emu.fragments |
| 2 | 5 | ||
| 3 | import android.app.Dialog | 6 | import android.app.Dialog |
| 4 | import android.os.Bundle | 7 | import android.os.Bundle |
| 5 | import android.widget.Toast | 8 | import android.widget.Toast |
| 9 | import androidx.appcompat.app.AppCompatActivity | ||
| 6 | import androidx.fragment.app.DialogFragment | 10 | import androidx.fragment.app.DialogFragment |
| 11 | import androidx.fragment.app.activityViewModels | ||
| 7 | import androidx.lifecycle.ViewModelProvider | 12 | import androidx.lifecycle.ViewModelProvider |
| 8 | import com.google.android.material.dialog.MaterialAlertDialogBuilder | 13 | import com.google.android.material.dialog.MaterialAlertDialogBuilder |
| 9 | import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding | 14 | import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding |
| 10 | import org.yuzu.yuzu_emu.model.TaskViewModel | 15 | import org.yuzu.yuzu_emu.model.TaskViewModel |
| 11 | import java.io.Serializable | ||
| 12 | 16 | ||
| 13 | 17 | ||
| 14 | class IndeterminateProgressDialogFragment : DialogFragment() { | 18 | class IndeterminateProgressDialogFragment : DialogFragment() { |
| 15 | private lateinit var taskViewModel: TaskViewModel | 19 | private val taskViewModel: TaskViewModel by activityViewModels() |
| 16 | 20 | ||
| 17 | override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { | 21 | override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { |
| 18 | taskViewModel = ViewModelProvider(requireActivity())[TaskViewModel::class.java] | ||
| 19 | |||
| 20 | val titleId = requireArguments().getInt(TITLE) | 22 | val titleId = requireArguments().getInt(TITLE) |
| 21 | 23 | ||
| 22 | val progressBinding = DialogProgressBarBinding.inflate(layoutInflater) | 24 | val progressBinding = DialogProgressBarBinding.inflate(layoutInflater) |
| @@ -42,11 +44,7 @@ class IndeterminateProgressDialogFragment : DialogFragment() { | |||
| 42 | } | 44 | } |
| 43 | 45 | ||
| 44 | if (taskViewModel.isRunning.value == false) { | 46 | if (taskViewModel.isRunning.value == false) { |
| 45 | val task = requireArguments().getSerializable(TASK) as? () -> Any | 47 | taskViewModel.runTask() |
| 46 | if (task != null) { | ||
| 47 | taskViewModel.task = task | ||
| 48 | taskViewModel.runTask() | ||
| 49 | } | ||
| 50 | } | 48 | } |
| 51 | return dialog | 49 | return dialog |
| 52 | } | 50 | } |
| @@ -55,18 +53,18 @@ class IndeterminateProgressDialogFragment : DialogFragment() { | |||
| 55 | const val TAG = "IndeterminateProgressDialogFragment" | 53 | const val TAG = "IndeterminateProgressDialogFragment" |
| 56 | 54 | ||
| 57 | private const val TITLE = "Title" | 55 | private const val TITLE = "Title" |
| 58 | private const val TASK = "Task" | ||
| 59 | 56 | ||
| 60 | fun newInstance( | 57 | fun newInstance( |
| 58 | activity: AppCompatActivity, | ||
| 61 | titleId: Int, | 59 | titleId: Int, |
| 62 | task: () -> Any | 60 | task: () -> Any |
| 63 | ): IndeterminateProgressDialogFragment { | 61 | ): IndeterminateProgressDialogFragment { |
| 64 | val dialog = IndeterminateProgressDialogFragment() | 62 | val dialog = IndeterminateProgressDialogFragment() |
| 65 | val args = Bundle() | 63 | val args = Bundle() |
| 64 | ViewModelProvider(activity)[TaskViewModel::class.java].task = task | ||
| 66 | args.putInt(TITLE, titleId) | 65 | args.putInt(TITLE, titleId) |
| 67 | args.putSerializable(TASK, task as Serializable) | ||
| 68 | dialog.arguments = args | 66 | dialog.arguments = args |
| 69 | return dialog | 67 | return dialog |
| 70 | } | 68 | } |
| 71 | } | 69 | } |
| 72 | } \ No newline at end of file | 70 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/TaskViewModel.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/TaskViewModel.kt index 23723bceb..27ea725a5 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/TaskViewModel.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/TaskViewModel.kt | |||
| @@ -1,3 +1,6 @@ | |||
| 1 | // SPDX-FileCopyrightText: 2023 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 1 | package org.yuzu.yuzu_emu.model | 4 | package org.yuzu.yuzu_emu.model |
| 2 | 5 | ||
| 3 | import androidx.lifecycle.LiveData | 6 | import androidx.lifecycle.LiveData |
| @@ -30,7 +33,9 @@ class TaskViewModel : ViewModel() { | |||
| 30 | } | 33 | } |
| 31 | 34 | ||
| 32 | fun runTask() { | 35 | fun runTask() { |
| 33 | if (_isRunning.value == true) return | 36 | if (_isRunning.value == true) { |
| 37 | return | ||
| 38 | } | ||
| 34 | _isRunning.value = true | 39 | _isRunning.value = true |
| 35 | 40 | ||
| 36 | viewModelScope.launch(Dispatchers.IO) { | 41 | viewModelScope.launch(Dispatchers.IO) { |
| @@ -39,4 +44,4 @@ class TaskViewModel : ViewModel() { | |||
| 39 | _isComplete.postValue(true) | 44 | _isComplete.postValue(true) |
| 40 | } | 45 | } |
| 41 | } | 46 | } |
| 42 | } \ No newline at end of file | 47 | } |
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 2001ad704..6805efb55 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 | |||
| @@ -345,15 +345,15 @@ class MainActivity : AppCompatActivity(), ThemeProvider { | |||
| 345 | FileUtil.unzip(inputZip, cacheFirmwareDir) | 345 | FileUtil.unzip(inputZip, cacheFirmwareDir) |
| 346 | val unfilteredNumOfFiles = cacheFirmwareDir.list()?.size ?: -1 | 346 | val unfilteredNumOfFiles = cacheFirmwareDir.list()?.size ?: -1 |
| 347 | val filteredNumOfFiles = cacheFirmwareDir.list(filterNCA)?.size ?: -2 | 347 | val filteredNumOfFiles = cacheFirmwareDir.list(filterNCA)?.size ?: -2 |
| 348 | if (unfilteredNumOfFiles != filteredNumOfFiles) { | 348 | messageToShow = if (unfilteredNumOfFiles != filteredNumOfFiles) { |
| 349 | messageToShow = MessageDialogFragment.newInstance( | 349 | MessageDialogFragment.newInstance( |
| 350 | R.string.firmware_installed_failure, | 350 | R.string.firmware_installed_failure, |
| 351 | R.string.firmware_installed_failure_description | 351 | R.string.firmware_installed_failure_description |
| 352 | ) | 352 | ) |
| 353 | } else { | 353 | } else { |
| 354 | firmwarePath.deleteRecursively() | 354 | firmwarePath.deleteRecursively() |
| 355 | cacheFirmwareDir.copyRecursively(firmwarePath, true) | 355 | cacheFirmwareDir.copyRecursively(firmwarePath, true) |
| 356 | messageToShow = getString(R.string.save_file_imported_success) | 356 | getString(R.string.save_file_imported_success) |
| 357 | } | 357 | } |
| 358 | } catch (e: Exception) { | 358 | } catch (e: Exception) { |
| 359 | messageToShow = getString(R.string.fatal_error) | 359 | messageToShow = getString(R.string.fatal_error) |
| @@ -364,6 +364,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider { | |||
| 364 | } | 364 | } |
| 365 | 365 | ||
| 366 | IndeterminateProgressDialogFragment.newInstance( | 366 | IndeterminateProgressDialogFragment.newInstance( |
| 367 | this, | ||
| 367 | R.string.firmware_installing, | 368 | R.string.firmware_installing, |
| 368 | task | 369 | task |
| 369 | ).show(supportFragmentManager, IndeterminateProgressDialogFragment.TAG) | 370 | ).show(supportFragmentManager, IndeterminateProgressDialogFragment.TAG) |