mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-01 10:31:31 +02:00
Android: Convert RiivolutionBootActivity to Kotlin
This commit is contained in:
parent
79d0ff55d2
commit
df21663d4c
@ -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;
|
||||
});
|
||||
}
|
||||
}
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user