Android: Convert RiivolutionBootActivity to Kotlin

This commit is contained in:
Charles Lombardo 2023-03-01 14:38:59 -05:00
parent 79d0ff55d2
commit df21663d4c
2 changed files with 130 additions and 138 deletions

View file

@ -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;
});
}
}

View file

@ -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)
}
}
}