diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionBootActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionBootActivity.java deleted file mode 100644 index ffcfa8e2f1..0000000000 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionBootActivity.java +++ /dev/null @@ -1,138 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later - -package org.dolphinemu.dolphinemu.features.riivolution.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; - -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.graphics.Insets; -import androidx.core.view.ViewCompat; -import androidx.core.view.WindowCompat; -import androidx.core.view.WindowInsetsCompat; -import androidx.recyclerview.widget.LinearLayoutManager; - -import com.google.android.material.color.MaterialColors; - -import org.dolphinemu.dolphinemu.R; -import org.dolphinemu.dolphinemu.activities.EmulationActivity; -import org.dolphinemu.dolphinemu.databinding.ActivityRiivolutionBootBinding; -import org.dolphinemu.dolphinemu.features.riivolution.model.RiivolutionPatches; -import org.dolphinemu.dolphinemu.features.settings.model.StringSetting; -import org.dolphinemu.dolphinemu.utils.DirectoryInitialization; -import org.dolphinemu.dolphinemu.utils.InsetsHelper; -import org.dolphinemu.dolphinemu.utils.ThemeHelper; - -public class RiivolutionBootActivity extends AppCompatActivity -{ - private static final String ARG_GAME_PATH = "game_path"; - private static final String ARG_GAME_ID = "game_id"; - private static final String ARG_REVISION = "revision"; - private static final String ARG_DISC_NUMBER = "disc_number"; - - private RiivolutionPatches mPatches; - - private ActivityRiivolutionBootBinding mBinding; - - public static void launch(Context context, String gamePath, String gameId, int revision, - int discNumber) - { - Intent launcher = new Intent(context, RiivolutionBootActivity.class); - launcher.putExtra(ARG_GAME_PATH, gamePath); - launcher.putExtra(ARG_GAME_ID, gameId); - launcher.putExtra(ARG_REVISION, revision); - launcher.putExtra(ARG_DISC_NUMBER, discNumber); - context.startActivity(launcher); - } - - @Override - protected void onCreate(Bundle savedInstanceState) - { - ThemeHelper.setTheme(this); - - super.onCreate(savedInstanceState); - - mBinding = ActivityRiivolutionBootBinding.inflate(getLayoutInflater()); - setContentView(mBinding.getRoot()); - - WindowCompat.setDecorFitsSystemWindows(getWindow(), false); - - Intent intent = getIntent(); - - String path = getIntent().getStringExtra(ARG_GAME_PATH); - String gameId = intent.getStringExtra(ARG_GAME_ID); - int revision = intent.getIntExtra(ARG_REVISION, -1); - int discNumber = intent.getIntExtra(ARG_DISC_NUMBER, -1); - - String loadPath = StringSetting.MAIN_LOAD_PATH.getStringGlobal(); - if (loadPath.isEmpty()) - loadPath = DirectoryInitialization.getUserDirectory() + "/Load"; - - mBinding.textSdRoot.setText(getString(R.string.riivolution_sd_root, loadPath + "/Riivolution")); - - mBinding.buttonStart.setOnClickListener((v) -> - { - if (mPatches != null) - mPatches.saveConfig(); - - EmulationActivity.launch(this, path, true); - }); - - new Thread(() -> - { - RiivolutionPatches patches = new RiivolutionPatches(gameId, revision, discNumber); - patches.loadConfig(); - runOnUiThread(() -> populateList(patches)); - }).start(); - - mBinding.toolbarRiivolution.setTitle(getString(R.string.riivolution_riivolution)); - setSupportActionBar(mBinding.toolbarRiivolution); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - - setInsets(); - ThemeHelper.enableScrollTint(this, mBinding.toolbarRiivolution, mBinding.appbarRiivolution); - } - - @Override - protected void onStop() - { - super.onStop(); - - if (mPatches != null) - mPatches.saveConfig(); - } - - @Override - public boolean onSupportNavigateUp() - { - onBackPressed(); - return true; - } - - private void populateList(RiivolutionPatches patches) - { - mPatches = patches; - - mBinding.recyclerView.setAdapter(new RiivolutionAdapter(this, patches)); - mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(this)); - } - - private void setInsets() - { - ViewCompat.setOnApplyWindowInsetsListener(mBinding.appbarRiivolution, (v, windowInsets) -> - { - Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); - - InsetsHelper.insetAppBar(insets, mBinding.appbarRiivolution); - - mBinding.scrollViewRiivolution.setPadding(insets.left, 0, insets.right, insets.bottom); - - InsetsHelper.applyNavbarWorkaround(insets.bottom, mBinding.workaroundView); - ThemeHelper.setNavigationBarColor(this, - MaterialColors.getColor(mBinding.appbarRiivolution, R.attr.colorSurface)); - - return windowInsets; - }); - } -} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionBootActivity.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionBootActivity.kt new file mode 100644 index 0000000000..a4d33badab --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionBootActivity.kt @@ -0,0 +1,130 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +package org.dolphinemu.dolphinemu.features.riivolution.ui + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.color.MaterialColors +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import org.dolphinemu.dolphinemu.R +import org.dolphinemu.dolphinemu.activities.EmulationActivity +import org.dolphinemu.dolphinemu.databinding.ActivityRiivolutionBootBinding +import org.dolphinemu.dolphinemu.features.riivolution.model.RiivolutionPatches +import org.dolphinemu.dolphinemu.features.settings.model.StringSetting +import org.dolphinemu.dolphinemu.utils.DirectoryInitialization +import org.dolphinemu.dolphinemu.utils.InsetsHelper +import org.dolphinemu.dolphinemu.utils.ThemeHelper + +class RiivolutionBootActivity : AppCompatActivity() { + private var patches: RiivolutionPatches? = null + private lateinit var binding: ActivityRiivolutionBootBinding + + override fun onCreate(savedInstanceState: Bundle?) { + ThemeHelper.setTheme(this) + + super.onCreate(savedInstanceState) + + binding = ActivityRiivolutionBootBinding.inflate(layoutInflater) + setContentView(binding.root) + + WindowCompat.setDecorFitsSystemWindows(window, false) + + val path = intent.getStringExtra(ARG_GAME_PATH) + val gameId = intent.getStringExtra(ARG_GAME_ID) + val revision = intent.getIntExtra(ARG_REVISION, -1) + val discNumber = intent.getIntExtra(ARG_DISC_NUMBER, -1) + + var loadPath = StringSetting.MAIN_LOAD_PATH.stringGlobal + if (loadPath.isEmpty()) loadPath = DirectoryInitialization.getUserDirectory() + "/Load" + + binding.textSdRoot.text = getString(R.string.riivolution_sd_root, "$loadPath/Riivolution") + binding.buttonStart.setOnClickListener { + if (patches != null) patches!!.saveConfig() + EmulationActivity.launch(this, path, true) + } + + lifecycleScope.launch { + withContext(Dispatchers.IO) { + val patches = RiivolutionPatches(gameId!!, revision, discNumber) + patches.loadConfig() + withContext(Dispatchers.Main) { + populateList(patches) + } + } + } + + binding.toolbarRiivolution.title = getString(R.string.riivolution_riivolution) + setSupportActionBar(binding.toolbarRiivolution) + supportActionBar!!.setDisplayHomeAsUpEnabled(true) + + setInsets() + ThemeHelper.enableScrollTint(this, binding.toolbarRiivolution, binding.appbarRiivolution) + } + + override fun onStop() { + super.onStop() + if (patches != null) patches!!.saveConfig() + } + + override fun onSupportNavigateUp(): Boolean { + onBackPressed() + return true + } + + private fun populateList(patches: RiivolutionPatches) { + this.patches = patches + binding.recyclerView.adapter = RiivolutionAdapter(this, patches) + binding.recyclerView.layoutManager = LinearLayoutManager(this) + } + + private fun setInsets() { + ViewCompat.setOnApplyWindowInsetsListener(binding.appbarRiivolution) { v: View?, windowInsets: WindowInsetsCompat -> + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + + InsetsHelper.insetAppBar(insets, binding.appbarRiivolution) + + binding.scrollViewRiivolution.setPadding(insets.left, 0, insets.right, insets.bottom) + + InsetsHelper.applyNavbarWorkaround(insets.bottom, binding.workaroundView) + ThemeHelper.setNavigationBarColor( + this, + MaterialColors.getColor(binding.appbarRiivolution, R.attr.colorSurface) + ) + + windowInsets + } + } + + companion object { + private const val ARG_GAME_PATH = "game_path" + private const val ARG_GAME_ID = "game_id" + private const val ARG_REVISION = "revision" + private const val ARG_DISC_NUMBER = "disc_number" + + @JvmStatic + fun launch( + context: Context, + gamePath: String?, + gameId: String?, + revision: Int, + discNumber: Int + ) { + val launcher = Intent(context, RiivolutionBootActivity::class.java) + launcher.putExtra(ARG_GAME_PATH, gamePath) + launcher.putExtra(ARG_GAME_ID, gameId) + launcher.putExtra(ARG_REVISION, revision) + launcher.putExtra(ARG_DISC_NUMBER, discNumber) + context.startActivity(launcher) + } + } +}