summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2020-06-21 13:49:56 +0200
committerGitHub <noreply@github.com>2020-06-21 13:49:56 +0200
commit8ce25769d71f3e3748169b32fb9e9776281981c8 (patch)
tree4953ff579ddb67190b5aeee0c95ade526c832c39 /Source/Android/app/src/main/java
parent08c93adde29ace039b422fbbf93f2770c24fb121 (diff)
parent53ccc7a2d109da86f8331a34a83cc1a79871c825 (diff)
Merge pull request #8803 from Ebola16/ANDROID
Android: Android INI section and make platform tab selection an INI setting
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java10
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java5
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java3
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java94
4 files changed, 70 insertions, 42 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
index df0dd985ab..36e38dd203 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
@@ -17,6 +17,7 @@ import java.util.TreeMap;
public class Settings
{
+ public static final String SECTION_INI_ANDROID = "Android";
public static final String SECTION_INI_GENERAL = "General";
public static final String SECTION_INI_CORE = "Core";
public static final String SECTION_INI_INTERFACE = "Interface";
@@ -49,9 +50,10 @@ public class Settings
static
{
configFileSectionsMap.put(SettingsFile.FILE_NAME_DOLPHIN,
- Arrays.asList(SECTION_INI_GENERAL, SECTION_INI_CORE, SECTION_INI_INTERFACE,
- SECTION_INI_DSP,
- SECTION_BINDINGS, SECTION_ANALYTICS, SECTION_DEBUG));
+ Arrays
+ .asList(SECTION_INI_ANDROID, SECTION_INI_GENERAL, SECTION_INI_CORE,
+ SECTION_INI_INTERFACE,
+ SECTION_INI_DSP, SECTION_BINDINGS, SECTION_ANALYTICS, SECTION_DEBUG));
configFileSectionsMap.put(SettingsFile.FILE_NAME_GFX,
Arrays.asList(SECTION_GFX_SETTINGS, SECTION_GFX_ENHANCEMENTS, SECTION_GFX_HACKS,
SECTION_STEREOSCOPY));
@@ -189,7 +191,7 @@ public class Settings
if (modifiedSettings.contains(SettingsFile.KEY_DSP_ENGINE))
{
switch (NativeLibrary
- .GetConfig(SettingsFile.FILE_NAME_DOLPHIN + ".ini", Settings.SECTION_INI_DSP,
+ .GetConfig(SettingsFile.FILE_NAME_DOLPHIN + ".ini", Settings.SECTION_INI_ANDROID,
SettingsFile.KEY_DSP_ENGINE, DSP_HLE))
{
case DSP_HLE:
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
index 161132cf32..235ab28115 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
@@ -284,9 +284,10 @@ public final class SettingsFragmentPresenter
Setting audioStretch = null;
Setting audioVolume = null;
+ SettingSection androidSection = mSettings.getSection(Settings.SECTION_INI_ANDROID);
SettingSection coreSection = mSettings.getSection(Settings.SECTION_INI_CORE);
SettingSection dspSection = mSettings.getSection(Settings.SECTION_INI_DSP);
- dspEmulationEngine = dspSection.getSetting(SettingsFile.KEY_DSP_ENGINE);
+ dspEmulationEngine = androidSection.getSetting(SettingsFile.KEY_DSP_ENGINE);
audioStretch = coreSection.getSetting(SettingsFile.KEY_AUDIO_STRETCH);
audioVolume = dspSection.getSetting(SettingsFile.KEY_AUDIO_VOLUME);
@@ -306,7 +307,7 @@ public final class SettingsFragmentPresenter
}
// DSP Emulation Engine controls two settings.
// DSP Emulation Engine is read by Settings.saveSettings to modify the relevant settings.
- sl.add(new SingleChoiceSetting(SettingsFile.KEY_DSP_ENGINE, Settings.SECTION_INI_DSP,
+ sl.add(new SingleChoiceSetting(SettingsFile.KEY_DSP_ENGINE, Settings.SECTION_INI_ANDROID,
R.string.dsp_emulation_engine, 0, dspEngineEntries, dspEngineValues, 0,
dspEmulationEngine));
sl.add(new CheckBoxSetting(SettingsFile.KEY_AUDIO_STRETCH, Settings.SECTION_INI_CORE,
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
index 47f8aa4ec2..befac57321 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
@@ -39,6 +39,8 @@ public final class SettingsFile
public static final String FILE_NAME_GCPAD = "GCPadNew";
public static final String FILE_NAME_WIIMOTE = "WiimoteNew";
+ public static final String KEY_DSP_ENGINE = "DSPEngine";
+ public static final String KEY_LAST_PLATFORM_TAB = "LastPlatformTab";
public static final String KEY_CPU_CORE = "CPUCore";
public static final String KEY_DUAL_CORE = "CPUThread";
@@ -47,7 +49,6 @@ public final class SettingsFile
public static final String KEY_SPEED_LIMIT = "EmulationSpeed";
public static final String KEY_VIDEO_BACKEND = "GFXBackend";
- public static final String KEY_DSP_ENGINE = "DSPEngine";
public static final String KEY_DSP_HLE = "DSPHLE";
public static final String KEY_DSP_ENABLE_JIT = "EnableJIT";
public static final String KEY_AUDIO_STRETCH = "AudioStretch";
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
index b23806dbf7..c4bbb9799f 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
@@ -4,6 +4,7 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
@@ -16,14 +17,17 @@ import androidx.appcompat.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
-import android.view.View;
import android.widget.Toast;
+import org.dolphinemu.dolphinemu.NativeLibrary;
import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
import org.dolphinemu.dolphinemu.adapters.PlatformPagerAdapter;
+import org.dolphinemu.dolphinemu.features.settings.model.Settings;
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity;
+import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
+import org.dolphinemu.dolphinemu.utils.AfterDirectoryInitializationRunner;
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
import org.dolphinemu.dolphinemu.services.GameFileCacheService;
import org.dolphinemu.dolphinemu.ui.platform.Platform;
@@ -55,8 +59,6 @@ public final class MainActivity extends AppCompatActivity implements MainView
setSupportActionBar(mToolbar);
- mTabLayout.setupWithViewPager(mViewPager);
-
// Set up the FAB.
mFab.setOnClickListener(view -> mPresenter.onFabClick());
@@ -68,16 +70,8 @@ public final class MainActivity extends AppCompatActivity implements MainView
if (PermissionsHandler.hasWriteAccess(this))
{
- PlatformPagerAdapter platformPagerAdapter = new PlatformPagerAdapter(
- getSupportFragmentManager(), this);
- mViewPager.setAdapter(platformPagerAdapter);
- mViewPager.setOffscreenPageLimit(platformPagerAdapter.getCount());
- showGames();
- GameFileCacheService.startLoad(this);
- }
- else
- {
- mViewPager.setVisibility(View.INVISIBLE);
+ new AfterDirectoryInitializationRunner()
+ .run(this, this::setPlatformTabsAndStartGameFileCacheService);
}
}
@@ -203,29 +197,22 @@ public final class MainActivity extends AppCompatActivity implements MainView
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
{
- switch (requestCode)
+ if (requestCode == PermissionsHandler.REQUEST_CODE_WRITE_PERMISSION)
{
- case PermissionsHandler.REQUEST_CODE_WRITE_PERMISSION:
- if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
- {
- DirectoryInitialization.start(this);
- PlatformPagerAdapter platformPagerAdapter = new PlatformPagerAdapter(
- getSupportFragmentManager(), this);
- mViewPager.setAdapter(platformPagerAdapter);
- mViewPager.setOffscreenPageLimit(platformPagerAdapter.getCount());
- mTabLayout.setupWithViewPager(mViewPager);
- mViewPager.setVisibility(View.VISIBLE);
- GameFileCacheService.startLoad(this);
- }
- else
- {
- Toast.makeText(this, R.string.write_permission_needed, Toast.LENGTH_SHORT)
- .show();
- }
- break;
- default:
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- break;
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
+ {
+ DirectoryInitialization.start(this);
+ new AfterDirectoryInitializationRunner()
+ .run(this, this::setPlatformTabsAndStartGameFileCacheService);
+ }
+ else
+ {
+ Toast.makeText(this, R.string.write_permission_needed, Toast.LENGTH_SHORT).show();
+ }
+ }
+ else
+ {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
@@ -260,4 +247,41 @@ public final class MainActivity extends AppCompatActivity implements MainView
return (PlatformGamesView) getSupportFragmentManager().findFragmentByTag(fragmentTag);
}
+
+ // Don't call this before DirectoryInitialization completes.
+ private void setPlatformTabsAndStartGameFileCacheService()
+ {
+ PlatformPagerAdapter platformPagerAdapter = new PlatformPagerAdapter(
+ getSupportFragmentManager(), this);
+ mViewPager.setAdapter(platformPagerAdapter);
+ mViewPager.setOffscreenPageLimit(platformPagerAdapter.getCount());
+ mTabLayout.setupWithViewPager(mViewPager);
+ mTabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager)
+ {
+ @Override
+ public void onTabSelected(@NonNull TabLayout.Tab tab)
+ {
+ super.onTabSelected(tab);
+ NativeLibrary
+ .SetConfig(SettingsFile.FILE_NAME_DOLPHIN + ".ini", Settings.SECTION_INI_ANDROID,
+ SettingsFile.KEY_LAST_PLATFORM_TAB, Integer.toString(tab.getPosition()));
+ }
+ });
+
+ String platformTab = NativeLibrary
+ .GetConfig(SettingsFile.FILE_NAME_DOLPHIN + ".ini", Settings.SECTION_INI_ANDROID,
+ SettingsFile.KEY_LAST_PLATFORM_TAB, "0");
+
+ try
+ {
+ mViewPager.setCurrentItem(Integer.parseInt(platformTab));
+ }
+ catch (NumberFormatException ex)
+ {
+ mViewPager.setCurrentItem(0);
+ }
+
+ showGames();
+ GameFileCacheService.startLoad(this);
+ }
}